20242414 2026-2027-1 《网络与系统攻防技术》实验三实验报告
20242414 2026-2027-1 《网络与系统攻防技术》实验三实验报告
一.基础知识
1.1杀软检测恶意代码的原理
杀毒软件主要通过四层机制检测恶意代码:
1.特征码检测:匹配已知恶意程序的二进制特征片段,准确率高,是最主流的静态检测方式,但无法识别新型病毒。
2.启发式检测:根据代码逻辑、指令规律判断风险,可检测部分未知恶意程序。
3.行为检测:监控程序运行时的文件修改、注册表操作、网络外联等行为,通过行为特征判定风险,属于动态防御。
4.云查杀:上传文件特征到云端,依托全网威胁情报库进行比对判定。
1.2免杀的定义
免杀即反病毒规避,指在保留恶意代码功能的前提下,修改其文件形态、执行逻辑与行为特征,绕过杀毒软件的检测机制,在目标系统正常运行。分为静态免杀和动态免杀两个方向。
1.3免杀的基本方法
1.编码混淆:用多态编码器加密shellcode,运行时解密执行,破坏原始特征。
2.加壳保护:通过压缩壳、加密壳封装程序,隐藏原始代码与PE结构特征。
3.自定义加载器:自行用C/Go等语言编写shellcode加载逻辑,摆脱工具模板特征。
4.代码加密:对核心代码对称加密,仅在内存中解密执行,避免磁盘明文特征。
5.进程注入:将恶意代码注入合法进程运行,隐藏执行主体。
6.无文件攻击:全程在内存中执行,不落地磁盘,规避文件扫描。
二.实验内容
(1)掌握基础免杀工具使用:练习msfvenom编码器、Veil-Evasion免杀框架,完成C语言+Shellcode的自定义加载器编程,生成多格式Payload。
(2)组合免杀技术实践:叠加编码混淆、自定义加载器、UPX加壳三种技术,实现具备静态免杀能力的恶意程序。
(3)真实环境验证:在搭载Microsoft Defender的Windows 11靶机中,测试免杀程序的静态查杀结果,验证程序可正常运行并成功回连攻击机。
三.实验过程
3.1 实验环境
攻击机:Kali Linux 2026.2,主机名zhoushengxiang,IP 地址192.168.36.130
靶机:Windows 11 24H2+(x64),搭载系统自带 Microsoft Defender 防病毒
工具集:Metasploit Framework、msfvenom、Veil-Evasion 3.1、mingw-w64 交叉编译器、UPX 3.91、Hyperion 加密壳
3.2 实验环境配置与工具安装
实验开始前完成所有依赖工具的安装与环境验证:
1.更新软件源,安装32/64位Windows交叉编译环境gcc-mingw-w64,用于将C代码编译为Windows可执行文件。

安装 Windows 交叉编译环境
2.安装UPX压缩壳工具,用于后续加壳混淆测试。

安装 UPX 压缩壳
3.通过系统源安装Hyperion加密壳工具,工具路径为/usr/share/windows-resources/hyperion/。

4.安装Veil-Evasion免杀框架并完成依赖初始化,配置Wine运行环境。

5.验证Metasploit工具可用,确认msfvenom功能正常。

3.3 基准 Payload 构建与检测
为量化免杀效果,先生成无任何免杀处理的原始Payload作为基准对照组:
1.使用msfvenom生成原始无编码的Windows反向TCPPayload,输出为20242414_raw.exe,Shellcode大小355字节,最终exe文件7168字节。

原始基准 Payload 生成成功
2.将原始文件上传VirScan多引擎检测平台,获取基准检出率;同时在本地靶机测试,确认原始Payload落地即被杀毒软件识别删除,验证其极强的特征辨识度。

基准文件 VirScan 检测结果
3.4 msfvenom编码器与多格式Payload测试
1.编码迭代对比测试:分别使用shikata_ga_nai编码器进行1次迭代、10次迭代,生成20242414_encode1.exe与20242414_encode10.exe。测试发现编码迭代次数增加会提升Shellcode长度,一定程度破坏原始特征,但对主流杀毒软件免杀提升有限。

单次编码 exe 生成结果

单次编码 exe 的 VirScan 检测结果

十次编码 exe 生成结果

十次编码 exe 的 VirScan 检测结果
2.多格式Payload生成:除exe格式外,分别生成jar格式JavaPayload、php格式脚本Payload,验证msfvenom的多载体生成能力,对比不同文件格式的检出率差异。

jar 格式 Payload 生成结果

php格式Payload生成结果
3.5 Veil-Evasion免杀工具使用
1.启动Veil并进入Evasion免杀模块,查看所有可用Payload列表。

Veil 免杀模块 Payload 列表
2.选择C语言编写的反向TCPPayload,配置攻击机IP为192.168.36.130、端口为2414,生成输出文件命名为20242414_veil.exe。

Veil生成Payload 配置界面

Veil生成文件验证
3.生成的可执行文件默认保存在/var/lib/veil/output/compiled/路径下,将文件拷贝到本地进行免杀效果检测。Veil生成的程序因采用自定义编译模板,相比原生msfvenom免杀效果更优。

Veil产物VirScan检测结果
3.6 C语言调用Shellcode编程实现
1.使用msfvenom生成C格式的原始Shellcode,输出为20242414_shellcode.c,得到字节数组形式的恶意代码。

