Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Purple-Team-Automation — AD 랩을 대상으로 자동화된 적대자 에뮬레이션(Caldera)을 수행하여 Sigma 탐지 커버리지를 검증하고 결과를 MITRE ATT&CK에 매핑합니다. | Kitploit
도구/GitHubGitHub/joshuagodwin7929/purple-team-automation
Post-ExploitationPenetration TestingCommand and ControlThreat IntelligenceRed TeamingIncident ResponseLog AnalysisAdversarial AttackLabs & Practice

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
GitHubjoshuagodwin7929/purple-team-automation

Purple-Team-Automation

AD 랩을 대상으로 자동화된 적대자 에뮬레이션(Caldera)을 수행하여 Sigma 탐지 커버리지를 검증하고 결과를 MITRE ATT&CK에 매핑합니다.

저장소 보기
13172일 전아직 검토되지 않음
공유

Purple-Team-Automation

detection-as-code-repo에서 구축한 Sigma 탐지 규칙에 대한 자동화된 퍼플팀 검증으로, MITRE Caldera를 사용하여 기존 도메인 랩을 대상으로 연쇄적인 Active Directory 자격 증명 접근 공격 경로를 실행하고, ATT&CK Navigator 히트맵으로 커버리지를 시각화합니다.

Atomic Red Team 대신 Caldera를 선택한 이유

이 프로젝트에서 Atomic Red Team 대신 Caldera를 선택한 이유는, 단일하고 고립된 기법 실행이 아니라 에이전트, 적대자 프로필, 연쇄적인 다단계 작업을 갖춘 완전한 C2 프레임워크를 제공하기 때문입니다. 이는 이 프로젝트의 목표와 더 밀접하게 부합합니다: 단순히 "이 하나의 기법이 탐지되었는가"가 아니라, "현실적이고 순서가 정해진 공격 체인이 우리의 현재 탐지 스택을 처음부터 끝까지 견뎌내는가"입니다.

저장소 구조

root@kitploit:~
Purple-Team-Automation/
├── abilities/                          사용자 정의 Caldera ability YAML
├── adversary-profiles/                 작업에 사용된 연쇄 적대자 프로필
├── validation/                         기법별 Kibana 증거 + LLMNR 알려진 격차 문서
├── attack-navigator-heatmap.json       ATT&CK Navigator 레이어, mitre-attack.github.io/attack-navigator에서 로드
├── purple-team-automation-report.md    전체 문서: 범위, 방법론, 결과, 격차 분석
└── README.md                           이 파일

구축한 내용

인프라

기존 AD 도메인 랩과 동일한 랩 네트워크에 있는 별도의 Ubuntu VM(caldera-server, 192.168.18.205)에 Docker Compose를 통해 전용 Caldera 서버를 배포하여, ELK/SIEM 스택과 격리되도록 유지했습니다. Caldera v5.0.0은 기본적으로 2000개의 내장 ability와 29개의 내장 적대자를 갖추고 시작되었습니다.

과정에서 근본 원인을 파악한 빌드 문제:

  • 초기 빌드가 완료된 것처럼 보였지만 이미지를 조용히 생성하지 않아, 클린 재빌드를 해야 했습니다.
  • 컨테이너가 사전 빌드된 Vue 프론트엔드(plugins/magma/dist/assets/) 누락으로 크래시 루프에 빠졌습니다. 이는 docker-compose.yml의 전체 디렉터리 Docker 볼륨 마운트가 이미지의 컴파일된 프론트엔드를 컴파일되지 않은 호스트 소스로 덮어쓰기 때문임을 추적했습니다. 전체 디렉터리 마운트를 제거하여 수정했습니다.
  • 컨테이너 런타임에 프론트엔드를 재빌드하려 했지만, Dockerfile이 최종 이미지를 슬림하게 유지하기 위해 이미지 빌드 후 npm/nodejs를 의도적으로 제거하기 때문에 실패했습니다.
  • 마침내 로그인이 작동한 후에도 UI는 여전히 작동하지 않았습니다. 컴파일된 프론트엔드에는 localhost:8888이 API 베이스로 하드코딩되어 있었는데, 이는 Vue 빌드 시점에 plugins/magma/.env(VITE_CALDERA_URL)를 통해 박혀 있으며, conf/local.yml의 런타임 app.frontend.api_base_url 설정으로는 제어되지 않습니다. .env를 VM의 실제 IP로 편집하고 재빌드하여 수정했습니다.
  • 별도의 디스크 공간 실패도 겪었는데, 이는 LVM 논리 볼륨이 VM에 할당된 디스크의 절반만 사용하고 있기 때문임을 추적했습니다. lvextend -l +100%FREE + resize2fs로 수정하고, docker system prune -a --volumes로 빌드 캐시 레이어를 회수했습니다.

