91
社区成员
根据要求,我们通过本次实验,需要掌握免杀原理与技术。包括,正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧、通过组合应用各种技术实现恶意代码免杀等。
下面,回答以下几个问题。
(1)杀软是如何检测出恶意代码的?
主要有以下三种方式:
一是利用检测特征码。杀软利用自己的特征库,检索程序代码是否和库中特征码吻合,从而判断某段代码是否属于病毒。
二是利用启发式恶意软件检测。如果程序的特征和行为与病毒程序类似,其匹配程度达到一定值就可认定为病毒程序。
三是基于行为检测。如出现恶意行为,则属于恶意代码。
(2)免杀是做什么?
免杀,从字面意思看,就是免除杀软的“杀”了!也就是让恶意软件不被杀毒软件查杀,从而实现自己的目的。
(3)免杀的基本方法有哪些?
基本方法有如下几点:
一是改变特征码。杀软利用检测特征码来检测恶意代码,那免杀就一定可以通过改变特征码来实现了。在不影响程序功能的情况下,依靠分片等方法尝试找出特征码区域,并对该区域代码进行编码即可。
二是加花。乱花渐欲迷人眼,我们加一下花里胡哨的东西迷惑杀软,让它找不到特征码,就实现了。
三是加壳。就是给含有恶意代码的程序加一个外包装,使其无法进行逆向比对病毒库中的特征码。
等等。
我们尝试用不同编码次数、不同输出格式进行检测。
#### 2.1.1 不同编码次数
使用x86/shikata_ga_nai作为编码器,设置不同的编码次数进行多次迭代,观察免杀效果是否有变化。
2.1.1.1 无编码
如图所示,不进行编码,利用virusTotal进行测试,检测免杀效果。
2.1.1.2 一次编码
如图所示,进行1次编码,利用virusTotal进行测试,检测免杀效果。
2.1.1.3 二十四次编码
分别设置了24次编码、45次编码。
如图所示,进行24次编码,利用virusTotal进行测试,检测免杀效果。
2.1.1.4 四十五次编码
如图所示,进行45次编码,利用virusTotal进行测试,检测免杀效果。
根据我的观察,并没有发现多次编码与免杀效果有什么必然关系,数值基本都偏大。
#### 2.1.2 不同输出格式
payload的命名由“操作系统/运行方式+控制方式+模块具体名称”共同组合而成。我尝试选择不同运行方式下的payload,通过检出率观察免杀效果是否有变化。
如图所示,构造了jar文件、php文件、py文件、apk文件。
利用virusTotal判断,免杀效果如下:
jar:
php:
py:
apk:
这里数据差距就比较大了,可见payload对免杀的效果有影响。依据我的判断,py的免杀效果相对最好,php文件和apk文件差不多,最差的是jar文件。
### 2.2 Veil-Evasion
首先,安装Veil-Evasion工具,这应该是这步骤中最复杂的部分了。根据网上链接的指导,我疯狂安装,来回来去安装了五次才成功,出现了许多未知错误,还要感谢王老师的指导,我在他的办公室安装成功了,哈哈。这点在问题及解决方案中阐述。
我们进入veil工具,使用evasion模块,构造c/meterpreter/rev_tcp.py和python/meterpreter/rev_tcp.py两个payload,并利用virusTotal进行免杀效果测试。
以下是py文件:
以下是c文件:
由此可见,也没什么太大的区别。二者的免杀效果都欠佳。
### 2.3 加壳
#### 2.3.1 压缩壳
我们利用upx,给文件进行压缩,并利用virusTotal进行免杀效果测试。
看数值,好像有效果,但不多。
#### 2.3.2 加密壳
我们利用Hyperion对文件进行加密,并利用virusTotal进行免杀效果测试。
同样,有效果,但不多。
### 2.4 C + shellcode编程
利用msfvenom生成一个shellcode,然后利用它编写c程序,编译后利用virusTotal进行免杀效果测试。
如图,生成了shellcode。
编写了程序:
利用virusTotal,这次相较于之前的,免杀效果很不错!
把处理后的文件输出为raw格式,再将第一步的输出结果作为输入传递给msfvenom。
异或一次,就类似于一次加密。我们可以把shellcode进行异或,把结果作为新的shellcode,最后再异或回来。
利用该程序对shellcode数组进行异或:
得到如下结果:
最后编写c程序:
编译后的文件经过virusTotal免杀测试,效果还是比较好的。
把它放在我的windows主机上,没有被金山毒霸查杀。
但是被windows defender发现了。
由此可见,金山毒霸水平不怎么高。
### 2.5.3 C+shellcode+异或+加密壳
把编译出的文件加一个加密壳。
用virusTotal查一下,反而效果不好了,好离谱。
### 2.5.4 C+shellcode+异或+加密壳+压缩壳
再在之前的基础上加一个压缩壳:
用virusTotal查一下,效果还是不咋好。
### 2.6 用另一电脑实测,在杀软开启的情况下,可运行并回连成功
我用自己的windows主机,作为另一台电脑。这里,我根据马同学的思路进行实验。
在Veil-Evasion中选择cs/shellcode_inject/virtual.py。输入generate,进行参数配置。
将其发送到windows主机上,没有被发现。
最后,在kali上开启监听,在windows上点击此文件,实现了在杀软开启的情况下运行并回连,kali主机可以调用windows的命令。
至此,本次实验圆满成功。
## 3.问题及解决方案
问题:安装Veil-Evasion工具的问题。在安装veil-evasion的过程中,我报了七八个错。这时候,我利用apt-get
pdate更新了一下源,然后再将之前的veil卸载,重新安装。但是到了最后一步,还是报各种各样的错,我重新安装了四次,不好使。
解决办法:在老师的帮助和指导下,我解决了最后一个问题:
解决办法就是执行如下命令: /usr/share/veil/config/setup.sh --force --silent,等待过后,得以解决此问题。
此后实验很顺。
## 4.学习感悟、思考等
本次实验是第三次实验了,在本次实验中,我接触了许多免杀工具,实现了恶意代码免杀,最终还实现了在杀软开启的情况下,可运行并回连成功。对此我收益良多