面向 Telegram、AI 代理(Antigravity / Local Ollama / OpenCode)以及通过 ph4ntom-ida-bridge 接入的 IDA Pro 9.5 的体外静态恶意软件剖析流水线
In vitro(“在玻璃中”):在密封玻璃之后对恶意软件进行自动化静态解剖——样本在主机上零执行节拍(禁止 in vivo),通过 Telegram、AI 代理(Antigravity / OpenCode / Custom CLI)和 IDA Pro 9.5(
ph4ntom-ida-bridge)将二进制的“黑盒”变成透明玻璃。
向 Telegram 机器人发送任意文件或压缩包(最大 2 GB) → 机器人检查 user_id 白名单,将文件下载到隔离区,执行快速的确定性预分诊,必要时自行启动带有 ph4ntom-ida-bridge 的隔离 IDA Pro 9.5,执行静态逆向和配置解密(execute_idapython + 本地 AST 沙箱),并将现成的 Markdown 报告发送回同一聊天。
Telethon) 运行,解除云 Bot API 20 MB 的限制,无需 Docker 和第三方代理。ZIP(包括通过 pyzipper 处理 WinZip AES-128/256)、7z、RAR/RAR5(自动查找 7z.exe/UnRAR.exe 或显式指定 SEVENZIP_BIN/UNRAR_BIN,兼容 OEM 编码 CP866/CP1251)、tar/gz/bz2/xz、CAB、ISO;在递归进入嵌套归档之前,自动从文件说明(pass: ...)、提取的相邻文本文件(ПАРОЛЬ.txt、readme.txt,编码为 UTF-8/CP1251/CP866)以及标准恶意软件密码(infected、malware、virus 等)中尝试密码;防御 zip-slip、符号链接和 zip 炸弹;将 .docm/.xlsm/.apk/.jar 保留为容器,同时并行提取其中的嵌套二进制文件。MD5/SHA-1/SHA-256)、熵、PE(pefile:节区、RWX、按威胁类别分类的导入、覆盖层、TLS、Authenticode、.NET,优先扫描 .rdata/.data)、确定性还原栈字符串和单字节 XOR 缓冲区(mov byte ptr [rbp/rsp+disp], imm8)、ELF、Mach-O、DEX、Office VBA 宏(oletools)、PDF(/JavaScript、/OpenAction、/URI)、Windows .lnk、PowerShell -enc 以及 IOC 提取器。ORCHESTRATOR_INTERNET=1(或配置文件为 extended_static / full_local)时,守护进程会通过 MalwareBazaar、ThreatFox、VirusTotal REST v3(若已设置 VT_API_KEY)、DNS-over-HTTPS 和 RDAP 被动查询初步分析中得到的 SHA-256 及外部域名/IP,而不接触攻击者的在线服务器,并保存 jobs/<job_id>/osint_report.json。主管 agent 还会获得 CLI tools/osint_lookup.py(带 SSRF 防护)。ida.exe -A 隔离运行,自动使用隔离的 staging 目录 IDAUSR(不依赖 sandbox 对 %APPDATA%\Hex-Rays\IDA Pro\plugins\ 的权限),通过字符串 XREF 进行两跳用户函数搜索并自动反编译主函数,严格按 PID/端口绑定到 ~/.ph4ntom_ida_instances.json,将会话证据记录到 ida_evidence.json,并保证进程终止——不会影响您手动打开的 IDA 窗口。[ПОДТВЕРЖДЕНО] / [ВЕРОЯТНО] / [НЕ ПОДТВЕРЖДЕНО],并明确说明置信度边界,而脚本 tools/send_telegram_report.py 会确定性地将最终报告与 triage_report.json 和 ida_evidence.json 进行核对(拦截被篡改的 SHA-256、在 IDA 未运行时虚构的 sub_* / Hex-Rays,以及无依据的 clean 结论)。safe_static(严格的命令白名单和 AST 沙箱),但一键即可启用 extended_static(+ 互联网/OSINT)或 full_local(完整的 PowerShell + 互联网,用于专用分析 PC)。execute_idapython 和本地沙箱 tools/run_static_decoder.py(AST 过滤器 + sys.addaudithook,禁止启动进程、访问注册表以及在 jobs/<id>/decoded/ 之外写入,在激活 full_local 时可选用 --allow-network / --unrestricted-imports)。backends/): 开箱即支持 Antigravity、自主的**本地 AI 代理(local — Ollama / qwen2.5-coder:7b / LM Studio / vLLM,具备生成流控制、自动启动 ollama serve 和 16K 上下文)**以及 OpenCode(opencode run + 现成的配置 opencode.json.example),并且可以在 Telegram 中直接通过命令 /mode local ↔ /mode antigravity(或文件说明中的一次性标签 #local)在云端 antigravity 和本地模型之间切换,无需重启机器人。user_id(data/allowed_users.json)工作。其他用户会被完全忽略;所有者通过 /allow 和 /revoke 管理访问权限。[Доверенный user_id в Telegram]
│ (любой файл / архив до 2 ГБ, опционально пароль в подписи)
▼
[bot_daemon.py (Telethon MTProto + Keepalive)]
├─ Белый список: data/allowed_users.json (/whoami, /allow, /revoke, /users, /status, /mode, /reset)
├─ Очередь (MAX_CONCURRENT_JOBS=1) → скачивание в jobs/<job_id>/sample/
├─ Этап 1: tools/triage.py → безопасная распаковка + стековый/XOR декодер + jobs/<job_id>/triage_report.json
└─ Этап 2: backends/* (Antigravity | Local LLM [Ollama/LM Studio] | OpenCode | Custom CLI)
│
▼
[ИИ-агент (строго статика)]
├─ VirusTotal MCP: проверка только SHA-256 / доменов / IP (без загрузки файла)
├─ IDA Pro 9.5: tools/ida_session.py open → MCP ida-bridge + static execute_idapython → close
├─ Локальные декодеры: tools/run_static_decoder.py (AST + audit hook sandbox)
└─ Финал: tools/send_telegram_report.py → jobs/<job_id>/delivery_ready.json
│
▼
[bot_daemon.py] → отправляет вердикт, сводку и файл report_<name>.md обратно в чат
公共仓库按照 secure-by-default 原则配置(在 .env.example 和 opencode.json.example 中设置 PERMISSION_PROFILE=safe_static),而在您的个人电脑或专用测试环境中,权限可以灵活扩展:
配置文件(PERMISSION_PROFILE) | PowerShell / Shell | 互联网与 OSINT(编排器 + 代理) | run_static_decoder.py 中的无限制导入 | 用途 |
|---|---|---|---|---|
safe_static (GitHub 默认) | ❌ 仅白名单 tools/*.py | ❌ 仅本地哈希 + VT MCP | ❌ 严格 AST 白名单 | 为公共构建提供最大隔离 |
extended_static | ❌ 仅白名单 tools/*.py | ✅ 被动 OSINT + HTTPS 文档 | ❌ 严格 AST 白名单 | 带网络增强的安全静态分析 |
full_local | ✅ 用于静态分析的完整 PowerShell | ✅ 完整被动 OSINT + HTTPS 文档 | ✅ --unrestricted-imports + --allow-network | 专用分析机 / 个人电脑 |
custom | 通过 ALLOW_POWERSHELL=0|1 配置 | ALLOW_INTERNET=0|1 + ORCHESTRATOR_INTERNET=0|1 | ALLOW_UNRESTRICTED_SCRIPTS=0|1 | 自定义组合 |
通过一条命令切换配置文件(保留 .env 中的 TG_* 密钥,并同步本地 opencode.json / 自动化配置):
# Включить полный доступ к PowerShell + Интернет/OSINT (для личного ПК):
.\.venv\Scripts\python.exe tools\configure_permissions.py --set-profile full_local --apply-opencode --apply-sidecar
# Вернуть строгий безопасный профиль (как по умолчанию на GitHub):
.\.venv\Scripts\python.exe tools\configure_permissions.py --set-profile safe_static --apply-opencode --apply-sidecar
# Проверить текущий активный профиль (без вывода секретов):
.\.venv\Scripts\python.exe tools\configure_permissions.py --show
所有配置文件中不变的不变量:
dbg_* 工具始终被禁用,且提示词禁止运行所研究的二进制文件、对样本代码执行 Invoke-Expression 以及直接连接活跃的 C2 服务器。localhost/RFC1918/link-local 地址的请求。.env 中的 Telegram 令牌和 API 密钥会从子解码器的 env 中移除,样本内的字符串会被标记为不可信数据。重要(Windows Defender / 杀毒软件): 在专用分析机上将
jobs/文件夹添加到杀毒软件排除项中,否则 Defender 会在机器人下载样本后立即将其删除。
git clone https://github.com/ph4ntom-rev/ph4ntom-vitrum.git
cd ph4ntom-vitrum
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
(在 Linux/macOS 上使用 .venv/bin/python。)
TG_API_ID 和 TG_API_HASH@BotFather 创建机器人并获取 TG_BOT_TOKENuser_id(例如通过 @userinfobot)getpass 隐藏):.\.venv\Scripts\python.exe setup_credentials.py
Скрипт создаст .env, пропишет вас в data/allowed_users.json и при желании сгенерирует локальный opencode.json.
~/.gemini/config/mcp_config.json..env должно быть AGENT_BACKEND=antigravity.ph4ntom Vitrum на панели Automations в Antigravity (или запустите вручную: .\.venv\Scripts\python.exe bot_daemon.py).