免杀原理与实践实验报告

 学号 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日。