針對微軟活動目錄(AD)的七大高級***技術及相應檢測方法

一、概述

在過去的許多年中,對微軟活動目錄(Microsoft Active Directory)的***一直都是Black Hat和Defcon會議關注的一大重點。演講者們不斷講解新的***角度,分享他們的發現,同時也提出檢測方法和防禦方案。根據這些已有的信息,我認爲IT部門已經完全可以構建一個安全的基礎架構,並且該架構可以由安全部門來進行監控。但是,如果想要進行高質量的監控,那麼還需要有良好的工具。這其實就像是一個軍事基地:只在其周圍建起守衛塔還不夠,還需要派一些戰士在守衛塔上面持續監控。

二、六個不容忽視的***方式

2.1 哈希值傳遞

這種***方法受到NTLM架構的限制,NTLM是微軟在20世紀90年代發佈的一種身份驗證協議。要登陸到遠程主機,需要存儲在計算機上的密碼哈希值,用於身份驗證過程。該哈希值可以從計算機上提取出來。

2.2 Mimikatz

爲了實現這一目的,法國的研究者Benjamin Delpy在2014年開發了Mimikatz,該實用程序允許從計算機內存中轉儲明文密碼和NTLM哈希值。

2.3 暴力破解

如果無法實現從主機提取憑據,那麼***者也可以選擇粗暴但是有效的密碼猜測技術。

2.4 net user/domain

在進行***之前,***者實際上需要一個用戶名字典。當任何域成員執行net user /domain命令之後,該命令就會返回AD域用戶的完整列表。

2.5 Kerberoasting***

如果域使用了Kerberos作爲身份驗證協議,那麼***者就可以嘗試進行Kerberoasting***。在域上進行身份驗證的任何用戶,都可以請求Kerberos Ticket,用於訪問服務(票證授予服務Ticket Granting Service)。TGS使用運行服務用戶的密碼哈希值進行加密。***者在請求TGS後,就可以對TGS進行離線的暴力破解,這一暴破過程不會受到任何阻止。如果成功,***者將獲得運行服務賬戶的密碼,而這一賬戶通常爲特權賬戶。

2.6 PSEXEC

在***者獲得所需憑據之後,下一步就是要遠程命令執行。使用Sysinternals中的PsExec實用程序可以輕鬆實現,這個實用程序非常有效,受到廣大IT管理員和廣大***的青睞。

三、盤點七大高級***技術

現在,我們將盤點7種能夠實現Active Direction完全控制的******方法。下圖展現了***的四個步驟,而其中的每一步都對應着一套方法。

讓我們首先從偵查(Reconnaissance)開始。

3.1 PowerView

PowerView是PowerSploit中的一部分,PowerSploit是一個用於***測試的PowerShell框架。PowerView支持Bloodhound,這是一種在AD中能對連接對象進行圖形展現的工具。

使用Bloodhound,可以實現以下內容:

1、查找所有域管理員賬戶;

2、查找登錄到主機的域管理員;

3、使用域管理會話,查找從***者主機到目標主機的最短路徑。

上面的第三條也說明,***需要對主機進行***,才能進入域管理員賬戶。這種方法顯著減少了***者對域獲得完全控制所需要的時間。

PowerView與允許在AD對象(例如net.exe)上獲取數據的內置使用程序之間存在區別,其區別在於PowerView使用的是LDAP,而不是SAMR。要檢測這一活動,我們可以藉助域控制器事件1644。通過在註冊表中添加相關值,可以啓動該事件的記錄:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNTDSDiagnostic\15 Field Engineering = 5

請注意,可能存在多種此類事件。同時,還有另外的一種方法,就是分析流量。由於LDAP是一種明文協議,因此所有查詢都在流量中有所體現。

該框架的另一個特性,是它僅使用PowerShell,並且不具有依賴關係。此外,PowerShell v5版本包含了一個高級審計選項,在實際檢測工作中非常有用。事件4104中包含腳本內容,可以在其中搜索特定於PowerView的函數名稱。

3.2 SPN掃描

這個實用程序可以替代Nmap。在***者知道AD中存在哪些用戶和哪些組之後,他還需要有關服務的信息,這樣才能對***目標具有一個全面的瞭解。

通常,使用Nmap掃描端口可以得到這樣的信息。但由於這些信息已經存儲在AD中,所以***者直接從AD檢索即可。查詢結果如下所示:會返回包含服務類的服務主體名稱SPN(該服務類針對每種服務類型是唯一的)、FQDN格式的主機名稱和某些服務的端口。

