b3at1/unrealm

GitHub: b3at1/unrealm

一款跨平台的 Realm C2 专项检测与响应工具,支持多维度特征检测、静默中和欺骗式处置以及持久化痕迹清理。

Stars: 7 | Forks: 0

# unrealm 一个跨平台的 Python 代理,用于检测和响应 [Realm C2 framework](https://github.com/spellshift/realm) 及其 implants。 ## 它能检测什么 ### 所有平台 | Artifact | Details | |---|---| | `imix` / `golem` 进程 | 按名称查找正在运行的 implant 进程 | | 进程二进制文件中的 Rust/imix 依赖字符串 | 对二进制文件搜索 `rustc`, `gimli`, `addr2line`, `demangle` — 四者同时存在表明这是一个 imix 编译的二进制文件,无论进程名称为何 | | 8000 端口连接 | Realm 默认的 Tavern gRPC/HTTP C2 端口 | | 本地监听的 Tavern 服务器 | TCP 连接到 `127.0.0.1:8000` | ### Linux | Artifact | Path | |---|---| | Host-ID beacon UUID | `/var/tmp/system-id` | | Imix 二进制文件 | `/bin/imix`, `/usr/bin/imix` 等 | | 进程二进制文件中的 Rust/imix 字符串 | 枚举 `/proc`,解析 `/proc//exe`,读取二进制文件 — 跨用户进程需要 root 权限 | | Systemd 服务单元 | `/usr/lib/systemd/system/imixsvc.service` (或自定义名称) | | SysVinit 脚本 | `/etc/init.d/imixsvc` (或自定义名称) | | 安装暂存文件 | `/tmp/systemd.service.j2`, `/tmp/svc.sh.j2` | | 已失效的 `/bin/sh` | 检测 `/bin/sh → /bin/true` 是否已应用 | ### macOS | Artifact | Path | |---|---| | Host-ID beacon UUID | `/Users/Shared/system-id` | | Imix Mach-O 二进制文件 | `/var/root/imix` (或自定义名称) | | 进程二进制文件中的 Rust/imix 字符串 | 通过 `ps` 枚举,从 argv[0] 解析 exe,读取二进制文件 — 无 sudo 时尽力而为 | | LaunchDaemon plist | `/Library/LaunchDaemons/imixsvc.plist` (label `com.testing.*`) | | 安装暂存文件 | `/tmp/plist.j2` | ### Windows | Artifact | Location | |---|---| | Host-ID beacon UUID | `C:\ProgramData\system-id` | | Imix PE 二进制文件 | `C:\Windows\System32\imix.exe` (或自定义名称) | | 进程二进制文件中的 Rust/imix 字符串 | 通过 `psutil` (首选) 或 WMIC 枚举,读取 PE 二进制文件 — 若无 Administrator 权限,可能跳过 system/SYSTEM 进程 | | Windows 服务 | 名为 `imix`, `imixsvc`, `golem`, `golemsvc` 的服务 | | 注册表键 | `HKLM\SOFTWARE\Imix` → `system-id` 值 | ## 使用方法 警告:remove 并不真正删除文件。目前它只是终止它们,因此请自行承担风险手动删除文件! 某些功能需要 administrator/sudo 权限,因此在这种情况下你需要运行 `sudo .venv/bin/python -m unrealm --remove`。 ``` # 仅扫描 (默认) python -m unrealm # 扫描 + 打印 JSON 报告 python -m unrealm --json # 扫描并中和 python -m unrealm --neutralize # 扫描并彻底移除 (提示确认) python -m unrealm --remove # 扫描,移除,无提示 (用于自动化) python -m unrealm --remove --yes # 将报告写入文件 python -m unrealm --output report.json # 在先前中和后还原 /bin/sh (Linux) python -m unrealm --restore ``` ## 响应模式 ### `--neutralize` 破坏 shell 执行能力,**同时保持 C2 通信完全活跃**。 Eldritch 的 `sys.shell()` 通过 `PATH` 解析其 shell 二进制文件: - Unix: `Command::new("sh") -c ` - Windows: `Command::new("cmd") /c ` 操作员发送的每个任务都会“成功”(退出码 0,空 stdout)——这与运行了命令但未产生输出的情况一致。操作员不会立即察觉。 | Platform | Mechanism | C2 comms | |---|---|---| | **Linux** | `/bin/sh` 被替换为 `/bin/true`。备份位于 `/bin/sh.realm_backup`。 | ✅ Live | | **macOS** | 创建 `/usr/local/bin/sh` → `/usr/bin/true` 垫片。Realm LaunchDaemon plists 通过 `EnvironmentVariables/PATH=/usr/local/bin:...` 修补并重新加载(服务保持运行)。如果 SIP 被禁用,`/bin/sh` 也会被直接替换。 | ✅ Live | | **Windows** | 编译一个空操作 `cmd.exe` (通过 PowerShell `Add-Type` 使用 C#)。通过 **IFEO (Image File Execution Options)** 作为 `cmd.exe` Debugger 安装 — 在内核级别拦截每个 `cmd.exe` 的生成,无论其绝对路径为何。 | ✅ Live | 使用 `python -m unrealm --restore` 恢复任何 neutralise 操作。 ### `--remove` 精确移除所有检测到的 artifacts。 - 终止 implant 进程 (`SIGKILL` / `taskkill /F`)。 - 停止并禁用/删除服务 (`systemctl disable`, `launchctl unload`, `sc delete`)。 - 删除二进制文件、host-ID 文件和持久化文件。 - 移除注册表键。 ## 安装 ``` # 1. Git clone 仓库 (或下载 zip) git clone https://github.com/b3at1/unrealm.git # 2. 创建并激活 virtual environment cd /unrealm python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # 2. 安装 package 及所有依赖 pip install . ``` 需要 **Python 3.9+**。 必需的依赖项(自动安装): | Package | Purpose | |---|---| | `psutil >= 5.9` | 丰富的进程和网络连接枚举功能 | | `scapy >= 2.5` | 实时 TCP 数据包捕获,用于飞行中的 gRPC 服务路径检测 | ## 退出代码 | Code | Meaning | |---|---| | `0` | 无检测,或检测已完全解决 | | `1` | 尝试修复但一个或多个操作失败 | | `2` | 存在检测,未采取行动 | ## 注意事项 - 某些检查需要 **提升的权限** (`root` / Administrator) (读取 `/proc//exe`,列出所有服务,删除系统文件)。 - **Rust/imix 依赖字符串检查** 会枚举所有正在运行的进程并 读取每个唯一的可执行二进制文件。若无提升的权限: - **Linux** — `/proc//exe` 对其他用户拥有的进程不可读; 这些进程将被静默跳过。请以 `root` 运行以获取完整覆盖。 - **macOS** — exe 路径从 `ps` argv[0] 推断;大多数进程可以在 没有 `sudo` 的情况下覆盖,但某些系统进程可能会报告误导性的路径。 - **Windows** — `psutil` 对 SYSTEM/其他用户的进程会引发 `AccessDenied` (被优雅地跳过);若没有 Administrator 权限,WMIC 可能会遗漏受保护进程的 `ExecutablePath`。 请以 Administrator 运行以获取完整覆盖。 - 该工具 **默认为只读**;破坏性操作仅在 显式传递并确认 `--neutralize` 或 `--remove` 时运行。 - 请务必先在非生产环境中进行测试。
标签:C2检测, DNS 反向解析, EDR, Host-ID, HTTP工具, IP 地址批量处理, Mr. Robot, Python, Realm C2, Rust分析, URL发现, 后渗透, 安全检测, 库, 应急响应, 开源安全工具, 数字取证, 无后门, 植入物检测, 私有化部署, 网络安全, 网络安全审计, 脆弱性评估, 自动化脚本, 逆向工具, 逆向工程平台, 防御规避, 隐私保护