
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 봇에 모든 파일 또는 아카이브(최대 2GB) 를 보내면 → 봇이 user_id 화이트리스트를 확인하고, 파일을 격리 구역에 다운로드하며, 빠른 결정론적 사전 분석을 수행하고, 필요 시 격리된 IDA Pro 9.5를 ph4ntom-ida-bridge와 함께 자체적으로 실행하여 정적 리버싱 및 설정 복호화(execute_idapython + 로컬 AST 샌드박스)를 수행한 뒤, 완성된 Markdown 보고서를 동일한 채팅으로 다시 보냅니다.
Telethon) 기반으로 동작하여 Docker나 서드파티 프록시 없이 클라우드 Bot API의 20MB 제한을 해제합니다.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으로)에서, 그리고 표준 malware 비밀번호(infected, malware, virus 등)에서 비밀번호 자동 선택; zip-slip, 심볼릭 링크 및 zip 폭탄 방지; .docm/.xlsm/.apk/.jar를 컨테이너로 보존하면서 중첩 바이너리를 병렬 추출.MD5/SHA-1/SHA-256), 엔트로피, PE(pefile: 섹션, RWX, 위협 카테고리별 임포트, 오버레이, TLS, Authenticode, .NET, .rdata/.data 우선 스캔), 스택 문자열 및 1바이트 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을 저장합니다. 상사 에이전트는 또한 CLI tools/osint_lookup.py를 받습니다(SSRF 보호 포함).ida.exe -A의 격리 실행, 자동 격리 staging 디렉터리 IDAUSR 사용(%APPDATA%\Hex-Rays\IDA Pro\plugins\에 대한 sandbox 권한에 의존하지 않음), 문자열 XREF를 통한 사용자 함수 2-hop 검색 및 메인 함수 자동 디컴파일, ~/.ph4ntom_ida_instances.json의 PID/포트에 의한 엄격한 바인딩, 세션 증거를 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)와 함께 작동하며, 클라우드 antigravity와 로컬 모델 간 전환은 봇을 재시작하지 않고 Telegram에서 /mode local ↔ /mode antigravity 명령(또는 파일 캡션에 일회성 태그 #local)으로 직접 수행됩니다.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), 개인 PC 또는 전용 스탠드에서는 권한을 유연하게 확장할 수 있습니다:
프로필 (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 | 전용 분석 머신 / 개인 PC |
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을 사용하세요.)