有關SPN的完整列表,請參閱 https://adsecurity.org/?page_id=183 。

要檢測SPN掃描,可以使用LDAP事件審覈。

SPN掃描具有明顯優於Nmap的優點,也就是準確度較高。使用Nmap時,需要連接到每個主機,並且將數據包發送到指定範圍的端口,而SPN列表只是一個查詢的結果。

3.3 遠程會話枚舉

在橫向移動階段,有一個重要的任務,就是將用戶與他們所登陸的計算機相匹配。***者這個時候已經擁有了用戶憑據(哈希值或Kerberos Ticket),同時已經搜索到受漏洞影響的主機或具有域管理員會話的主機。

在這兩種情況下,***者的後續動作都會是:尋找可***目標 —> 對任意主機成功*** —> 上傳Mimikatz —> 獲得所需信息。

要檢測此方案是否被使用,可以查詢這兩個事件:4624-成功登陸到遠程系統(登錄類型3)和命名管道爲“srvsvc”的訪問網絡共享IPC$事件。

在左圖中的紅色標出部分,展示了SMB連接,隨後連接到管道“srcsvc”。該管道允許通過服務器服務遠程協議進行交互。終端主機從管道接收各種管理信息,例如,可以是NetSessEnum的請求。這一請求會返回使用其IP地址和名稱登錄到遠程系統的完整用戶列表。

通過MaxPatrol SIEM可以實現基於這兩個事件與srvsvc相關性進行的檢測。PT Network Attack Discovery可以基於流量分析進行類似的檢測。

3.4 Overpass-the-Hash

***方式

Overpass-the-Hash實際上是Pass-the-Hash的升級版本。***者可以使用獲得的NTLM哈希值進行Pass-the-Hash***。但由於這種***方式已經被大家知曉,並且容易被發現。所以產生了一種新的***向量——Overpass-the-Hash。

Kerberos協議專門用於防止用戶密碼通過任何方式在網絡上發送。爲避免這種情況,用戶會在自己的計算機上使用密碼哈希值來加密認證請求。密鑰分發中心(Key Distribution Center,在域控制器上運行的特殊服務)會回覆一個Ticket,以獲取其他Ticket,因此這一過程也被稱爲票據授予票據(TGT,Ticket-Granting Ticket)。在完成這一過程之後,客戶端的身份驗證通過,並且在之後的10小時內都可以請求訪問其他服務的Ticket。因此,如果***者對處於目標服務(例如ERP系統或數據庫)的可信組中的用戶的哈希值進行轉儲,那麼***者就可以自行發出Ticket,併成功登錄到目標服務。

檢測方法

如果***使用PowerShell版本的Mimikatz進行***,那麼日誌中的腳本信息將會有所幫助,因爲Invoke-Mimikatz的特徵非常明顯。

另一個檢測手段,就是通過事件4688-創建一個對命令行進行擴展審計的進程。即使***者對二進制文件進行重命名,在命令行中也會包含命令,這對於Mimikatz來說非常有效。

如果要通過分析流量來檢測Overpass-the-Hash***,可以使用以下線索:Microsoft建議在現代的域中使用AES256加密方法對身份驗證請求進行加密,而Mimikatz發送的身份驗證請求數據都是採用過時的加密方式ARCFOUR對數據進行加密的。

另外的一個特徵是,Mimikatz發出的密鑰算法套件(Cipher Suite)與合法域的套件不同,可以將此作爲流量中的分析依據。

3.5 黃金票據

***方式

黃金票據(Golden Ticket)是一個流行的***方法。

***者可以從名爲krbtgt的特殊賬戶中獲取密碼的哈希值。回顧用戶密碼哈希值用於簽署所有TGT的過程,我們發現在這一過程中,無需向密鑰分發中心進行尋址。由於Golden Ticket實際上就是一個TGT,因此***者可以生成這一Ticket。隨後,***者可以向AD中的任何服務無限次發送身份驗證請求,最終能夠不受限制地訪問目標資源。這也就是“黃金票據”這一名稱的由來。

檢測方法

事件4768是“TGT授予”,事件4769是“已授予AD中某些服務進行身份驗證所需的服務Ticket”。

在這種情況下,我們可以推測出正常行爲與***行爲之間的差異。儘管Golden Ticket不從域控制器中請求TGT(因爲它自身就生成TGT),但是它必須要請求TGS。因此,如果我們發現獲得的TGT和TGS有所不同,那麼就能判斷出正在受到Golden Ticket***。

MaxPatrol SIEM使用列表,記錄所有已經發出的TGT和TGS,從而實現對該***方法的檢測。

