메인 콘텐츠로 건너뛰기

네트워크 격리

Decepticon의 아키텍처는 근본적인 원칙 위에 세워져 있습니다: 관리 인프라와 작전 인프라는 네트워크 접근을 전혀 공유하지 않습니다. 두 개의 격리된 Docker 네트워크가 이 분리를 강제합니다:
┌─────────────────────────────────────┐     ┌──────────────────────────────────────┐
│        decepticon-net (mgmt)        │     │        sandbox-net (작전)             │
│                                     │     │                                      │
│  ┌─────────────┐ ┌──────────────┐  │     │  ┌──────────┐ ┌──────────────────┐  │
│  │  에이전트   │ │ LiteLLM      │  │     │  │   Kali   │ │ 타겟 인프라      │  │
│  │  API 서버   │ │ 프록시       │  │     │  │ 샌드박스  │ │ (Metasploitable, │  │
│  └─────────────┘ └──────────────┘  │     │  │          │ │  커스텀 타겟)     │  │
│                                     │     │  └──────────┘ └──────────────────┘  │
│  ┌─────────────┐                   │     │                                      │
│  │  데이터베이스│                   │     │  ┌──────────────────┐               │
│  └─────────────┘                   │     │  │ Sliver C2 서버   │               │
│                                     │     │  │   (선택사항)      │               │
└─────────────────────────────────────┘     └──────────────────────────────────────┘
         │                                              ↑
         │         Docker 소켓 (네트워크 아님)            │
         └──────────────────────────────────────────────┘
LangGraph 오케스트레이터는 Docker 소켓을 통해서만 샌드박스에 접근합니다 — 네트워크가 아닙니다. 관리 트래픽이 작전 네트워크로 흐르지 않습니다. 작전 트래픽이 관리 네트워크로 역류하지 않습니다.

관리 네트워크 (decepticon-net)

컨트롤 플레인을 수용합니다:
컴포넌트역할
LangGraph Platform에이전트 조율, SSE 스트리밍, 라이프사이클 관리
LiteLLM Proxy모델 라우팅, 프로바이더 폴백, API 키 관리
PostgreSQL인게이지먼트 상태, 발견 사항, 목표 추적, OPPLAN 지속성
Web DashboardNext.js 오퍼레이터 인터페이스 (Soundwave 인터뷰, 공격 그래프 캔버스, OPPLAN 트래커)
Neo4j지식 그래프 — 양 네트워크를 연결하여 샌드박스의 에이전트가 발견 사항을 쓰면서 대시보드가 관리 영역에서 읽을 수 있게 함

작전 네트워크 (sandbox-net)

타겟과 접촉하는 모든 것을 수용합니다:
컴포넌트역할
Kali Linux Sandbox전체 오펜시브 툴킷 — nmap, Sliver 클라이언트, sqlmap, Impacket 등
Sliver C2 Team Server커맨드 앤 컨트롤 인프라 (프로파일 기반 활성화)
Target Infrastructure피해자 머신 — Metasploitable, 커스텀 타겟, 또는 실제 환경에 대한 VPN 접근

동적 워크로드 라이프사이클 (opscontrol)

