1 SysWhispers4 解析
1.1 SSN 解析方法
| 选项 | 原理 | 抗 Hook 能力 | 备注 |
|---|---|---|---|
| static | 编译时嵌入 j00ru 表 | ❌ 无运行时解析 | 最简单,但 SSN 会随系统更新过时 |
| freshycalls | 按 VA 排序 ntdll 导出 → 序号即 SSN | ✅ 较强(默认选项) | 不读指令字节,hook 不影响 |
| hells_gate | 读 ntdll stub 字节提取 SSN | ❌ 被 hook 即失败 | 最弱,仅适合无 hook 环境 |
| halos_gate | Hell’s Gate + 邻居扫描 | ⚠️ 中等 | 可绕过单条 hook,但遇远跳失效 |
| tartarus | Halo’s Gate + 处理 E9/FF25 远跳 | ✅ 较强 | Hell’s Gate 系的终极形态 |
| from_disk | 从 加载干净 ntdll | ✅✅ 很强 | SSN 来源完全干净 |
| recycled | FreshyCalls + 操作码交叉验证 | ✅✅✅ 最强 | 兼具排序和验证,最抗干扰 |
| hw_breakpoint | 硬件断点 + VEH 拦截提取 SSN | ✅ 较强 | 高级但复杂,依赖调试寄存器 |
1.2 系统调用执行方式
| 选项 | 行为 | 隐蔽性 | 备注 |
|---|---|---|---|
| embedded | stub 内直接 syscall |
❌ 最低 | RIP 指向你自己的代码,特征明显 |
| indirect | 跳转到 ntdll 内 syscall;ret gadget |
✅ 较好 | RIP 落在 ntdll 范围内 |
| randomized | 每次调用随机选一个 gadget | ✅✅ 很好 | 抗 RIP 行为分析 |
| egg | 运行时替换 8 字节 egg 标记为 syscall;ret |
✅✅ 很好 | 二进制中无静态 syscall 字节 |
1.3 其他多选
| 选项 | 功能 | 搭配注意 |
|---|---|---|
--obfuscate |
打乱 stub 顺序 + 插入垃圾指令 | ✅ 万能搭配 |
--encrypt-ssn |
静态 XOR 加密 SSN 表 | ⚠️ 与 static 解析搭配意义减半(SSN 本身就是编译时常量,加密仅增加一层混淆) |
--stack-spoof |
伪造调用栈帧 | ⚠️ 仅对 indirect/randomized 有意义,对 embedded/egg 无效 |
--etw-bypass |
补丁 EtwEventWrite |
✅ 独立功能 |
--amsi-bypass |
补丁 AmsiScanBuffer |
✅ 独立功能 |
--unhook-ntdll |
重映射干净 ntdll .text 段 |
⚠️ 与 from_disk 有功能重叠:from_disk 已经从干净 ntdll 读 SSN,但 unhook 还会让运行中的 ntdll 变干净(对 indirect/randomized 方法有用)。不冲突但可能冗余 |
--anti-debug |
反调试检测 | ✅ 独立功能 |
--sleep-encrypt |
Ekko 风格休眠时加密 .text |
⚠️ 与 unhook-ntdll 可能冲突:两者都操作 ntdll 内存区域,执行时序需注意 |