개요
Decepticon 에이전트는 하드코딩된 플레이북으로 작동하지 않습니다. 스킬 시스템 — 에이전트 역할별로 조직되고 MITRE ATT&CK 식별자가 태그된 큐레이션된 오펜시브 기법 라이브러리에서 역량을 끌어옵니다.프로그레시브 디스클로저
스킬은 에이전트 컨텍스트 윈도우를 깨끗하게 유지하기 위한 프로그레시브 로딩 아키텍처를 사용합니다:- 초기 로드 — 스킬 프론트매터(이름, 설명, allowed-tools, 메타데이터)만 로드
- 온디맨드 — 에이전트가 스킬을 선택하면
read_file()을 통해 전체 내용이 로드 - 클린 컨텍스트 — 에이전트는 현재 목표에 필요한 상세 정보만 보유
이는 컨텍스트 비대화를 방지합니다. 초기 접근을 수행하는 에이전트는 측면 이동 기법의 전체 내용이 필요 없습니다 — 존재 여부와 메타데이터만 있으면 됩니다.
스킬 카테고리
스킬은 에이전트 역할별로 조직되어 있습니다. 이를 통해 오케스트레이터가 디스패치하는 전문가와 관련된 스킬만 로드하면서도 전체 공격 사이클을 다룰 수 있습니다. 라이브러리는 현재 다음 17개 카테고리를 배포합니다:| 카테고리 | 소유 에이전트 | 커버리지 |
|---|---|---|
soundwave/ | Soundwave | RoE / ConOps / OPPLAN 템플릿, 위협 프로필, 디컨플릭션 |
decepticon/ | Decepticon (오케스트레이터) | OPPLAN 디스패치 패턴, 서브에이전트 라우팅 |
recon/ | Recon | 수동 정찰, 능동 정찰, 웹 정찰, 클라우드 정찰 |
osint/ | OSINT Operator | 오픈소스 인텔리전스 — 유출 자격증명, 침해 데이터, 공개 흔적 |
exploit/ | Exploit | 웹 익스플로잇, Active Directory 초기 접근 |
post-exploit/ | Post-Exploit | 권한 상승, 측면 이동, 지속성 |
ad/ | AD Operator | BloodHound, Kerberoasting, 티켓 위조, ACL 남용 |
cloud/ | Cloud Hunter | IAM 분석, 메타데이터 남용, 클라우드 키 추출 |
contracts/ | Contract Auditor | Solidity 정적 분석, Foundry PoC 하네스 |
reverser/ | Reverser | 바이너리 분류, 팩커 탐지, ROP 가젯, Ghidra/radare2 |
phisher/ | Phisher | 컨텍스트 인지 페이로드 생성, 랜딩 페이지, 하베스터 스캐폴드 |
mobile/ | Mobile Operator | iOS / Android 앱 트리아지, MASTG 검증, 에뮬레이터 기반 동적 분석 |
wireless/ | Wireless Operator | 802.11 / Bluetooth / SDR 정찰 및 익스플로잇 |
iot/ | IoT Operator | 임베디드 펌웨어 추출, JTAG/UART, 프로토콜 리버싱 |
ics/ | ICS Operator | 격리된 테스트 레인지의 SCADA / DCS / PLC 인게이지먼트 워크플로 |
supply-chain/ | Supply-Chain Operator | 빌드 시스템, 의존성, 서명 키, CI/CD 침해 패턴 |
dfir/ | Forensicator | 휘발성 데이터 수집, 타임라인 재구성, IOC 피벗 |
analyst/ | Analyst | 교차 상관, 지식 그래프 쿼리, 내러티브 초안 |
shared/ | 모든 에이전트 | OPSEC, 방어 회피, 발견 프로토콜, 적대자 에뮬레이션, 레퍼런스, 스텔스 인프라 |
scanner, detector, verifier, patcher, exploiter)는 번들 로드 시 별도의 plugins/ 트리에서 스킬 카탈로그를 가져옵니다.
프로그레시브 디스클로저 로더는 능동 위협 프로필과의 ATT&CK 겹침에 따라 이 카탈로그를 필터링합니다 — 프로필 외 스킬은 에이전트의 작업 세트에서 완전히 제외됩니다.
Skillogy: 그래프 기반 스킬 리졸버
위 카탈로그는 **디스크 상의 단일 출처(source of truth)**입니다. 에이전트가 실제로 쿼리하는 카탈로그는 별도의 Neo4j 기반 그래프에 살며, 독립 실행형 Skillogy 서비스가 소유합니다. 왜 그래프이며, 단순히 디렉토리 트리에 대한read_file()이 아닐까요?
- 스킬은 서로를 참조합니다 —
kerberoasting은ad-recon위에 빌드되고ticket-forging으로 연결됩니다. 그래프를 사용하면 에이전트가 이러한 엣지를 따라 이동할 수 있습니다. - ATT&CK ID, 태그, 하위 도메인, tactic ID로 필터링하려면 파일시스템 워킹으로는 저렴하게 답할 수 없는 인덱스 조회가 필요합니다.
- 여러 에이전트가 동시에 읽습니다; 그래프가 일관성을 중앙화하고 파일 캐시 경쟁을 피합니다.
9100), 세 가지 에이전트-facing 도구를 제공하고, 모두 SkillogyMiddleware를 통해 노출되는 얇은 REST 클라이언트입니다:
| 도구 | 기능 |
|---|---|
find_skill(query?, subdomain?, mitre_id?, tag?, tactic_id?, limit=20) | AND-결합 관계 인식 발견. 일치하는 :Skill 노드를 프론트매터와 함께 반환 — 본문은 지연 로드. |
load_skill(name_or_path) | 한 :Skill 노드의 전체 본문 + 프론트매터를 가져옴. 이전과 동일한 프로그레시브 디스클로저 원칙, REST를 통해. |
traverse(from_path, edge_types?, depth=2) | 시드 스킬에서 명시적 그래프 BFS — BUILDS_ON, CHAINS_TO, MITRE_RELATED 엣지를 따라 인접 기법을 발견. |
강제 ACL (ADR-0008)
Skillogy는 평탄한 카탈로그가 아닙니다. 각 에이전트 역할은 오케스트레이터가 보여주려는 슬라이스만 봅니다 —ad_operator는 contracts/ 스킬을 탐색할 수 없어야 하고, contract_auditor는 ad/를 읽을 수 없어야 합니다. ADR-0008은 이것을 소프트 컨벤션이 아닌 **강제 ACL(hard ACL)**로 배선했습니다: 모든 Skillogy 호출은 allowed_path_prefixes 파라미터(예: ["skills/standard/ad/", "skills/shared/"])를 함께 보내며, 서비스는 쿼리 레이어에서 prefix 외부 항목을 거부합니다. 교차 역할 읽기는 요청된 스킬이 skills/shared/ 아래에 있을 때만 성공합니다.
ACL은 (모델이 아닌) 에이전트 팩토리가 설정하므로, 전문가가 프롬프트 인젝션으로 자신의 시야를 넓히도록 설득될 수 없습니다.
파일 카탈로그와 그래프의 동기화
디스크의 스킬 파일이 단일 출처입니다. Skillogy 서비스는 컨테이너 시작 시(또는 명시적 재빌드 호출 시) 이를 수집해 프론트매터에서 파생된 타입 엣지로 연결된:Skill 노드로 Neo4j에 투영합니다. 스킬 추가는: 적절한 카테고리 디렉토리에 SKILL.md를 드롭하고, 그래프를 재빌드하면, ACL이 해당 prefix를 허용하는 모든 에이전트에게 나타납니다.
MITRE ATT&CK 통합
ATT&CK 매핑은 사후 추가가 아닌, Decepticon의 모든 레이어에 직조되어 있습니다:목표
각 OPPLAN 목표는
mitre 기법 ID를 보유합니다 (예: T1190, T1003.001).스킬
ATT&CK 기법이 스킬 프론트매터에 선언되어, 에이전트의 스킬 카탈로그에 인라인으로 표시됩니다.
위협 행위자
ConOps는
initial_access와 ttps를 ATT&CK ID로 정의하여, 특정 적대자 프로파일을 모델링합니다.스킬 프론트매터 예시
각 스킬은SKILL.md (프론트매터 + 본문) 및 선택적 references/, scripts/, assets/ 서브디렉토리를 포함하는 디렉토리입니다.
멀티 모델 라우팅
다양한 에이전트 역할이 최적의 모델 티어에 어떻게 라우팅되는지 알아보세요.
