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发现, 后渗透, 安全检测, 库, 应急响应, 开源安全工具, 数字取证, 无后门, 植入物检测, 私有化部署, 网络安全, 网络安全审计, 脆弱性评估, 自动化脚本, 逆向工具, 逆向工程平台, 防御规避, 隐私保护