> ## Documentation Index
> Fetch the complete documentation index at: https://docs.decepticon.red/llms.txt
> Use this file to discover all available pages before exploring further.

# 지식 그래프

> 일시적 발견을 쿼리 가능한 작전 기록으로 변환하는 Neo4j 기반 공격 그래프.

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

## 왜 그래프인가

공격 경로는 본질적으로 그래프입니다. 피벗은 관계입니다; 크리덴셜은 계정과 호스트 사이의 에지입니다; 방어 브리프는 취약점을 탐지에 연결합니다. 이를 그래프로 모델링하면:

* 오케스트레이터는 \*"이 크리덴셜에서 어떤 호스트에 도달할 수 있나?"\*를 대화 기록을 다시 읽지 않고도 한 번의 Cypher 쿼리로 쿼리할 수 있습니다.
* 방어자의 산출물은 PDF가 아닌 구조화된 그래프입니다 — 기존 탐지 커버리지에 쉽게 오버레이됩니다.
* 교차 작전 쿼리가 가능합니다: *"이 CVE는 이 고객에 대한 이전 작전에서 나타났나?"*

## 노드 타입

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

## 에지 타입

| 에지                 | 의미                              |
| ------------------ | ------------------------------- |
| `RUNS_ON`          | 서비스가 호스트에서 실행 중                 |
| `OWNS`             | 계정이 크리덴셜 소유                     |
| `AUTHENTICATES_TO` | 크리덴셜이 호스트 또는 서비스에 인증            |
| `EXPLOITS`         | 발견이 취약점 익스플로잇                   |
| `DETECTS`          | DefenseAction이 발견의 기법 탐지        |
| `MITIGATES`        | DefenseAction이 취약점 완화           |
| `RESPONDS_TO`      | DefenseAction이 발견에 응답           |
| `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에서 미사용 암호화되고 산출물에 명시적으로 유지되지 않으면 작전이 종료될 때 삭제됩니다.

<Tip>
  작전 중에 그래프를 쿼리하는 것은 가장 높은 레버리지를 가진 운영자 행동 중 하나입니다. `MATCH (a:Account)-[:OWNS]->(c:Credential)-[:AUTHENTICATES_TO]->(h:Host) WHERE NOT (h)-[:RESPONDS_TO]-() RETURN h`과 같은 Cypher 쿼리는 블루팀이 탐지하지 않은 도달 가능한 모든 호스트를 찾습니다.
</Tip>

<Card title="오펜시브 백신 파이프라인" icon="rotate" href="/ko/features/offensive-vaccine-pipeline">
  Detector와 Patcher 에이전트가 DefenseAction 노드를 어떻게 생성하는지.
</Card>
