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 交叉编译环境

安装 Windows 交叉编译环境

 

2.安装UPX压缩壳工具,用于后续加壳混淆测试。

安装 UPX 压缩壳

安装 UPX 压缩壳

 

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

安装 Hyperion 加密壳
安装 Hyperion 加密壳

 

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

安装 Veil-Evasion 免杀框架
安装 Veil-Evasion 免杀框架

 

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

377990c4aaee5721dbfb9b87463f31df
验证 Metasploit 正常

 

3.3 基准 Payload 构建与检测

为量化免杀效果,先生成无任何免杀处理的原始Payload作为基准对照组:

1.使用msfvenom生成原始无编码的Windows反向TCPPayload,输出为20242414_raw.exe,Shellcode大小355字节,最终exe文件7168字节。

原始基准 Payload 生成成功

原始基准 Payload 生成成功

 

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

基准文件 VirScan 检测结果

基准文件 VirScan 检测结果

 

3.4 msfvenom编码器与多格式Payload测试

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

单次编码 exe 生成结果

单次编码 exe 生成结果

 

单次编码 exe 的 VirScan 检测结果

单次编码 exe 的 VirScan 检测结果

 

10 次编码 exe 生成结果

十次编码 exe 生成结果

 

十次编码 exe 的 VirScan 检测结果

十次编码 exe 的 VirScan 检测结果

 

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

jar 格式 Payload 生成结果

jar 格式 Payload 生成结果

 

php 格式 Payload 生成结果

php格式Payload生成结果

 

3.5 Veil-Evasion免杀工具使用

1.启动Veil并进入Evasion免杀模块,查看所有可用Payload列表。

Veil 免杀模块 Payload 列表

Veil 免杀模块 Payload 列表

 

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

Veil 生成 Payload 配置界面

Veil生成Payload 配置界面

 

Veil 生成文件验证

Veil生成文件验证

 

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

Veil 产物 VirScan 检测结果

Veil产物VirScan检测结果

 

3.6 C语言调用Shellcode编程实现

1.使用msfvenom生成C格式的原始Shellcode,输出为20242414_shellcode.c,得到字节数组形式的恶意代码。

C 格式 shellcode 生成结果

C格式shellcode生成结果

 

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

C 语言加载器代码界面

C语言加载器代码界面

 

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

C 程序编译成功

C程序编译成功

 

C+Shellcode 产物 VirScan 检测结果

C+Shellcode产物VirScan检测结果

 

3.7 加壳技术测试

在自定义C加载器的基础上,分别测试压缩壳与加密壳的免杀效果:

1.UPX压缩壳:使用最高压缩等级对20242414_c_shellcode.exe加壳,输出20242414_upx.exe。加壳后文件体积大幅减小,PE结构被重新封装,可破坏部分静态特征。

UPX 加壳完成界面

UPX加壳完成界面

 

UPX 加壳后 VirScan 检测结果

UPX加壳后VirScan检测结果

 

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

Hyperion 加密过程界面

Hyperion加密过程界面

 

Hyperion 加密后 VirScan 检测结果

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 检测结果

组合方案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 监听

Kali端开启MSF监听

 

4.回连验证

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

7fc1b2b1091971fde4b9d333bb5b9a13

Meterpreter会话建立与系统信息验证

 

四、问题及解决方案

问题1:VirScan平台所有文件都上传失败,提示校验失败

原因:平台服务器接口不稳定,属于服务端故障。

解决:更换网络并等待一段时间后再进行实验。

8a407b00b48c6c2d6721fb293670afd9

 

问题2:Payload拖进Windows文件夹后立刻消失

原因:Defender实时保护生效,原始Payload特征明显,写入磁盘瞬间就被查杀隔离。

解决:将实验文件夹添加到杀软排除项,静态测试用自定义扫描功能单独检测。

 

问题3:双击运行程序弹窗提示包含病毒,无法执行

原因:Defender动态行为检测拦截,程序反向外联的行为被判定为恶意。

解决:在杀软保护历史记录中将文件设为允许,或添加文件夹排除项。

3dbdeb72d39dd58858e873d32ef11e21

 

五、学习感悟、思考

这次免杀实验做下来,最直观的感受是真实攻防的对抗性比课本上讲的强太多。最开始以为给 payload 编个码、加个壳就能轻松绕过杀毒软件,结果原生 msf 生成的文件刚拖进电脑就被秒删,哪怕叠了编码、自定义加载器、加壳三层,还是被 Defender 查了出来。

整个实验踩了不少细碎的坑:Veil 里不能敲系统命令、传文件总被拦截、加了排除项运行时还是被拦,一点点排查下来,也搞懂了杀软从文件写入到程序运行的全流程防护逻辑。反过来也明白,只靠一款杀毒软件根本防不住所有威胁,终端安全必须靠多层防护叠起来才有用。

学免杀不是为了搞破坏,更多是站在攻击者的视角搞明白威胁到底是怎么回事,以后做防御才能对症下药。这次实验只是入门,还有进程注入、无文件攻击这些更深的免杀技术,后面值得继续深入研究。

 

参考资料

[1] 网络攻防技术实验指导书.

https://gitee.com/wildlinux/NetSec

[2] Metasploit官方技术文档.

https://docs.metasploit.com/

[3] Veil-Framework官方项目仓库.

https://github.com/Veil-Framework/Veil

[4] Microsoft Defender防病毒技术文档.

https://learn.microsoft.com/zh-cn/microsoft-365/security/defender-endpoint/microsoft-defender-antivirus

[5] 恶意代码免杀技术原理与实践.

https://www.cnblogs.com/zjhzbyc/p/19153096

posted @ 2026-10-26 19:58  狼炎  阅读(5)  评论(0)    收藏  举报