9. 木马免杀
9.1 EDR实战环境搭建
| EDR | 方法 |
|---|---|
| 趋势 | 卡饭教程 / TrendMicroDSAExfil(奇安信零信任有同样问题) |
| 赛门铁克 | 卡饭教程 |
| MDE | 官方购买安装(改系统区域) |
| 通用 | 卡饭论坛下载教程 / 咸鱼市场 |
安装顺序: 先服务端再客户端 → 上线后给虚拟机打镜像 → 测免杀先断网 → 联网样本需去调试信息及符号表
9.2 白驱动致盲EDR
开发环境: WDK → 先SDK再WDK → 缓解143系列 → 出现wdm成功
Kill用户态Process: 终端下线 → ZwTerminateProcess → blackout(CLIENT_ID结构)
禁用EDR回调: | 回调 | 作用 | 禁用方法 | |------|------|---------| | ObRegisterCallbacks | 进程/线程句柄操作(PsProcessType/PsThreadType) | CallbackList → PreOperation/PostOperation = 0 | | CmRegisterCallback | 注册表访问/修改 | CallbackListHead → PEX_CALLBACK_FUNCTION → 改为双向链表已存在地址(PG保护会蓝屏) | | MiniFilter | 文件创建/修改/删除 | volume → FLT_VOLUMES → _CALLBACK_NODE → 替换为系统驱动结构地址 | | PsSetCreateProcessNotifyRoutine | 进程创建/销毁 | EX_CALLBACK_ROUTINE_BLOCK.Function | | PsSetCreateThreadNotifyRoutine | 线程创建/销毁 | 同上 | | PsSetLoadImageNotifyRoutine | Image加载(EXE/DLL/驱动) | 同上 |
参考: ReactOS
LOLDrivers: loldrivers.io
内核Fuzz工具: ioctlfuzzer(打开核心内存转储) / ioctlbf / kDriver-Fuzzer / DIBF / kAFL / IoctlHunter / msFuzz / ioctlance
BYOVD利用: payson-ioctl-cheat-driver / BYOVDKit / BYOVD
9.3 加密混淆免杀
静态查杀 vs 免杀
| 查杀方式 | 检测内容 | 免杀方法 |
|---|---|---|
| 特征码 | hash/文件名/函数名/敏感字符串/API / PE头/导入导出/TLS/节区/shellcode特征 | 分段 / 加解密(AES/RSA/古典密码) / 编码(XOR/Base64/UUID/MAC/IP/注册表键值/剪切板) |
| 云查杀 | - | 断网编译去调试信息 |
| 启发式 | 机器学习/YARA | 变量名混淆(pyob) / 控制流混淆 / 修改无影响shellcode特征(CS一字节干掉YARA) |
| - | - | 序列化(Protobuf/Pickle) / 将shellcode当字符串处理 / 分离加载(文件/URL) |
动态加载API:
Level 1: LoadLibrary + GetProcAddress
Level 2: fs→TEB→PEB→kernel32.dll→LoadLibrary+GetProcAddress
Level 3: SSN→Syscall
- SSN表: https://j00ru.vexillium.org/syscalls/nt/64/
- 工具: [SysWhispers3](https://github.com/klezVirus/SysWhispers3) / [HellBunny](https://github.com/voidvxwt/HellBunny)
内存加载器:
申请: VirtualProtect / VirtualAlloc / AllocADsMem / ReallocADsMem / HeapCreate
写入: RtlMoveMemory / RtlCopyMemory
执行: EnumSystemLocalesA / CreateThread / WaitForSingleObject
工具: [ZigStrike](https://github.com/0xsp-SRD/ZigStrike)
函数替换: http://ropgadget.com/posts/abusing_win_functions.html
加载器内部执行: 容易规避杀软检测
动态查杀 vs 免杀
反沙箱: 开机时间 / 物理内存 / CPU个数 / Temp文件数 / 随机字符串服务器校验 / USB记录 / 样本名称 / 硬盘大小 / 能否联网 / 能否使用命名管道
注入技术:
| 技术 | 说明 |
|------|------|
| 动态内存加载 | inline hook sleep(自定义sleep逻辑) / CreateTimerQueueTimer |
| 远程线程注入 | CreateRemoteThread → OpenProcess+VirtualAllocEx+WriteProcessMemory |
| APC注入 | APC+间接系统调用+模块踩踏 / QueueUserApc / Early Bird |
| DLL劫持 | WinSxS DLL劫持 / Microsoft组件劫持(OneDrive) / DLL劫持自动化脚本 |
| 回调 | EnumChildWindows / AlternativeShellcodeExec |
| LLVM混淆 | Arkari |
| 打断进程链 | 3环: ldte→InInitializationOrderModuleList / 0环: PsActiveProcessHead→Eprocess |
| 注入其他进程 | 被杀不死加载器 |
| 内核注入 | Step Bear - EDR Storm-0978 |
流量查杀 vs 免杀
| 查杀方向 | 检测内容 |
|---|---|
| 流量特征 | 固定通信协议加密字段(CS: RSA传AES密钥→AES加密通信) |
| 内容特征 | data字段命令关键词加密特征 |
| 结构特征 | 固定字段特征 |
| IP | C2服务器IP |