C格式shellcode生成结果
2.编写C语言加载器20242414_c_loader.c,通过VirtualAlloc分配可执行内存、memcpy拷贝Shellcode、函数指针跳转执行的逻辑,实现自定义的Shellcode加载。

C语言加载器代码界面
3.使用32位mingw交叉编译器将代码编译为Windows可执行文件20242414_c_shellcode.exe,并进行免杀效果检测。自定义加载器可有效摆脱Metasploit的PE文件特征。

C程序编译成功

C+Shellcode产物VirScan检测结果
3.7 加壳技术测试
在自定义C加载器的基础上,分别测试压缩壳与加密壳的免杀效果:
1.UPX压缩壳:使用最高压缩等级对20242414_c_shellcode.exe加壳,输出20242414_upx.exe。加壳后文件体积大幅减小,PE结构被重新封装,可破坏部分静态特征。

UPX加壳完成界面

UPX加壳后VirScan检测结果
2.Hyperion加密壳:将待加密文件复制到Hyperion工作目录,通过Wine运行加密程序,对PE文件进行运行时解密加密。加密壳免杀理论效果优于压缩壳,但壳自身特征也会被部分杀毒软件标记。

Hyperion加密过程界面

Hyperion加密后VirScan检测结果
3.8 组合技术免杀方案实现
采用「10次shikata_ga_nai编码+C语言自定义加载器+UPX压缩壳」的三层组合方案,实现静态免杀能力叠加:
1.生成经过10次编码的C格式Shellcode,破坏原始恶意特征码。
2.将编码后的Shellcode替换到自定义C加载器中,编译生成基础程序20242414_multi_raw.exe。
3.使用UPX对程序进行最高级压缩加壳,最终生成免杀程序20242414_evasion_final.exe。

组合免杀程序最终生成界面
4.免杀原理:通过多态编码消除原始Shellcode特征,自定义加载器规避通用工具模板特征,压缩壳进一步混淆PE文件结构,三层技术共同作用提升免杀能力。

组合方案VirScan检测结果
3.9 杀毒软件环境测试与回连验证
1.杀毒软件版本确认:
靶机使用Windows11系统自带的Microsoft Defender防病毒,版本信息如下:
反恶意软件客户端版本:4.18.26090.9
引擎版本:1.1.26090.9
防病毒软件版本:1.461.209.0
病毒库更新至最新状态

杀毒软件版本
2.静态扫描测试
将最终免杀程序拷贝至靶机,使用Microsoft Defender进行自定义扫描,扫描结果检测出威胁Trojan:Win32/Meterpreter.RPZ!MTB,说明基础组合免杀方案可绕过部分简单特征检测,但无法完全规避微软官方杀毒软件的多层特征与启发式检测。

本地杀软静态扫描结果
3.MSF监听配置
攻击机启动Metasploit,配置multi/handler监听器,设置对应Payload与监听端口2414,启动反向TCP监听。

Kali端开启MSF监听
4.回连验证
将实验文件夹添加至Defender排除项,保持杀毒软件实时防护开启,运行免杀程序。攻击机成功接收到Meterpreter会话,执行sysinfo命令确认靶机系统为Windows 11 24H2+,程序功能完整,反向连接建立成功。

Meterpreter会话建立与系统信息验证
四、问题及解决方案
问题1:VirScan平台所有文件都上传失败,提示校验失败
原因:平台服务器接口不稳定,属于服务端故障。
解决:更换网络并等待一段时间后再进行实验。

问题2:Payload拖进Windows文件夹后立刻消失
原因:Defender实时保护生效,原始Payload特征明显,写入磁盘瞬间就被查杀隔离。
解决:将实验文件夹添加到杀软排除项,静态测试用自定义扫描功能单独检测。
问题3:双击运行程序弹窗提示包含病毒,无法执行
原因:Defender动态行为检测拦截,程序反向外联的行为被判定为恶意。
解决:在杀软保护历史记录中将文件设为允许,或添加文件夹排除项。

五、学习感悟、思考
这次免杀实验做下来,最直观的感受是真实攻防的对抗性比课本上讲的强太多。最开始以为给 payload 编个码、加个壳就能轻松绕过杀毒软件,结果原生 msf 生成的文件刚拖进电脑就被秒删,哪怕叠了编码、自定义加载器、加壳三层,还是被 Defender 查了出来。
整个实验踩了不少细碎的坑:Veil 里不能敲系统命令、传文件总被拦截、加了排除项运行时还是被拦,一点点排查下来,也搞懂了杀软从文件写入到程序运行的全流程防护逻辑。反过来也明白,只靠一款杀毒软件根本防不住所有威胁,终端安全必须靠多层防护叠起来才有用。
学免杀不是为了搞破坏,更多是站在攻击者的视角搞明白威胁到底是怎么回事,以后做防御才能对症下药。这次实验只是入门,还有进程注入、无文件攻击这些更深的免杀技术,后面值得继续深入研究。
参考资料
[1] 网络攻防技术实验指导书.
https://gitee.com/wildlinux/NetSec
[2] Metasploit官方技术文档.
[3] Veil-Framework官方项目仓库.
https://github.com/Veil-Framework/Veil
[4] Microsoft Defender防病毒技术文档.
[5] 恶意代码免杀技术原理与实践.

浙公网安备 33010602011771号