sujan1-3/nimcrab-rt

GitHub: sujan1-3/nimcrab-rt

redcrab-rt 是一款基于 Nim 的 Windows x64 红队植入框架,用于模拟高级攻击者行为。

Stars: 0 | Forks: 0

# redcrab-rt 授权的实验室和活动使用的红队植入框架。 ## 概述 `redcrab-rt` 是一个基于 Nim 的 Windows x64 植入,具有 12 阶段初始化链、操作员级别的规避堆栈和具有域名前端支持的 HTTPS C2。它通过 `nim c` 编译为原生 Windows PE,并通过 `builder.py` 在构建时完全配置。 **这不是什么:**一个简单的反向 shell。执行的每个阶段——从将进程空心化到 `svchost.exe` 到睡眠掩码的 RC4 加密,再到在 `ntdll` 内部执行的间接系统调用——都是为了在现代 EDR 检查中生存。 ## 快速开始 ### 1. 环境准备 ``` # Nim 2.x (https://nim-lang.org/install.html) curl https://nim-lang.org/choosenim/init.sh -sSf | sh choosenim stable # winim — Windows API 绑定 nimble install winim # 从 Linux/macOS 跨编译到 Windows nimble install mingw-w64 # or use a Windows build machine # 为构建者提供 Python 3 python3 --version ``` ### 2. 设置您的 C2 监听器 ``` # 终端 1 — HTTPS 监听器(socat + openssl,或 teamserver) # 植入体向 /beacon 发送 POST 并读取命令;结果发送到 /result;数据发送到 /data # 终端 2 — 如果使用 ngrok 进行 NAT 穿透: ngrok http 443 # 注意转发后的 HTTPS 主机 — 例如 abc123.ngrok.io ``` ### 3. 构建植入程序 ``` python builder.py ``` 提示值: | 提示 | 示例 | 目的 | |---|---|---| | `C2 主机 (Host: header)` | `abc123.ngrok.io` | 实际 C2 服务器(作为 HTTP `Host:` 标头发送) | | `前端域名 (SNI)` | `update.microsoft.com` | TLS 握手向网络呈现的 CDN/SNI | | `C2 端口` | `443` | HTTPS 端口 | | `信标间隔 (ms)` | `15000` | 基础信标睡眠的毫秒数 | | `抖动 %` | `30` | 信标间隔的 ± 变化 | | `工作时间开始` | `8` | 本地小时——信标开始活跃 | | `工作时间结束` | `20` | 本地小时——信标静默 | | `SLEEP_KEY` | *(空白 = 随机)* | 16 字节 RC4/XOR 睡眠掩码密钥 | 输出:`redcrab.exe` (Windows x64 PE) ### 4. 部署 1. 将 `redcrab.exe` 复制到目标 2. 执行——它通过 12 阶段初始化链静默运行 3. 您的监听器接收 `POST /beacon`,内容为 `id=-` 4. 在响应体中发送命令;输出通过 `POST /result` 返回 ## 初始化链 执行遵循严格的 12 阶段序列。每个阶段必须成功,才能开始下一个阶段。 ``` Phase 0 — NT function pointer resolution (indirect syscall table) Phase 1 — SSN audit: verify critical syscall numbers match ntdll on disk Phase 2 — Environment gate: sandbox / analysis / VM detection Phase 3 — VEH guardian: installs Vectored Exception Handler → triggers full destruct on any unexpected exception Phase 4 — Ctrl handler: CTRL+C / SIGTERM → clean wipe Phase 5 — Bypass layer: SAC bypass → ntdll re-read (EDR unhook) → ETW-Ti + AMSI 6-site patch Phase 6 — Persistence: installs survival mechanism Phase 6b — Token escalation: enable SeDebugPrivilege early Phase 7 — Guardian thread: monitors for debuggers/tampering; triggers resurrect → re-hollow if the primary image is wiped Phase 8 — Obfuscated sleep: RC4 sleep-mask before hollowing Phase 9 — Process hollowing: maps payload into suspended svchost.exe Phase 10 — Post-injection concealment: module stomp + stack spoof + secure zero of payload buffer Phase 11 — C2 beacon loop: HTTPS POST with jitter + working-hours gate Phase 12 — Clean exit: uninstall persistence + full destruct ``` ## 架构 ``` redcrab-rt/ ├── builder.py ← patches build-time config, runs nim c ├── redcrab.nimble ← project manifest (requires winim >= 3.9.0) └── src/ │ ├── redcrab.nim ← WinMain entry + 12-phase init ├── defs.nim ← NT type definitions ├── utils.nim ← djb2 hash helpers ├── hashes.nim ← compile-time API hash table │ ├── ── Syscall layer ────────────────────────────────────────────────── ├── syscall.nim ← raw syscall stubs (inline asm) ├── indirect_syscall.nim ← HalosGate SSN resolution; executes inside ntdll ├── ssn_audit.nim ← verifies critical SSNs against on-disk ntdll │ ├── ── Evasion layer ────────────────────────────────────────────────── ├── pe_obfuscate.nim ← compile-time string XOR; import hash resolution ├── unhook.nim ← page-granular ntdll re-read; wipes EDR API hooks ├── etw_patch.nim ← EtwEventWrite ret-sled (6 sites) + AMSI patch ├── sac_bypass.nim ← Smart App Control: WDAC per-process policy clear ├── sleep.nim ← Foliage APC-chain RC4 sleep mask + heap XOR ├── stomp.nim ← module stomping into xpsservices.dll section ├── spoof.nim ← synthetic call stack frame spoofing ├── antidetect.nim ← sandbox / VM / analysis environment gates │ ├── ── Injection layer ──────────────────────────────────────────────── ├── loader.nim ← in-memory PE mapper ├── hollow.nim ← process hollowing into svchost.exe ├── threadless_inject.nim ← EAT-hijack injection (no CreateThread telemetry) ├── ppldump.nim ← PPL removal via BYOVD kernel write primitive │ ├── ── Resilience layer ─────────────────────────────────────────────── ├── guardian.nim ← VEH + watchdog thread; triggers destruct on tamper ├── watchdog.nim ← heartbeat loop; re-hollows if primary image wiped ├── resurrect.nim ← drops backup payload from NTFS ADS; re-executes ├── persist.nim ← installs + purges persistence mechanism ├── post_shutdown.nim ← WNF channel persistence across reboots │ ├── ── Credential / post-ex ─────────────────────────────────────────── ├── token.nim ← lsass token theft; SeDebugPrivilege; revert ├── dpapi.nim ← CredMan + browser login + WiFi PSK extraction ├── keylog.nim ← WH_KEYBOARD_LL hook; ring buffer; C2 drain ├── lateral.nim ← WMI exec, SMB service exec, host-list spray │ ├── ── Collection ───────────────────────────────────────────────────── ├── screenshot.nim ← desktop BMP capture via GDI ├── webcam.nim ← webcam frame capture via Media Foundation ├── mic.nim ← microphone WAV recording via WASAPI ├── filetransfer.nim ← upload / download with chunked XOR I/O │ ├── ── Cleanup ──────────────────────────────────────────────────────── └── selfdestruct.nim ← multi-stage wipe: overwrite → truncate → rename → delete; Ctrl handler registration ``` ## C2 协议 **传输:**通过 WinHTTP 的 HTTPS POST——流量配置文件与操作系统更新或浏览器流量无法区分。 **域名前端:**网络呈现的 TLS SNI 是 `FRONT_DOMAIN`(CDN 边缘或受信任的主机)。加密隧道内部的实际 `Host:` 标头指向 `C2_HOST`。网络监控器只能看到 CDN SNI。 **端点:** | 方法 | 路径 | 方向 | 主体 | |---|---|---|---| | POST | `/beacon` | 植入程序 → C2 | `id=-\n` | | POST | `/result` | 植入程序 → C2 | `id=...\nresult=\n` | | POST | `/data` | 植入程序 → C2 | 原始二进制数据(截图 / 音频 / 密钥记录 / dpapi) | | `/beacon` 的响应 | — | C2 → 植入程序 | 明文命令字符串 | **抖动:**splitmix64 PRNG,由 `GetTickCount64 ^ thread_id` 种子。每次睡眠为 `base_ms ± JITTER_PCT%`,最低为 500 毫秒。 **工作时间门:**在 `[BEACON_HOUR_START, BEACON_HOUR_END)` 之外,植入程序以 5 分钟的块状睡眠 `DEAD_SLEEP_SECS`——非工作时间不进行信标,不进行网络 IOCs。 **用户代理轮换:**每个信标周期通过一组真实的 Windows 浏览器和 Windows 更新 UAs。数据导出使用 `Windows-Update-Agent` UA 以混合大型上传。 ## C2 命令参考 所有命令都作为明文发送到 `/beacon` 的 HTTP 响应体中。 ### Shell ``` → exec via cmd.exe /C, output returned ``` ### 收集 ``` screenshot → capture desktop BMP → POST /data webcam → capture webcam frame → POST /data mic → record WAV for seconds → POST /data download → pull file from target → POST /data upload → receive file pushed from C2 keylog start → install WH_KEYBOARD_LL hook keylog dump → drain ring buffer → POST /data ``` ### 凭据访问 ``` dpapi dump → CredMan + browser logins + WiFi PSKs → POST /data token escalate → steal SYSTEM token via lsass impersonation token revert → revert thread token to original ``` ### 横向移动 ``` lateral wmi → WMI exec on remote host lateral smb → copy + exec via SMB service on remote host lateral spray → execute against all loaded hosts hosts load → load newline-separated target list (base64-encoded) ``` ### 生命周期 ``` selfdestruct → multi-stage wipe + process exit exit → clean session close (no wipe) ``` ## 规避覆盖 | 层 | 技术 | 模块 | |---|---|---| | 静态签名 | 无磁盘写入;仅内存;编译时 XOR 加密 | `pe_obfuscate.nim` | | AMSI | 任何扫描前的 3 站点修补 | `etw_patch.nim` | | ETW-Ti | EtwEventWrite 返回 sled 横跨 6 个站点 | `etw_patch.nim` | | EDR API 钩子 | ntdll 页面粒度重新读取 | `unhook.nim` | | 睡眠期间的内存扫描 | Foliage APC-chain:RC4 PE 加密 + 堆 XOR 在睡眠期间 | `sleep.nim` | | 调用栈检查 | 合成合法帧欺骗 | `spoof.nim` | | 模块取证 | xpsservices.dll 部分stomp | `stomp.nim` | | 系统调用来源检查 | 在 ntdll 内部执行的间接系统调用 | `indirect_syscall.nim` | | SSN 干扰检测 | 启动时磁盘 ntdll SSN 审计 | `ssn_audit.nim` | | 智能应用控制 | WDAC 每进程策略清除 | `sac_bypass.nim` | | 线程创建遥测 | 无线程 EAT-hijack 注入 | `threadless_inject.nim` | | PPL 保护 | BYOVD 内核写入原语(驱动程序无关的脚手架) | `ppldump.nim` | | C2 流量指纹 | HTTPS POST;域名前端;UA 轮换;抖动 | `c2.nim` | | 非工作时间 IOC | 工作时间门;窗口外的死睡眠 | `c2.nim` | | 分析环境 | 沙盒 / 虚拟机 / 调试器门 | `antidetect.nim` | | 干扰响应 | VEH + 看门狗 → 在意外异常时销毁 | `guardian.nim` | | 弹性 | ADS 备份;WNF 重启持久性;擦除后重新空心化 | `resurrect.nim`,`post_shutdown.nim` | ## 网络设置 ``` Target machine │ │ HTTPS POST — SNI: FRONT_DOMAIN ▼ CDN / trusted edge host │ │ Host: C2_HOST (inside TLS) ▼ Your C2 server (any network) │ └─ /beacon /result /data endpoints ``` ngrok、Cloudflare 隧道或任何 HTTPS 终止的反向代理作为中继。无需端口转发或静态 IP。 ## 每次构建清单 - [ ] `python builder.py` — 输入新的 C2 主机、前端域名、端口、抖动配置 - [ ] `SLEEP_KEY` 空白 → 构建器自动生成 16 字节随机密钥 - [ ] 验证您的 HTTPS 监听器是否处理 `/beacon`、`/result`、`/data` - [ ] 确认前端域名可解析且从测试主机完成 TLS 握手 - [ ] 如果在 Windows 11 上测试,请将 SAC 设置为关闭(安全 → 应用和浏览器控制 → 智能应用控制 → 关闭) - [ ] 在部署二进制文件之前,确保监听器正在运行且可访问 *仅限授权的实验室和活动使用。*
标签:Builder 配置, EDR 避免检测, Evasion Stack, HTTPS C2, Nim 语言, PE 编译, Windows x64, 域前置, 睡眠混淆, 端点可见性, 红蟹框架, 红队实战工具, 红队实验室工具, 红队植入, 进程空心化, 逆向工具, 间接系统调用