기본 스택 — LangGraph, LiteLLM, PostgreSQL, Neo4j, Skillogy, 샌드박스 — 은 한 번 기동되어 인게이지먼트 사이에 계속 유지됩니다. 그러나 헤비웨이트 전문 워크로드(Sliver C2, Active Directory용 BloodHound CE, 리버싱 툴체인, 향후 Havoc / Mythic 등)는 기본 스택에 포함되지 않습니다. 매번 직접 띄우면 콜드 스타트에 수 분이 낭비되고 오퍼레이터가 요청하지도 않은 RAM이 소모됩니다. 대신 에이전트가 워크로드 필요 시점을 판단하고 즉시 요청합니다 (ADR-0006). 오케스트레이터는 다음 세 가지 도구를 갖습니다:
도구기능
ops_start("c2-sliver")sandbox-net에 Sliver C2 스택(Sliver 팀 서버 + 부속 컨테이너)을 기동. state: "starting"을 즉시 반환.
ops_stop("c2-sliver")워크로드가 더 이상 필요 없을 때 우아한 종료.
ops_status()모든 워크로드의 현재 상태 스냅샷 — 폴링 폴백용.
내부 동작:
  • 사용자당 opscontrol 데몬이 호스트의 Docker 소켓을 소유하고 에이전트를 대신해 Compose를 실행합니다. systemd 사용자 유닛(Linux) 또는 launchd LaunchAgent(macOS)로 한 번 설치되며, init 시스템이 없는 환경(Windows, systemd 없는 WSL2)에서는 런처가 데몬을 직접 스폰합니다.
  • 데몬은 유닉스 도메인 소켓 $DECEPTICON_HOME/run/ops.sock을 통해 에이전트와 통신합니다 — TCP가 아닙니다. 네트워크 격리가 보존됩니다.
  • **엄격한 허용 목록(allowlist)**이 에이전트가 스폰할 수 있는 대상을 제한합니다: ad, c2-sliver, c2-havoc, reversing, cloud, mobile, phishing, forensics, ics, iot, supply-chain, wireless. 목록 외 항목은 거부됩니다.
  • 상태가 바뀔 때(starting → running, running → exited 등) OpsControlNotificationMiddleware에이전트의 다음 턴에 새 상태를 자동 주입합니다 — 에이전트는 폴링하지 않습니다.
.env로 오버라이드 가능: COMPOSE_PROFILES=cli,c2-sliver,ad,reversing을 설정하면 나열된 워크로드가 기동 시 함께 올라옵니다(CI 회귀 실행에 유용). 일상 사용에서는 비워두고 에이전트가 판단하도록 두는 것이 권장됩니다.

이것이 중요한 이유

이 분리는 실제 레드팀 인프라 설계를 미러링합니다:
  • 크리덴셜 유출 없음 — API 키와 LLM 토큰은 작전 네트워크에 존재하지 않습니다
  • 교차 오염 없음 — 침해된 샌드박스가 관리 플레인에 도달할 수 없습니다
  • 감사 가능한 경계 — 명확한 네트워크 분리로 활동 귀속이 간단합니다
  • 프로덕션급 격리 — 실제 인게이지먼트에서 사용하는 것과 동일한 아키텍처
  • 불필요한 기동 비용 없음 — 헤비웨이트 워크로드(C2, BloodHound)는 에이전트가 실제로 필요할 때만 기동됩니다

Docker Compose 아키텍처

모든 컴포넌트는 명시적 네트워크 할당과 함께 Docker Compose에 정의됩니다:
services:
  langgraph:
    networks: [decepticon-net]

  litellm:
    networks: [decepticon-net]

  postgres:
    networks: [decepticon-net]

  web:
    networks: [decepticon-net]

  neo4j:
    networks: [decepticon-net, sandbox-net]   # 양 네트워크 연결

  sandbox:
    networks: [sandbox-net]

  c2-sliver:
    profiles: [c2-sliver]
    networks: [sandbox-net]

  cli:
    networks: [decepticon-net]
    profiles: [cli]

networks:
  decepticon-net:
    driver: bridge
  sandbox-net:
    driver: bridge
c2-slivercli 서비스는 Compose 프로파일로 활성화되지만, 프로파일 자체는 런타임에 opscontrol이 제어합니다 (위의 동적 워크로드 라이프사이클 참조) — 에이전트가 ops_start("c2-sliver")를 호출하면 데몬이 해당 프로파일을 켭니다. cli 서비스는 오퍼레이터가 decepticon을 실행할 때 런처가 필요시 기동합니다. 향후 C2 프레임워크(Havoc, Mythic)는 sandbox-net 위에 추가 c2-* 프로파일 서비스로 제공되며, 동일한 허용 목록 기반 ops_start(...) 호출로 노출됩니다. 교차 네트워크 접근은 서비스 레벨 네트워크 구성원십으로 관리됩니다 — Neo4j가 양쪽 네트워크에 구성원십을 보유한 유일한 서비스이며, LangGraph 플랫폼은 Docker 소켓(네트워크 아님)을 통해서만 샌드박스에 접근합니다.

에이전트

이 인프라 내에서 작동하는 16개의 전문 에이전트를 알아보세요.