상시 가동 스택의 문제
진지한 레드팀 인게이지먼트는 다음 중 무엇이든 필요할 수 있습니다 — Sliver C2, Active Directory용 BloodHound CE, 리버싱용 Ghidra, 모바일 에뮬레이션, IoT 펌웨어 도구, ICS 프로토콜 시뮬레이터. 매번decepticon start마다 이 모두를 기동한다면:
- 매 시동마다 콜드 스타트에 수 분이 낭비됩니다.
- 오퍼레이터가 요청하지 않은 기가바이트의 RAM을 소비합니다.
decepticon stop은 드레인에만 5분이 걸립니다.
Decepticon 모델 (ADR-0006)
에이전트가 워크로드 필요 시점을 판단하고 즉시 요청합니다. 오케스트레이터는 세 가지 도구를 갖습니다:| 도구 | 기능 |
|---|---|
ops_start("c2-sliver") | 워크로드의 컨테이너를 sandbox-net에 기동. state: "starting"을 즉시 반환. |
ops_stop("c2-sliver") | 워크로드가 더 이상 필요 없을 때 우아한 종료. |
ops_status() | 모든 워크로드의 현재 상태 스냅샷 — 폴링 폴백용. |
워크로드 스폰의 흐름
opscontrol 데몬
opscontrol은 런처와 함께 설치되는 사용자당 작은 데몬입니다. 호스트의 Docker 소켓을 소유하고 에이전트를 대신해 Compose를 실행합니다.
라이프사이클 관리
세 가지 설치 모드, 우선순위 순서:- systemd 사용자 유닛 (Linux) —
decepticon opscontrol install이~/.config/systemd/user/decepticon-opscontrol.service에 유닛을 작성. init 시스템이 크래시 복구와 재부팅 후 생존을 감독합니다. - launchd LaunchAgent (macOS) — 동일한 형태.
~/Library/LaunchAgents/에 작성. - 런처-스폰 폴백 — 인식 가능한 init 시스템이 없는 호스트(Windows 네이티브, systemd 없는 WSL2)에서는 런처가 분리된 데몬 프로세스를 포크하고 PID 파일을 작성. 서비스-관리 모드보다 견고하지 않지만 기능합니다.
보안 경계
- 데몬은 운영자의 UID로 실행 — root 아님. 사용자가 이미
docker그룹 멤버십으로 가진 Docker 권한만 가집니다. - 에이전트는 데몬과 Unix 도메인 소켓
$DECEPTICON_HOME/run/ops.sock을 통해 통신. TCP 아님. 네트워크로 도달 불가능. - 엄격한 허용 목록이 에이전트가 스폰할 수 있는 대상을 제한:
ops_start("postgres")로 관리 플레인을 공격할 수 없습니다.
폴링 없이 자동 알림
순진한 설계는 에이전트가 폴링하게 합니다:ops_start("ad") 호출 후 준비될 때까지 ops_status("ad")를 루프 — no-op에 토큰과 턴이 낭비됩니다.
Decepticon은 **OpsControlNotificationMiddleware**를 출하하며, 이것이 데몬 상태 이벤트를 구독해 상태 전이를 에이전트의 다음 턴에 <system-reminder> HumanMessage로 직접 주입합니다. 에이전트의 논리 흐름:
SandboxNotificationMiddleware를 통해 백그라운드 bash를 감쌉니다 — 자율 실행 참조.
운영자 오버라이드
“기동 시 모든 것을”을 선호하는 운영자(보통 에이전트 시작 전에 전체 매트릭스가 온라인 상태이길 원하는 CI 회귀 실행)는COMPOSE_PROFILES를 명시적으로 설정:
COMPOSE_PROFILES를 비워두고 에이전트가 스택을 운전하도록 두는 것을 권장합니다.
OSS에 포함되는 것
opscontrol 데몬, 세 가지ops_* 도구, 허용 목록, 자동 알림 미들웨어, systemd/launchd 감독자 변형 모두 OSS 릴리스에 포함됩니다. 워크로드 프로파일 정의(c2-sliver, ad, reversing 등)는 docker-compose.yml에서 기본 스택 옆에 살며, 워크로드 추가는 Compose 파일 변경 + 허용 목록 항목만 필요합니다 — 에이전트 코드 변경 불필요.
자율 실행
에이전트의 또 다른 자동 알림 면 — 백그라운드 bash 명령도 폴링이 아닌 완료 알림을 푸시합니다.
인프라
이 워크로드들이 두-네트워크 토폴로지의 어디에 위치하는지.