3.6 WMI遠程執行

***方式

***者在目標主機進行身份驗證和獲得授權後,就可以遠程執行任務。WMI是一個系統中的內置機制,非常適合這種場景。在過去的幾年中,WMI被***者普遍使用,其原因就在於WMI具有模仿合法活動的能力。

下圖演示了系統內置實用程序wmic的使用過程。***者向該實用程序提供要連接的主機地址、憑據、進程調用Create Operator以及要在遠程主機上執行的命令。

檢測方法

通過檢查遠程登錄事件4624,可以有效發現這類***。其中,一個重要的參數是登錄ID。此外,還需要關注事件4688,該事件是“命令行創建進程”。在示例中,事件4688顯示,創建的進程其父進程是WmiPrvSE.exe,這是一個用於遠程管理的特殊WMI服務進程。我們可以看到發送的命令net user / add以及Logon ID,它與事件4624中的記載相同。由此,我們就可以準確地判斷出該命令是從哪個主機下發的。

同樣,也有基於流量分析的檢測方法,我們以實際樣本爲例。

我們可以清楚地看到Win32進程創建的關鍵詞,以及它將要執行的命令行。下圖所示的惡意軟件與WannaCry以相同的方式分佈在虛擬網絡上,但後者並不是進行加密,而是執行了挖礦。惡意軟件使用Mimikatz和EthernalBlue漏洞,對賬戶進行轉儲,並使用其登錄到網絡上可以訪問的主機。通過WMI,惡意軟件在這些主機上運行PowerShell,並且下載了PowerShell Payload,其中包含Mimikatz、EthernalBlue和挖礦程序。

安全建議

1、針對服務的賬戶,設置複雜的長密碼(建議25位以上),這樣***者就無法進行Kerberoasting***,因爲理論上無法暴力破解此類密碼。

2、啓用PowerShell日誌記錄,有助於發現各類用於***AD的現代化工具。

3、將操作系統升級到Windows 10和Windows Server 2016。Microsoft在新版本操作系統中增加了名爲Credential Guard的安全機制,可以有效防止對NTLM哈希值和Kerberos Ticket的轉儲。

4、實施基於角色的訪問控制。如果將AD、DC、服務器和工作站管理員的權限都分配給同一個角色,無疑是有風險的。

5、每年進行兩次AD管理員更換,在更換的同時重置krbtgt(用於簽署TGT的賬戶)密碼兩次。其中,更改密碼兩次非常重要,因爲系統會同時存儲當前密碼和先前密碼。假設網絡受到***,並且***者已經得到了Golden Ticket,更改密碼會使***者的Ticket無效,必須要再次暴力破解密碼。

6、使用及時更新數據庫的安全防護工具,有助於發現當前正在進行的***行爲。

3.7 DCShadow

***方式

2018年1月24日,Benjamin Delpy和Vincent Le Toux在以色列的Microsoft BlueHat上發佈了一個新的Mimikatz模塊,用於實施DCShadow***。其***思路是,創建一個惡意域控制器,來複制AD域中的對象。研究人員定義了要進行成功複製所需要的最小Kerbero SPN集——只需要兩個SPN。此外,他們還展示了一個特殊功能,可以進行強制複製。研究人員聲稱這種***方式無法被SIEM發現,一個僞造的域控制器不會向SIEM發送事件。這樣一來,***者就可以在不爲人知的情況下,使用AD和SIEM進行各種後續***操作。

***方案如下:

這種方案,需要將兩個SPN添加到發送***的系統中。其他域控制器需要這些SPN使用Kerberos進行身份驗證以進行復制。由於規範中將域控制器表示爲AD基類中的nTDSDSA類對象,因此應該創建這樣的對象。最後,複製將由DRSReplicaAdd函數觸發。

檢測方法

下圖是DCShadow在流量中的示例。通過對流量進行分析,我們可以清楚看到將新對象添加到域控制器方案,然後觸發複製的過程。

儘管發現該***方法的研究人員表示SIEM無法檢測此類***,但我們還是找到了一種方法,能夠發現網絡上的可疑活動。

我們的關聯中有一個合法的域控制器列表,它將在每次從域控制器進行復制時觸發,而域控制器不在這個白名單之中。因此,安全人員可以進行調查,從而確認域控制器是由IT服務合法添加,還是遭受了DCShadow***後被添加。

DCShadow的***方式展現了一個新的***維度,也告訴我們,在信息安全的海洋中,防禦者要時刻努力保持領先地位,展望未來,並能針對威脅迅速地採取行動。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章