사용자 정의 ability

Stockpile은 LSASS/Mimikatz 기반 자격 증명 덤프(T1003.001)에 대한 네이티브 ability만 제공합니다. 이 프로젝트에 필요했던 네 가지 기법인 Kerberoasting, AS-REP Roasting, Password Spraying, DCSync는 모두 Impacket(GetUserSPNs.py, GetNPUsers.py, secretsdump.py)과 Kerbrute를 기반으로 제가 직접 구축한 사용자 정의 ability가 필요했습니다. Stockpile의 기존 Kerberoasting ability(Rubeus, WinPwn)는 Windows/.NET 전용이며 이 랩의 Linux 기반 Sandcat 에이전트와 호환되지 않기 때문입니다.

이를 작성하는 동안 두 가지 빌드 문제에 부딪혔습니다:

  • Caldera v5의 실제 ability 스키마는 source/edge/target 필드를 가진 용도별 도구별 파서 모듈(예: plugins.stockpile.app.parsers.katz)을 사용하며, 제가 원래 가정했던 일반 정규식 pattern 파서가 아닙니다. 이로 인해 로드 시 조용한 TypeError('ParserConfig.__init__()')가 발생했습니다. 원시 Impacket 출력에 대한 내장 파서가 존재하지 않으므로, 네 가지 ability 모두에서 parsers: 블록을 완전히 제거했습니다. 결과는 원시 출력/해시 파일로 캡처되어 Kibana에 대해 수동으로 검증됩니다(/validation 참조).
  • 제 ability YAML 중 두 개(password spray, DCSync)가 nano 붙여넣기가 조용히 실패한 후 초기에 0바이트 파일로 저장되었습니다. 컨테이너를 재시작하기 전에 모든 파일을 cat/wc -l로 점검하여 이를 발견했습니다.

에이전트 배포

Kali VM(192.168.18.70)에 Sandcat 에이전트(Linux, 그룹 red)를 배포했으며, OPSEC 위장을 위해 프로세스 이름 splunkd를 사용했고, proc/sh 실행기로 root 권한으로 실행되며 활성 상태이고 신뢰할 수 있음을 확인했습니다.

적대자 프로필 및 작업

기회주의적 내부 공격자가 일반적으로 시도할 순서대로 네 가지 사용자 정의 ability를 연쇄하는 AD Credential Access Chain 적대자 프로필을 구축했습니다:

root@kitploit:~
    → Password Spray (Kerbrute)
    → Kerberoasting (GetUserSPNs.py)
    → AS-REP Roasting (GetNPUsers.py)
    → DCSync (secretsdump.py)

LLMNR/NBT-NS 포이즈닝(T1557.001)은 Caldera 프로필에서 의도적으로 제외했습니다. 이유와 이것이 여전히 알려진 격차 음성 대조군으로 포함되는 방식은 validation/llmnr-known-gap.md를 참조하세요.

결과

실행된 네 가지 기법 모두 detection-as-code-repo의 Sigma 규칙에 대해 탐지가 확인되었으며, Kibana에서 직접 교차 검증했습니다. LLMNR/NBT-NS 포이즈닝은 문서화된 미해결 격차로 남아 있습니다.

기법상태
T1110.003 – Password Spraying🟢 탐지됨
T1558.003 – Kerberoasting🟢 탐지됨
T1558.004 – AS-REP Roasting🟢 탐지됨
T1003.006 – DCSync🟢 탐지됨
T1557.001 – LLMNR/NBT-NS Poisoning🔴 격차

전체 세부 정보: validation/detection-results.md 전체 문서: purple-team-automation-report.md 대화형 히트맵: attack-navigator-heatmap.json

다음 단계

  1. Sysmon 구성을 수정하여(Event ID 3 및 22 활성화) LLMNR 격차를 해소합니다.
  2. LLMNR/NBT-NS 포이즈닝에 대한 새로운 Sigma 규칙을 작성하고 튜닝합니다.
  3. 이 작업을 다시 실행하여 수정을 확인하고 히트맵을 업데이트합니다.
  4. 더 넓은 SOC 프로젝트 로드맵(Project D 및 그 이후)에 반영됩니다.
도구 다운로드