文章总结: 本文深度解析Crystal-Kit工具,其通过IATHook与PICO替代CobaltStrike的Sleepmask和BeaconGate,解决了原方案不支持postexDLL及API白名单受限的痛点,实现全场景运行时免杀。文章剖析了其核心架构及CrystalMask在内存加密与解耦上的演进。红队需禁用内置原语并加载脚本进行部署;蓝队应利用随附的YARA规则,重点监测内存中的哈希API解析特征值及无签名PIC代码块以实现有效拦截。 综合评分: 88 文章分类: 免杀,红队,安全工具,漏洞分析
Crystal-Kit:CS的IAT Hook免杀实验
原创
赛博57库 赛博57库
赛博57库
2026年7月2日 05:00 广东
在小说阅读器读本章
去阅读
| | | — | | 攻防技术 · 红队工具深度解析 Crystal-Kit:用 IAT Hook 替代 Cobalt Strike 的 Sleepmask 与 BeaconGate rasta-mouse · Cobalt Strike 4.12 · IAT Hook · Crystal Palace PICO · YARA 检测 |
| | | — | | 知名红队研究员 rasta-mouse 发布 Crystal-Kit,以 IAT Hook + 位置无关代码对象(PICO) 替代 Cobalt Strike 内置的 Sleepmask 和 BeaconGate,首次将运行时免杀覆盖延伸至 postex DLL。仓库随附 YARA 检测规则,攻防两端均可参考。 |
| |
| — |
| 01 · BeaconGate 与 Sleepmask 的局限 |
| Cobalt Strike 提供了两种运行时免杀原语:Sleepmask 在 Beacon sleep 期间对内存加解密,降低内存扫描检出率;BeaconGate 拦截 Beacon 的 Win32 API 调用,在每次调用前后注入免杀逻辑(如调用栈欺骗)。 两者存在一个共同的关键缺陷:BeaconGate 仅支持有限的 API 白名单,CreateProcessA 不在列,导致 shell、run、powerpick 在面对调用栈分析防御时完全失去保护。更重要的是,Sleepmask 对 postex DLL(键盘记录、截图等第三方后渗透模块)根本不起效。 |
| | | — | | 问题核心 postex DLL 没有等效的 Sleepmask 机制,调用栈分析在此场景下完全暴露了攻击者的操作。 |
| | | — | | 02 · IAT Hook — Crystal-Kit 的核心思路 | | Crystal-Kit 将 IAT Hook(导入地址表钩子)作为核心方案,核心流程: ① 注入 PIC blob:将一段位置无关代码注入到进程内存 ② Hook IAT:在 DLL 加载时修改其导入地址表,将目标 API 重定向至 PIC stub ③ 执行免杀逻辑:stub 在调用真实 API 前后执行调用栈欺骗等免杀技术 此思路借鉴自 TitanLdr、AceLdr 等反射加载器,但被泛化为可 Hook 任意 API 的通用框架——既无白名单限制,又天然覆盖 postex DLL。 |
| | | — | | 03 · 四大组件架构 |
| | | | — | — | | 组件 | 功能说明 | | Prepended Reflective Loader | 使 Beacon/postex DLL 以位置无关方式加载执行 | | PIC Stub(源自 Draugr) | 实现调用栈欺骗,掩盖真实调用链 | | PICO(位置无关代码对象) | Hook DLL 的 IAT,将 API 调用重定向到 PIC stub | | Aggressor Script(crystalkit.cna) | 在 Cobalt Strike 中注册 hook,整合进攻击流程 |
| | | — | | ▲ IAT Hook 流程:DLL 导入表 → PICO → PIC Stub(调用栈欺骗)→ Win32 API |
| |
| — |
| 04 · Crystal Palace PICO 生态 |
| Crystal-Kit 构建于 Crystal Palace 工具生态之上。PICO(Position Independent Code Object)是其核心抽象,具备以下特性: ▸ 数据段与代码段无需相邻(弹性内存布局,规避连续内存特征) ▸ 以 mingw32 编译为 object file,支持 x86/x64 双架构 ▸ 内嵌 data stub,辅助 loader 精确定位代码段与数据段边界 ▸ spec 文件声明式构建,piclink 工具处理后生成可执行 blob ▸ PicoLoad 函数实现跨 PICO 调用,支持模块化组合 |
| |
| — |
| 关键优势:Hook LoadLibrary 可阻断对 System.Management.Automation.dll、clr.dll 等敏感模块加载的检测,是 BeaconGate 完全无法实现的能力。 |
| |
| — |
| 05 · Crystal Mask:XOR 内存加密进化 |
| Crystal-Kit 之后,rasta-mouse 发布了 Crystal Mask,进一步演进了内存混淆策略: XOR 内存加密覆盖两个维度: ▸ Beacon 内存:利用 loader 提供的 BEACON_INFO 结构定位并加解密 Beacon 内存分配 ▸ 堆内存:遍历 Beacon 的 heap_records 数组,对所有堆分配逐一加解密 架构改进:不再禁用 Beacon 的内置软件契约(BeaconInfo / FunctionCall 结构),改为通过 link-time spec 文件注入免杀逻辑,从而支持组件与其他 loader 互换——修复了 Crystal-Kit sleepmask PICO 与自身 loader 强耦合的设计问题。 |
| | | — | | 06 · 生态扩展:移植到其他 C2 框架 |
| | | | — | — | | 项目 | 说明 | | CrystalSliver | Crystal-Kit 到 Sliver C2 的首个公开移植 | | Crystal-Kit-Xenon | 适配 Mythic Xenon Agent 的移植版本 | | CrystalC2 | rasta-mouse 自研 C2 框架,以 Crystal Palace 构建完整 agent |
| |
| — |
| 07 · 防守方视角:随附 YARA 检测规则 |
| Crystal-Kit 仓库内置 crystalkit.yar,包含两条由 Crystal Palace 自动生成的检测规则(TCG_7eee7002 与 TCG_31614b2a): ▸ 目标:x64 Windows(文件扫描与内存扫描) ▸ 特征集:内存清理例程、CFG bypass 字节序列、VirtualAlloc 调用模式、哈希值 API 解析(特征值 0x6A4ABC5B、0x7C0DFCAA) ▸ 触发条件:匹配特征集中 5 条及以上方触发 |
| | | — | | ▲ 蓝队可将仓库随附 YARA 规则直接用于 EDR/内存扫描引擎 |
| | | — | | 08 · 配置要点 | | 使用前需在 Malleable C2 profile 中关闭内置原语: |
| | | — | | # Malleable C2 关键配置 set sleep_mask “false”; # 禁用内置 Sleepmask stage { set cleanup “true”; } # 启用 stage 清理模式 # 然后将 crystalpalace.jar 复制至 CS 客户端目录 # 加载 crystalkit.cna 脚本 |
| | | — | | 注意:Crystal-Kit 的 Sleepmask PICO 与其自身的反射 loader 强耦合,不支持与第三方 loader 混搭。若需要跨 loader 兼容性,参考 Crystal Mask 的架构改进方案。 |
| |
| — |
| 总结 |
| Crystal-Kit 代表了 C2 框架运行时免杀演进的重要方向:从”修补内置原语”到”以更灵活的 PIC/PICO 架构完全替换”。 红队意义:首次将运行时保护延伸至 postex DLL,覆盖 BeaconGate 无法触及的盲区;任意 API hook 打破白名单限制。 蓝队意义:仓库随附 YARA 规则可直接落地;重点关注内存中的哈希值 API 解析模式(0x6A4ABC5B)与无签名 PIC blob 特征。 |
| | | — | | 技术内容仅供学习与安全研究,请勿用于未授权场景。 |
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博57库 赛博57库 赛博57库《Crystal-Kit:CS的IAT Hook免杀实验》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论