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

왜 그래프인가

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

노드 타입

에지 타입

에이전트가 사용하는 도구

그래프는 KGMiddleware를 통해 에이전트에 노출되며, 미들웨어는 부착되는 역할마다 두 개의 도구를 빌드해 공유 KGStore (packages/decepticon/decepticon/middleware/kg_internal/)로 디스패치합니다: 에이전트는 프롬프트에 원시 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 노드를 어떻게 생성하는지.