메인 콘텐츠로 건너뛰기
긴 레드팀 작전은 수백 개의 발견, 크리덴셜, 호스트, 서비스 및 탐지 아티팩트를 생성합니다. 이들을 평면 JSON으로 저장하면 레드팀 출력을 유용하게 만드는 관계를 잃습니다 — 어떤 크리덴셜이 어떤 호스트를 열었을까? 어떤 탐지가 어떤 기법을 다루나? Decepticon은 대신 Neo4j 그래프에 저장합니다.

왜 그래프인가

공격 경로는 본질적으로 그래프입니다. 피벗은 관계입니다; 크리덴셜은 계정과 호스트 사이의 에지입니다; 방어 브리프는 취약점을 탐지에 연결합니다. 이를 그래프로 모델링하면:
  • 오케스트레이터는 *“이 크리덴셜에서 어떤 호스트에 도달할 수 있나?”*를 대화 기록을 다시 읽지 않고도 한 번의 Cypher 쿼리로 쿼리할 수 있습니다.
  • 방어자의 산출물은 PDF가 아닌 구조화된 그래프입니다 — 기존 탐지 커버리지에 쉽게 오버레이됩니다.
  • 교차 작전 쿼리가 가능합니다: “이 CVE는 이 고객에 대한 이전 작전에서 나타났나?”

노드 타입

노드표현
Host발견된 호스트 또는 자산 (IP, 호스트명, OS)
Service호스트에서 실행 중인 네트워크 서비스 (포트, 프로토콜, 배너, 버전)
Account발견된 신원 (사용자, 서비스, 머신 계정)
Credential캡처된 비밀 (암호, 해시, 토큰, 키)
Vulnerability확인된 약점 (CVE, 오설정)
Finding에이전트가 생성한 검증된 관찰
DefenseActionVulnresearch 파이프라인(Detector, Patcher)이 생성한 탐지 규칙, 완화 또는 패치. 스키마는 계획된 Defender 컴포넌트가 출시되면 여기에 기록할 수 있도록 공간을 예약해 둡니다.

에지 타입

에지의미
RUNS_ON서비스가 호스트에서 실행 중
OWNS계정이 크리덴셜 소유
AUTHENTICATES_TO크리덴셜이 호스트 또는 서비스에 인증
EXPLOITS발견이 취약점 익스플로잇
DETECTSDefenseAction이 발견의 기법 탐지
MITIGATESDefenseAction이 취약점 완화
RESPONDS_TODefenseAction이 발견에 응답
LATERAL_TO호스트가 호스트로 피벗 (크리덴셜 또는 기법 귀속 포함)

에이전트가 사용하는 도구

그래프는 KGMiddleware를 통해 에이전트에 노출되며, 미들웨어는 부착되는 역할마다 두 개의 도구를 빌드해 공유 KGStore (packages/decepticon/decepticon/middleware/kg_internal/)로 디스패치합니다:
도구목적
kg_record(observations)노드와 에지의 원자적 배치 쓰기. 미들웨어가 인게이지먼트 라벨을 검증하고, 스키마 제약을 적용하며, 호출을 단일 트랜잭션으로 감싸므로 부분 쓰기가 그래프를 손상된 상태로 남기지 않습니다.
kg_ingest(scanner_kind, path)스캐너 어댑터 레지스트리로의 디스패처 — nmap_xml, sarif, bloodhound_zip, slither_json, 그리고 모든 플러그인 등록 스캐너. 파일을 읽고 파싱한 뒤 kg_record와 동일한 원자적 쓰기 경로로 노드/에지 관측을 발행합니다.
에이전트는 프롬프트에 원시 Cypher를 절대 작성하지 않습니다. 읽기 경로는 미들웨어의 타입화된 요약 프로젝션(ATT&CK 조회는 Skillogy)을 거치고, 쓰기 경로는 kg_record / kg_ingest를 거칩니다. 이것으로 인게이지먼트 스코프, 스키마 검증, 마이그레이션 런너 계약이 중앙화되어 버그가 있는 전문가가 그래프를 손상시킬 수 없습니다. 미들웨어 이전의 독립형 @tool 함수(kg_add_node, kg_add_edge, kg_query, kg_neighbors)는 전환 호출자용으로 decepticon.tools.research.tools에서 여전히 임포트 가능하며 DeprecationWarning을 발생시킵니다. 새 코드는 KGMiddleware를 부착하고 미들웨어가 빌드한 표면을 사용해야 합니다.

운영자 접근

그래프는 운영자에게도 노출됩니다:
  • 브라우저: 온보딩 마법사의 크리덴셜로 http://localhost:7474의 Neo4j 브라우저.
  • CLI: decepticon kg-health는 진단을 실행하고 고아 노드 또는 누락된 관계를 표시합니다.
  • 웹 대시보드: Next.js 대시보드의 공격 그래프 캔버스는 라이브 작전 그래프를 렌더링합니다.

산출물로서의 그래프

작전 최종 보고에서 그래프는 산출물의 일부가 됩니다. 블루팀이 받는 것:
  1. 모든 노드와 에지의 JSON 내보내기.
  2. 그래프에서 파생된 ATT&CK Navigator 레이어.
  3. “블루 스팟” 오버레이 — 작전이 발견했지만 고객의 기존 탐지가 커버하지 않는 취약점.
  4. “레드 스팟” 오버레이 — Decepticon의 행동에 대해 발화한 탐지, SOC가 작동함을 증명.

프라이버시 및 OPSEC

그래프는 작전 범위입니다. 작전 중에 캡처된 고객 데이터 (크리덴셜 문자열, 서비스 배너, 민감한 경로)는 Neo4j에서 미사용 암호화되고 산출물에 명시적으로 유지되지 않으면 작전이 종료될 때 삭제됩니다.
작전 중에 그래프를 쿼리하는 것은 가장 높은 레버리지를 가진 운영자 행동 중 하나입니다. MATCH (a:Account)-[:OWNS]->(c:Credential)-[:AUTHENTICATES_TO]->(h:Host) WHERE NOT (h)-[:RESPONDS_TO]-() RETURN h과 같은 Cypher 쿼리는 블루팀이 탐지하지 않은 도달 가능한 모든 호스트를 찾습니다.

오펜시브 백신 파이프라인

Detector와 Patcher 에이전트가 DefenseAction 노드를 어떻게 생성하는지.