免杀原理与实践实验报告
学号 20242423 姓名:罗靖林 整理日期 2026年10月26日
一 实验简介
本次实验比较不同文件表达形式在 Windows Defender 下的检测和运行结果,涉及 MSF 编码器、JAR 文件、UPX 加壳、自编译 C 样本、组合处理与 Veil。实验中,未编码及两种编码次数的 EXE 均触发检测;C 样本曾建立会话,但会话随后关闭,复测时运行受到阻止;Veil 样本在本机测试中建立了会话,并在任务管理器中留下运行记录。另一台电脑上的验证未完成。
实验的学习目标是理解静态检测、运行时监控、云端判定与信誉提示的区别,并依据文件下载、运行、会话和处置记录评价测试结果。报告将“未立即出现告警”“建立一次会话”和“长期与防护软件共存”视为不同结论。
实验环境
项目 | 配置或记录值 |
|---|---|
实验机 | Kali Linux 2026.2,VMware 虚拟机,主机名 luojinglin |
Windows 测试机 | 本机 Windows 11 x64,主机名 loujinlan;会话工具识别为 Windows 11 24H2+,Build 26300 |
网络 | VMware VMnet1,仅主机网络,192.168.226.0/24 |
Kali 地址 | 192.168.226.128/24 |
Windows VMnet1 地址 | 192.168.226.1/24 |
防护软件 | Windows Defender,基线记录为 Normal 模式、杀毒与实时保护均开启 |
防护版本 | 产品 4.18.26090.9;引擎 1.1.26090.9;病毒库 1.461.192.0 |
主要工具 | Metasploit Framework、mingw-w64、UPX 4.2.4、Veil 3.1.14 |
文件传输 | Kali 临时 HTTP 服务,Windows 浏览器访问并下载 |
系统版本按图21中的工具识别结果记录,未据此推定 Windows 的正式发行分支。防护版本来自基线快照,后续更新情况没有逐次记录。
二 基础知识
检测对象与运行条件
AV 是 Anti-Virus 的缩写,即防病毒软件。现代防护软件会结合文件内容、运行行为和信誉等信息进行判断。文件能够保存到磁盘,只能说明该环节没有观察到阻止,不能单独证明运行时不会被检测。
Shell 是接收并执行命令的程序;shellcode 通常指一段完成特定任务的机器指令,两者并非同一种文件或语言。载荷是否可以执行,还受操作系统、处理器架构、运行环境和网络条件影响。JAR 与 Windows PE 可执行文件的运行条件不同,因此二者的下载或扫描结果不能直接等同于功能验证。
编码与加壳
编码器改变数据的表示形式。Rapid7 官方说明,Metasploit 编码器的主要用途是处理利用过程中的坏字符,并不保证规避杀软检测。[2] 因此,增加编码次数不等于提高免杀成功率,也不能仅凭相同威胁名称断定命中了完全相同的字节特征。
加壳会改变可执行文件的存储形式。UPX 的主要功能是压缩可执行文件;成功压缩与能否通过防护检测是两个独立指标。[6] 程序经过重新编译或表示变换后,仍然可能在执行阶段触发检测。
防护层次与证据
Defender 的行为监控会观察进程、文件系统及其他系统活动;云保护则与本地防护协同更新判断。[3][4] SmartScreen 主要涉及下载和应用信誉,“未知发布者”或“不常下载”提示应与明确的恶意软件检测记录区分。[5]
判定具体拦截机制需要对应的事件、时间、文件身份与处置记录。进程退出、下载列表显示“已删除”,或者保护历史中暂未找到条目,都不足以单独证明行为检测或云端处置。
三 实验方案
实验先记录网络与防护状态,再以 EICAR 建立检测基线,随后对不同样本形式进行比较。对照项包括未编码 EXE、不同编码次数的 EXE、JAR、自编译 C 样本、加壳与组合样本,以及 Veil 样本。
每项测试分别观察下载提示、文件是否保存、进程能否启动、会话是否建立和后续是否出现处置。人工允许后的运行结果单独记录,避免把改变信任条件后的回连计为默认防护条件下的免杀成功。实验以本机与 Kali 的虚拟网络为范围,没有取得另一台电脑的实测数据。
四 实验过程与分析
环境连通性
Windows 在基线阶段访问 Kali 的 HTTP 测试服务,得到状态码 200 和正文 LAB-OK,说明当时 Windows 可以通过指定地址和端口访问 Kali。该结果验证了这条通信路径,并不代表所有端口、所有方向或整个实验期间都持续连通。
图22 任务管理器中的 Veil 样本进程
原始实验记录说明测试期间实时保护保持开启,但现有共生截图没有与同一时刻的完整防护状态同屏记录,持续观察时长也未量化。前面还存在人工允许威胁的操作,而后续信任条件未逐项留存。因此,本项可记为“按实验记录,在本机防护开启条件下观察到成功回连及进程存活”,不能进一步宣称已证明长期共生、所有检测层均被绕过,或者对其他电脑同样有效。
Veil 的自动化处理会改变生成程序的表达与组织形式。可以从原理层面讨论这种变化对静态识别的影响,但本实验没有逐个隔离各项变化的贡献,不能证明具体哪种代码变化直接造成了未被即时阻止。
五 实验问题回答
杀软是如何检测出恶意代码的
杀软通常综合多类信息。静态分析检查文件中的内容、结构和已知特征;启发式与机器学习对可疑特征进行综合判断;行为监控观察程序运行时的系统活动;云保护把本地分析与云端数据和更新结合起来。[3][4] 浏览器及 SmartScreen 还会给出下载和应用信誉提示。[5]
本实验中,下载临时文件触发威胁记录,是下载阶段产生检测的直接证据;EICAR 的隔离记录是标准测试响应的证据。不同检测名称或延后拦截说明前后判定结果有变化,但没有足够证据确定它们分别由哪个检测层触发。明确检测机制需要与样本对应的事件日志和时间记录。
免杀是做什么
免杀通常指程序保持原有功能的同时,尝试避免被防护软件检测或阻止。评价时需要明确文件、运行环境、防护设置、观察阶段与时间范围。“下载未被删除”“一次运行成功”“建立会话”和“持续运行”各自回答不同的问题。
本实验不能把人工允许后的回连计作默认防护条件下的免杀,也不能把 JAR 未见告警但没有运行验证的情况计为功能成功。Veil 和 C 样本的结果则应保留本机测试、观察时间和后续复测的限制。
免杀的基本方法有哪些
从原理分类,常见研究方向包括改变文件内容或结构的表示形式,例如编码、压缩、重新编译及不同封装;以及研究程序运行表现与防护监控之间的关系。它们分别影响不同的检测对象,文件形式变化不能保证运行阶段也得到相同结果。
本实验涉及编码器、格式变化、UPX、自编译样本和组合处理。对照结果表明,处理步骤叠加与防护未能识别之间不存在自动成立的关系。将文件加入允许列表、关闭防护或设置排除项会改变实验条件,不属于在原有防护条件下验证成功。
六 实验结果汇总
测试对象 | 下载或检测现象 | 运行与会话结果 | 本次判定 |
|---|---|---|---|
原始 EXE | 下载阶段触发检测 | 人工允许后建立会话 | 不计默认防护条件下的免杀 |
编码5次 EXE | 下载阶段触发检测 | 没有取得成功运行记录 | 未达到目标 |
编码20次 EXE | 下载阶段触发检测 | 没有取得成功运行记录 | 未达到目标 |
JAR | 曾有下载记录 后续列表显示已删除 | 未完成 Java 环境下的运行验证 | 功能验证未完成 |
原始 EXE 加壳 | UPX 返回节区错误 | 未取得成功加壳产物 | 加壳失败 |
C 样本首次测试 | 记录中完成下载并运行 | 两次会话建立后关闭 | 短暂回连 |
C 样本后续复测 | 运行被系统阻止 | 未取得新的成功会话 | 复测未通过 |
组合样本及其加壳版 | 有保存及信誉提示记录 | 据记录启动后退出 未取得会话 | 未达到目标 原因未确定 |
组合后续版本 | 浏览器显示下载错误 | 无会话结果 | 传输或检测原因未确定 |
Veil 样本 | 下载完成 未观察到即时阻止 | 会话建立 并有进程存活截图 | 本机观察期间取得功能结果 |
另一台电脑 | 没有实测数据 | 未验证 | 未完成 |
需要保留的实验限制包括:样本缺少完整哈希记录,个别生成名与运行名存在差异;跨系统日志时区未统一;未连续记录防护状态、允许项和排除项;进程观察时长未量化。这些限制使结果适合描述本次观察,不适合推断长期检出率或不同厂商之间的优劣。
七 实验感想
这次实验让我改变了“编码次数越多越不容易被检测”的想法。未编码、编码5次和20次的 EXE 都在下载阶段触发了检测。查阅编码器的设计用途后,我认识到,工具提供某个参数,并不代表这个参数能够实现自己预想的效果。
另一个收获是学会把观察到的现象和原因分开。C 样本建立过会话,随后会话关闭;组合样本没有取得会话结果。这些现象可以如实记录,但如果没有进程退出信息和防护事件,就不能直接写成“被行为检测杀掉”。同样,下载列表里的“已删除”也不能直接证明是云端处置。报告中明确不知道的部分,比补上一个听起来合理的原因更有价值。
环境排查也占用了不少时间。仅主机网络能够支持 Windows 与 Kali 的本地通信,但软件安装还需要外网;HTTP 端口占用、服务是否仍在运行以及访问地址变化,都可能影响测试。网络和服务状态应当与样本测试分别确认,否则容易把传输问题误判为程序或杀软问题。
本次最明显的不足是没有完成另一台电脑实测,也没有把样本哈希、统一时间和防护状态完整关联起来。Veil 的会话与进程截图提供了本机结果,但不能替代跨机验证。以后整理实验时,我会更重视证据的对应关系,让文件身份、运行结果与处置记录能够相互印证。
八 参考资料
[1] EICAR Download Anti Malware Testfile,访问日期2026年10月26日。
[2] Rapid7 Encoded Payloads Do Not Bypass Anti virus,访问日期2026年10月26日。
[3] Microsoft Learn Behavior monitoring in Microsoft Defender Antivirus,访问日期2026年10月26日。
[4] Microsoft Learn Cloud protection and Microsoft Defender Antivirus,访问日期2026年10月26日。
[5] Microsoft Learn Microsoft Defender SmartScreen overview,访问日期2026年10月26日。
[6] UPX 官方项目说明,访问日期2026年10月26日。
[7] Kali Linux Tools Veil 软件包说明,访问日期2026年10月26日。