close

一、前言

橫向滲透攻擊技術是復雜網絡攻擊中廣泛使用的一種技術,特別是在高級持續威脅(Advanced Persistent Threats,APT)中更加熱衷於使用這種攻擊方法。攻擊者可以利用這些技術,以被攻陷的系統為跳板,訪問其他主機,獲取包括郵箱、共享文件夾或者憑證信息在內的敏感資源。攻擊者可以利用這些敏感信息,進一步控制其他系統、提升權限或竊取更多有價值的憑證。借助此類攻擊,攻擊者最終可能獲取域控的訪問權限,完全控制基於Windows系統的基礎設施或與業務相關的關鍵賬戶。

在這份白皮書中,我們向大家介紹了如何在Windows Vista/7以及Server 2008系統中檢測基於NTLM和Kerberos協議的橫向滲透攻擊。Windows 10引入了許多額外的安全機制,因此我們准備單獨發布另一份白皮書,介紹如何檢測Windows 10中的橫向滲透攻擊。

微軟發布過一篇文章,文中介紹了憑證竊取攻擊的相關資料以及如何防範這類攻擊。除了本文介紹的防禦措施之外,我們強烈建議大家根據微軟給出的建議對系統進行加固。需要注意的是,這類攻擊不僅僅針對Windows系統,其他的基礎設施(如使用Kerberos的UNIX環境或單點登錄環境)也會受到類似攻擊的影響。雖然本文僅僅針對Windows系統提出了檢測橫向滲透攻擊的方法,大家可以舉一反三,在保存適當日誌的其他環境中使用類似方式檢測橫向滲透攻擊。

此外,感謝微軟MSRC(Microsoft Security Response Center,微軟安全響應中心)對本文內容的校對和細節驗證。

 

二、背景

2.1 什麼是Windows橫向滲透攻擊

在本文中,橫向滲透攻擊指的是攻擊者以某台Windows主機為跳板,利用已竊取的某個賬戶(如普通用戶或服務賬戶)的有效憑證,建立到目標Windows主機的連接。

源主機通常是目標Windows環境中的一台已被攻陷的主機。在大多數情況下,攻擊者會通過包含惡意附件的釣魚郵件或惡意網站鏈接,攻陷第一台主機作為跳板。一旦攻擊成功,攻擊者通常會通過命令控制(Command-and-Control,C2)服務器以及反彈的shell控制目標主機。權限提升成功後,攻擊者可以提取存儲在源主機中的憑證信息,開展後續的橫向滲透攻擊,其中包括:

1、獲取源主機的憑證信息

攻擊者可以通過定製工具,訪問Windows憑證存儲區或內存,以獲取任何有效的憑證信息(鍵盤記錄器也可以完成相同任務,但這不在本文的討論范圍內)。本文只討論與NT哈希和Kerberos憑證有關的內容。

攻擊者可能會獲取到被攻陷源主機中保存的任何憑證,比如那些正在使用的憑證、曾經使用過的憑證(比如已緩存的憑證)以及內存中尚未清除的憑證(未安裝更新時)。攻擊者最感興趣的是目標環境中的高權限賬戶憑證,比如幫助台(help-desk)賬戶、域管、高權限服務賬戶以及本地管理員賬戶,如果密碼被重復使用或者密碼生成算法是可預測的,那麼攻擊環境就更加理想。

2、通過竊取的憑證訪問其他主機或資源

成功竊取憑證後,攻擊者可以使用這些憑證訪問其他資源,比如其他主機或服務器(例如Exchange郵箱賬戶)。攻擊者所使用的技術包括基於NT哈希的哈希傳遞(pass-the-hash,以下簡稱PtH)攻擊以及基於Kerberos票據的票據傳遞攻擊(pass-the-ticket,以下簡稱PtT)。讀者可以參考附錄B中的[1][2][3],瞭解這些攻擊的更多細節。

以下是有關憑證竊取和重放攻擊的一些說明:

1、任何用戶訪問被攻陷的主機後,都可能在其內存中留下憑證信息,在未及時安裝補丁時,相關憑證會被攻擊者導出。Windows之所以在內存中緩存這些憑證,主要是為了提供諸如單點登錄(single-sign-on)的功能,在這種場景下:

(1)在受限管理模式下使用Network Logon或RDP方式登錄被控主機時,用戶賬戶憑證不會被洩露。

(2)其他登錄方式會暴露賬戶憑證,包括本地賬戶、域賬戶以及服務賬戶在內的憑證都會受到影響。讀者可以參考本文2.3節內容瞭解更多細節。

2、受影響的憑證不僅僅包括明文的用戶名和密碼,還包括NT哈希、Kerberos票據以及Kerberos密鑰,這些憑證可以被攻擊者用來請求Kerberos TGTs(Ticket Granting Ticket),作為有效憑證開展橫向滲透攻擊。

3、攻擊者需要管理員權限以訪問本地Windows憑證存儲區或內存中的憑證信息(例如Windows安全賬戶管理器、憑證管理器或者本地安全授權子系統服務進程(及LSASS.exe)中存儲的憑證)。如果當前賬戶權限較低,攻擊者可以通過本地提權漏洞獲取高權限。

4、橫向滲透攻擊的目標不單單是另一個工作站,也可以是其他資源,比如Exchange服務器上的郵箱或業務系統。

5、橫向滲透攻擊使用的是標准的協議,比如Kerberos和NTLM協議,這樣一來我們無法通過創建單條Windows事件或網絡入侵檢測系統(IDS)規則來檢測這類攻擊。

6、橫向滲透攻擊的一個優點就是攻擊者可以抓取憑證信息並在後續攻擊中使用。

7、不僅僅只有Windows會受到橫向滲透攻擊影響,其他使用單點登錄的身份認證協議都會面臨相同問題。任何單點登錄解決方案都需要以某種有效的方式保存憑證信息,以便在其他服務的認證過程中可以重復使用這些憑證。

2.2 使用橫向滲透攻擊的典型APT場景

通常情況下,APT攻擊會不斷從某個工作站連接到另一個工作站,以獲取越來越高的賬戶權限,直到他們得到域管賬戶的憑證為止。接下來攻擊者通常會訪問域控,導出Windows域中的所有憑證。

APT中使用橫向滲透攻擊的典型場景如下圖所示:

http://p5.qhimg.com/t01b5b6ab81bbe6d0af.png

圖1. APT攻擊中使用橫向滲透攻擊的典型場景

2.3 憑證緩存

就如上文所述,當用戶使用RDP方式連接工作站(RestrictedAdmin模式除外),或者在工作站中使用runas命令時,包括域用戶或者域管在內的憑證信息都會緩存在工作站的內存中。

以某個典型場景為例,當前有某個user1賬戶已經登錄到某台主機中,此時另一個user2賬戶(管理員)正在登陸同一台主機。在這種情況下,user2在主機中緩存的票據不僅對user1而言是可見的,對已經掌握該主機控制權的攻擊者而言也是可見的。user2在當前主機中緩存的Kerberos TGT票據情況如下表所示:

http://p5.qhimg.com/t01e0ca7f2415c9f20e.png

註:

[1] 如果user2正確注銷,則遠程主機上不會保存票據信息。

[2] 如果遠程會話沒有被正確關閉,那麼user2的票據就會保留在遠程主機中。

[3] 右鍵菜單中以管理員身份(user2)運行cmd.exe.

[4] 使用的是已緩存的域密碼,比如沒有接入域環境的筆記本電腦就屬於這種場景。

[5] 在以user2身份運行的命令提示符中,使用“net use”命令。

[6] 使用“net use \targetc$”命令,在彈出的對話框中輸入user2憑證信息。

[7] 在域控的日誌中會包含4768事件,但有趣的是user2的TGT票據並不會被緩存,相反的是,本地主機內存中會保存user1的一個CIFS服務票據,以便訪問共享文件夾。

需要注意的是,我們並沒有測試所有的登錄類型,但在某些場景下,高權限用戶(如user2)還是可以訪問工作站主機。微軟給出了一份更詳盡的資料,梳理了哪些可復用的憑證信息會暴露在目標主機中。

上表中,在Windows系統中,右鍵使用的“以管理員身份運行”功能時(會彈出UAC窗口),用戶會得到管理員所有的訪問令牌。如果管理員使用runas命令運行某個應用程序(如cmd.exe),情況會有所不同,具體情況如下:

1、右鍵使用“以管理員身份運行”運行應用程序時,程序退出後,已緩存的NT哈希以及票據仍然會保留在內存中;

2、使用“runas /user:\domuser2”命令時,程序退出後,內存中的憑證會被清除。

有趣的是,在最後一種場景中(即交互式登錄後,以管理員身份運行),netlogon服務並不需要重新輸入密碼!

對於上表的測試用例,有幾點情況需要說明:

1、所有的測試都基於非特權的交互式會話(即使用user1的控制台登錄)。

2、網絡登錄狀態沒有永久保持。

3、委派功能打開和關閉的情況下,我們都做了測試。

4、在注銷測試中,不管注銷過程中目標賬戶會話是被正確關閉還是被保留,測試結果都不變。

2.4 哈希傳遞與票據傳遞

橫向滲透測試中,使用哈希傳遞(Pass-the-Hash,以下簡稱PtH)或者票據傳遞(Pass-the-Ticket,以下簡稱PtT)時,情況會有所不同,具體如下表所示:

http://p4.qhimg.com/t016140270716e959a2.png

有幾個結論比較有趣,如:

1、攻擊者需要管理員權限以竊取憑證,但不需要管理員權限就能使用Kerberos票據。

2、密碼更改並不會導致Kerberos票據失效。

 

三、檢測Windows中的橫向滲透攻擊

3.1 通用法則

合法的SMB連接與使用PtH和PtT攻擊建立的連接並沒有什麼不同。事實上,攻擊者發動這類攻擊時並沒有利用協議的漏洞,因此,我們沒有預先定義的規則來檢測此類攻擊。

然而,攻擊者的攻擊行為會存在某些異常特徵。例如,如果某個域管賬戶(如my-admin)只能在某台特定的工作站中使用,那麼在其他工作站中使用這個域管賬戶就顯得非常可疑,意味著域環境中可能存在橫向滲透攻擊。

因此,我們有可能能通過監控Windows事件檢測橫向滲透攻擊。

我們用來檢測攻擊的主要法則為:

“如果檢測到用戶賬戶來自於不正常或非授權系統,或者在不正常或非授權系統中使用,我們判斷這種情況下存在橫向滲透攻擊”。

我們需要注意以下幾點:

1、這條法則並不能覆蓋所有的橫向滲透攻擊(某些特權賬戶的使用檢測起來比較困難)。因此,我們需要維護一張包含合法的“用戶/工作站/IP地址”三元組的列表,檢測不在此表中的賬戶使用情況。此外,單獨使用三元組列表並不能檢測所有的攻擊場景(比如,攻擊者發起的來自合法的用戶/工作站的資源訪問請求)。

2、這些法則能否有效應用,主要由已有的策略、活動目錄結構以及網絡隔離機制共同決定。我們需要制定策略,監控專用主機(如專用OU、管理員工作站)上賬戶的使用情況。我們手頭上必須維護一份包含這類工作站的清單。如果這些賬戶和工作站所使用的策略非常明確,那麼我們在檢測橫向滲透攻擊時的效率也會越高,也能避免誤報。網絡隔離機制將有助於識別橫向滲透攻擊,特別是對於Kerberos而言,這種隔離機制更加有效,因為Kerberos並沒有在相關日誌事件中提供具體的主機名信息。

3、為了檢測使用本地賬戶(如本地管理員)的橫向滲透攻擊,我們需要收集所有可能成為目標的工作站中的日誌(4624/4625事件),在某些情況下這個任務很難完成。但這對域賬戶來說不成問題,因為主要的Windows事件都存儲在域控上。微軟引入了兩個SID,通過設置GPO(Group Policy Object,組策略對象)規則,可以限制本地管理員賬戶在橫向滲透攻擊中的使用。

在本文後半部分中,我們會向讀者介紹使用PtH和PtT進行橫向滲透攻擊時所產生的日誌事件,以及我們可以設定哪些規則來檢測這些攻擊。

3.2 約定及假設

在本文重點關注的橫向滲透攻擊場景中,攻擊者使用了某個管理員賬戶(如ADMIN),從其他工作站(而不是ADMIN所屬的ADMIN-WS工作站)開始橫向滲透。所使用的規則可以稍微調整,以檢測其他攻擊場景(如使用服務賬戶或者其他特權賬戶進行攻擊)。

在本文的案例中,我們有幾個假設條件,如:

1、我們可以通過查詢活動目錄識別域管賬戶(命令為:net group “Domain Admins” /domain);

2、ADMIN屬於管理員組,熟悉環境的攻擊者可以挑選其他合適的命名約定;

3、管理員工作站可以通過以下方式識別:

(1)通過工作站的主機名識別。比如通過域中維護的OU(Organizational Unit,組織單元)或主機列表,或者通過命名約定(如admin-ws-1、admin-ws-2等)加以識別。

(2)通過IP地址識別。比如這些工作站具有專用的(V)LAN地址,或這些工作站為跳轉服務器,管理員在連接到其他系統前必須登錄這些工作站。

4、ADMIN-WS為ADMIN所屬的工作站或跳轉服務器。

3.3 檢測NTLM橫向滲透攻擊(PtH)

3.3.1 日誌中的相關事件

使用NTLM憑證時,本地以及域控(如果使用的是域用戶的話)上生成的所有日誌條目如圖2所示。詳細的日誌事件可參考6.1節內容。

http://p5.qhimg.com/t01fb882869782c29f1.png

圖2. 與NTLM憑證有關的事件

被攻陷的工作站(infected-ws)中會生成4648事件:“試圖使用顯式憑據登錄(A logon was attempted usingexplicit credentials)”。

所生成的日誌事件與攻擊者的具體操作有關。在這種場景中,攻擊者已經事先將NT哈希注入到目標主機中,之後通過“psexec.exe \Target cmd.exe”命令,打開目標主機上的命令提示符。讀者可以參考附錄C查看更多細節。

被攻陷的工作站的日誌對安全取證來說非常有用,但對主動檢測PtH攻擊來說用處不大。在這種場景中,我們可以從日誌中得知橫向滲透攻擊的目標主機(clean-ws)。

域控上的日誌中會生成兩個4776事件:“域控試圖驗證某個用戶憑證的有效性(The domain controller attempted to validate the credentials for an account)”。

第一個4776事件與域控對目標主機(clean-ws$)的驗證過程有關。這個事件對檢測PtH來說用處不大。

第二個4776事件表明,域控正在驗證某個賬戶(my-admin)的有效性,此時該賬戶正在訪問目標工作站(clean-ws$)。這個事件可以用作檢測橫向滲透攻擊是否存在的指示器,也是監控整個環境的關鍵要素。

目標主機(clean-ws)的日誌中會記錄4624事件:“成功登錄帳戶(An account was successfully logged on)”。

這個事件表明,目標賬戶(my-admin)已經成功登錄到目標工作站(clean-ws)。這個事件也可以用來檢測橫向滲透攻擊,但我們需要收集所有工作站上的所有特定日誌。如果工作站或服務器的數量不多,這個事件還是能發揮作用的。

無論如何,該事件與登錄失敗事件(4625事件)對於安全取證來說非常有用,因為我們可以通過這些事件瞭解登錄的類型(本例中為網絡登錄,Network logon),以及攻擊者從哪台主機(本例中為infected-ws)發起連接。

目標主機的日誌中會記錄4634/4647事件:“賬戶被注銷/用戶啟動注銷過程(An account was/initiated logged off)”。

這個事件表明攻擊者的注銷登錄動作。對於安全取證來說,這個事件非常有用,安全人員可以結合登錄ID值、4624事件以及這個事件,檢測攻擊行動的會話全流程。

3.3.2 通用檢測方法

這部分的內容是介紹我們在檢測NTLM型橫向滲透攻擊時,需要在各個主機中收集的事件,以及所需要關心的具體值。正如上文所述,我們需要重點關注域控(DC)上的4776事件,其他關鍵系統中的4624(登錄成功)以及4625(登錄失敗)事件也值得關注。

http://p1.qhimg.com/t015c69aec95ca95416.png

注意:不要忽視工作站事件日誌的重要性,特別是與敏感賬戶或者特權賬戶有關的那些事件日誌。

3.4 檢測Kerberos橫向滲透攻擊(PtT)

3.4.1 日誌中的相關事件

在Kerberos認證過程中,本地主機以及域控(如果使用的是域用戶的話)上生成的所有日誌條目如圖3所示,詳細的事件信息可以參考6.2節內容。

與PtH攻擊不同,PtT攻擊場景中並沒有生成4648事件。

域控的日誌中會記錄4768事件,即:Kerberos身份驗證票證請求(A Kerberos authentication ticket (TGT) was requested)事件。

http://p9.qhimg.com/t01138151db45a29d2c.png

圖3. 與NTLM憑證使用有關的事件

攻擊者向域控申請Kerberos TGT票據時就會生成4768事件。在PtT攻擊中,我們可能不會在日誌中找到這個事件,因為攻擊者在這之前已經竊取了TGT票據,不需要向Kerberos分發中心或者域控申請新的TGT票據,只需要利用已竊取的票據即可完成PtH攻擊。

域控的日誌中會記錄4769事件,即:Kerberos 服務票證請求(A Kerberos service ticket was requested)事件。

攻擊者請求訪問目標系統或資源時(本例中為clean-ws$)會生成該事件。

這個事件可以用作檢測橫向滲透攻擊是否存在的指示器,也是在整個環境中需要監控的主要事件。

目標主機(clean-ws)的日誌中會記錄4624事件,即:成功登錄帳戶(An account was successfully logged on)事件。

這個事件表明某個賬戶(my-admin)已成功登錄到目標主機(clean-ws)。我們有可能利用這個事件主動檢測橫向滲透攻擊,但前提是需要收集所有工作站上的相關日誌。如果工作站或服務器的數量不多,這個事件也能夠發揮作用。

無論如何,這個事件和登錄失敗(4625)事件對安全取證來說非常有用,因為它提供了具體的登錄類型(本例中為網絡登錄)以及發起登錄連接的來源主機(本例中為infected-ws)。

4634/4647事件的含義分別為:帳戶被注銷/用戶啟動注銷過程。

這兩個事件與攻擊者的注銷過程有關。安全取證工作中,可以利用這兩個事件,結合4624事件中的登錄ID值,檢測攻擊行動的會話全流程。

3.4.2 通用檢測方法

這部分的內容是介紹我們在檢測PtT型橫向滲透攻擊時,需要在各個主機中收集的事件,以及需要關心的具體值。

正如上文所述,我們需要重點關注域控(DC)上的4769以及4768事件。需要注意的是,這一次我們只能檢查其中的IP地址信息,因為Kerberos事件中並沒有提供具體的主機名。在啟用DHCP的環境中,這個限制條件給我們帶來了不小的挑戰,如果DHCP租用時間較短,我們面臨的將會是一個動態變化的網絡環境。

關鍵系統中的4624事件以及4625(登錄失敗)事件也值得我們關注。

http://p6.qhimg.com/t017d482f1f67bd757e.png

我們使用這種方法可能會檢測出假陽性結果:

比如某個管理員(例如help desk)正在打開遠程主機上的應用(例如,在遠程訪問中,通過cmd.exe運行”runas administrator”命令),這種情況下有可能會生成4768事件。

3.4.3 檢測黃金票據(Golden Ticket)

我們發表了一份白皮書,介紹了Kerberos黃金票據的相關知識,讀者可以查閱參考資料瞭解更多細節。

3.5 需要監控的主要賬戶

本文中描述的監控規則主要是基於域管賬戶,我們也可以監控其他重要賬戶,以快速檢測橫向滲透攻擊是否存在,這些賬戶包括:

1、服務賬戶(比如,備份賬戶);

2、很少使用的賬戶;

3、應急使用的賬戶;

4、關鍵業務賬戶。

3.6 需要注意的其他事件

我們建議大家可以參考NSA發表的一份參考資料,其中介紹了檢測潛在攻擊時可能有用的其他一些事件。這個參考資料不單單針對橫向滲透攻擊,同時也覆蓋了許多日誌事件以及攻擊類型。

 

四、附錄A-相關定義

哈希傳遞攻擊(Pass-the-hash,PtH):PtH是一種黑客技術,攻擊者可以利用該技術,使用事先竊取的用戶密碼的NTLM以及LM哈希,完成對遠程服務器或者服務的身份驗證,而常規的驗證流程中需要輸入明文密碼。

票據傳遞攻擊(Pass-the-ticket,PtT):與PtH情況類似,但PtT使用的是Kerberos票據,而不是NT哈希。

憑證(Credential):可以用來證實某人身份的標識以及相關密鑰。根據此定義,憑證的類型不僅僅侷限於明文密碼,同樣也包括Windows的NTLM哈希或者Kerberos票據(與實際使用的Windows認證協議有關)。在某些情況下,Windows會緩存憑證信息,以提供單點登錄功能。這篇文章主要關注的是Kerberos票據憑證(Ticket-Granting-Tickets,TGT)。讀者可以閱讀參考資料[1],瞭解與Windows憑證類型(表4)以及憑證緩存有關的更多細節信息。

TGT以及ST Kerberos票據:Ticket-Granting-Tickets(TGT)以及Service Tickets(ST,服務票據)是Kerberos協議的一部分,讀者可以閱讀參考資料[2],瞭解Kerberos以及相關的票據細節信息。

KDC:密鑰分發中心(Key distribution Center)。

 

五、附錄B-參考資料

[1] 如何防禦哈希傳遞攻擊以及其他憑證竊取技術

[2] Kerberos認證技術細節

[3] 遭受攻擊後如何恢復活動目錄

[4] 憑證保護及管理

[5] Windows事件說明

[6] Windows 7以及2008中的安全事件

[7] 如何發現攻擊活動

[8] 如何防禦Kerberos黃金票據攻擊

 

六、附錄C-具體事件說明

這部分內容主要是介紹Windows日誌以及log2timeline日誌中與PtH以及PtT攻擊有關的具體事件,具體場景為:

1、被攻陷的工作站:USER-WS(IP地址為192.168.89.101)

2、目標用戶:my-admin

3、目標主機:admin-ws(IP地址為192.168.89.102)

4、域名:corp.pass.thehash

6.1 網絡登錄(Network Logon)以及PtH事件

6.1.1 域控中的相關事件

 

Time: 06:32:56
Event: 4776
Event content:
- PackageName = MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
- TargetUserName = my-admin
- Workstation = USER-WS
- Status = 0x00000000
Command: `psexec.exe \admin-ws cmd.exe`
Comment: The domain controller attempted to validate the credentials for an account
Time06:33:37
Event4776
Event content:
- PackageName = MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
- TargetUserName = my-admin
- Workstation = USER-WS
- Status = 0x00000000
Command: robocopy.exe c:goodiessch \admin-wsc$
Comment: The domain controller attempted to validate the credentials for an account
Time06:34:16
Event4776
Event content:
- PackageName = MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
- TargetUserName = my-admin
- Workstation = USER-WS
- Status = 0x00000000
Command: at.exe \admin-ws 06:35 c:schedule.bat
Comment: The domain controller attempted to validate the credentials for an account

6.1.2 來源主機中的相關事件(user-ws)

 

Time: 06:32:44
Event: 4624
Event content:
- SubjectUserSid = S-1-5-18 SubjectUserName = USER-WS$
- SubjectDomainName = CORP
- SubjectLogonId = 0x00000000000003e7 TargetUserSid = S-1-5-18 TargetUserName = SYSTEM
TargetDomainName = NT AUTHORITY TargetLogonId = 0x00000000001046e9
- LogonType = 9
- LogonProcessName = seclogo
- AuthenticationPackageName = Negotiate
- WorkstationName = LogonGuid = {00000000-0000-0000-0000-000000000000}
- TransmittedServices = - LmPackageName = - KeyLength = 0 ProcessId = 0x00000000000003b4
- ProcessName = C:/Windows/System32/svchost.exe IpAddress = ::1 IpPort = 0
Command: sekurlsa::pth /user:my-admin /domain:corp /ntlm:[nt hash] /run:cmd.exe
Comment: Succesful logon, TargetLogonId = 0x00000000001046e9
Time: 06:32:44
Event: 4672
Event content:
- SubjectUserSid = S-1-5-18 SubjectUserName = SYSTEM SubjectDomainName = NT AUTHORITY
- SubjectLogonId = 0x00000000001046e9
- PrivilegeList = SeCreateTokenPrivilege SeAssignPrimaryTokenPrivilege SeTcbPrivilege
SeSecurityPrivilege SeTakeOwnershipPrivilege SeLoadDriverPrivilege SeBackupPrivilege
SeRestorePrivilege SeDebugPrivilege SeAuditPrivilege SeSystemEnvironmentPrivilege
SeImpersonatePrivilege
Comment: Special privileges assigned to new logon, as above. LogonId = 0x00000000001046e9
Time: 06:32:55
Event: 4648
Event content:
- SubjectUserSid = S-1-5-18 SubjectUserName = SYSTEM SubjectDomainName = NT AUTHORITY
- SubjectLogonId = 0x00000000001046e9 LogonGuid = {00000000-0000-0000-0000-000000000000}
- TargetUserName = -------- TargetDomainName = ---- TargetLogonGuid =
{00000000-0000-0000-0000-000000000000}
- TargetServerName = admin-ws.corp.pass.thehash TargetInfo = admin-ws.corp.pass.thehash
- ProcessId = 0x0000000000000004 ProcessName =
- IpAddress = - IpPort = -
Command: psexec.exe \admin-ws cmd.exe
Comment: A logon was attempted using explicit credentials. This event is generated when a
process attempts to log on an account by explicitly specifying that accounts credentials.
This most commonly occurs in batch-type configurations such as scheduled tasks, or when
using the RUNAS command. SubjectLogonId = 0x00000000001046e9
Time: 06:32:55
Event: 4648
Event content:
- SubjectUserSid = S-1-5-18 SubjectUserName = SYSTEM SubjectDomainName = NT AUTHORITY
- SubjectLogonId = 0x00000000001046e9 LogonGuid = {00000000-0000-0000-0000-000000000000}
- TargetUserName = -------- TargetDomainName = ---- TargetLogonGuid =
{00000000-0000-0000-0000-000000000000}
- TargetServerName = admin-ws.corp.pass.thehash TargetInfo = admin-ws.corp.pass.thehash
ProcessId = 0x0000000000000998
- ProcessName = C:/goodies/PsExec.exe
- IpAddress = - IpPort = -
Comment: LogonId = 0x00000000001046e9
Time: 06:33:35
Event: 4648
Event content:
- SubjectUserSid = S-1-5-18 SubjectUserName = SYSTEM SubjectDomainName = NT AUTHORITY
- SubjectLogonId = 0x00000000001046e9 LogonGuid = {00000000-0000-0000-0000-000000000000}
- TargetUserName = -------- TargetDomainName = ---- TargetLogonGuid =
{00000000-0000-0000-0000-000000000000}
- TargetServerName = admin-ws.corp.pass.thehash TargetInfo = admin-ws.corp.pass.thehash
- ProcessId = 0x0000000000000004 ProcessName =
- IpAddress = - IpPort = -
Command: robocopy.exe c:goodiessch \admin-wsc$
Comment: A logon was attempted using explicit credentials. LogonId = 0x00000000001046e9
Time: 06:34:15
Event: 4648
Event content:
- SubjectUserSid = S-1-5-18 SubjectUserName = SYSTEM SubjectDomainName = NT AUTHORITY
- SubjectLogonId = 0x00000000001046e9 LogonGuid = {00000000-0000-0000-0000-000000000000}
- TargetUserName = -------- TargetDomainName = ---- TargetLogonGuid =
{00000000-0000-0000-0000-000000000000}
- TargetServerName = admin-ws.corp.pass.thehash TargetInfo = admin-ws.corp.pass.thehash
- ProcessId = 0x0000000000000004 ProcessName =
- IpAddress = - IpPort = -
Command: at.exe \admin-ws 08:00 c:schedule.bat
Comment: A logon was attempted using explicit credentials.LogonId = 0x00000000001046e9

6.1.3 目標主機中的相關事件(admin-ws)

 

Time: 06:32:55
Event: 4672
Event content:
- SubjectUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- SubjectUserName = my-admin
- SubjectDomainName = CORP SubjectLogonId = 0x00000000000f133c PrivilegeList =
SeSecurityPrivilege SeBackupPrivilege SeRestorePrivilege SeTakeOwnershipPrivilege
SeDebugPrivilege SeSystemEnvironmentPrivilege SeLoadDriverPrivilege
SeImpersonatePrivilege
Comment: Special privileges assigned to new logon.
Time: 06:32:55
Event: 4624
Event content:
- SubjectUserSid = S-1-0-0 SubjectUserName = - SubjectDomainName = - SubjectLogonId =
0x0000000000000000 TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- TargetUserName = my-admin
- TargetDomainName = CORP
- TargetLogonId = 0x00000000000f133c
- LogonType = 3
- LogonProcessName = NtLmSsp
- AuthenticationPackageName = NTLM WorkstationName = USER-WS
- LogonGuid = {00000000-0000-0000-0000-000000000000} TransmittedServices = - LmPackageName =
NTLM V1 KeyLength = 128 ProcessId = 0x0000000000000000 ProcessName = - IpAddress =
192.168.89.101 IpPort = 49286
Command: psexec.exe \admin-ws cmd.exe
Comment: Succesful logon. TargetLogonId = 0x00000000000f133c
Time: 06:33:32
Event: 4634
Event content:
- TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- TargetUserName = my-admin
- TargetDomainName = CORP
- TargetLogonId = 0x00000000000f133c
- LogonType = 3
Comment: TargetLogonId = 0x00000000000f133c
Time: 06:33:35
Event: 4672
Event content:
- SubjectUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- SubjectUserName = my-admin
- SubjectDomainName = CORP
- SubjectLogonId = 0x00000000000f2736
- PrivilegeList = SeSecurityPrivilege SeBackupPrivilege SeRestorePrivilege
SeTakeOwnershipPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege
SeLoadDriverPrivilege SeImpersonatePrivilege
Time: 06:33:35
Event: 4624
Event content:
- SubjectUserSid = S-1-0-0 SubjectUserName = - SubjectDomainName = - SubjectLogonId =
0x0000000000000000 TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- TargetUserName = my-admin
- TargetDomainName = CORP
- TargetLogonId = 0x00000000000f2736
- LogonType = 3
- LogonProcessName = NtLmSsp
- AuthenticationPackageName = NTLM
- WorkstationName = USER-WS
- LogonGuid = {00000000-0000-0000-0000-000000000000} TransmittedServices = - LmPackageName =
NTLM V1 KeyLength = 128 ProcessId = 0x0000000000000000 ProcessName = -
- IpAddress = 192.168.89.101 IpPort = 49298
Command: robocopy.exe c:goodiessch \admin-wsc$
Time: 06:34:02
Event: 4634
Event content:
- TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- TargetUserName = my-admin
- TargetDomainName = CORP
- TargetLogonId = 0x00000000000f2736
- LogonType = 3
Time: 06:34:15
Event: 4672
Event content:
- SubjectUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- SubjectUserName = my-admin SubjectDomainName = CORP
- SubjectLogonId = 0x00000000000f309b
- PrivilegeList = SeSecurityPrivilege SeBackupPrivilege SeRestorePrivilege
SeTakeOwnershipPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege
SeLoadDriverPrivilege SeImpersonatePrivilege LogonId = 0x00000000000f309b
Time: 06:34:15
Event: 4624
Event content:
- SubjectUserSid = S-1-0-0 SubjectUserName = - SubjectDomainName = - SubjectLogonId =
0x0000000000000000 TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- TargetUserName = my-admin
- TargetDomainName = CORP
- TargetLogonId = 0x00000000000f309b
- LogonType = 3
- LogonProcessName = NtLmSsp
- AuthenticationPackageName = NTLM
- WorkstationName = USER-WS
- LogonGuid = {00000000-0000-0000-0000-000000000000} TransmittedServices = - LmPackageName =
NTLM V1 KeyLength = 128 ProcessId = 0x0000000000000000 ProcessName = -
- IpAddress = 192.168.89.101 IpPort = 49299
Command: at.exe \admin-ws 08:00 c:schedule.bat
Comment: LogonId = 0x00000000000f309b
Time: 06:34:26
Event: 4634
Event content:
- TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-1105
- TargetUserName = my-admin
- TargetDomainName = CORP
- TargetLogonId = 0x00000000000f309b
- LogonType = 3
Comment: LogonId = 0x00000000000f309b

6.2 Kerberos認證和PtT事件

6.2.1 域控中的相關事件

我們可以在域控中看到4769事件:來自於user-ws主機的IP地址(192.168.86.101)請求了Kerberos服務票據,以便訪問admin-ws主機。

需要注意的是,我們在域控中沒有找到4768事件(Kerberos TGT請求事件),因為攻擊者已經事先竊取了票據,然後重新注入該票據發起攻擊。

 

Time: 14:11:12
Event: 4769
Event content:
- TargetUserName = myadmin@corp
- TargetDomainName = corp
- ServiceName = ADMIN-WS$
- ServiceSid = S-1-5-21-2976932740-3244455291-537790045-1107
- TicketOptions = 0x40810000
- TicketEncryptionType = 0x00000012
- IpAddress = ::ffff:192.168.89.101 IpPort = 49407
- Status = 0x00000000
- LogonGuid = {B757831E-D810-CDCC-C1C2-804BB3A2FB2C}
- TransmittedServices = -
Command: net use \admin-ws

6.2.2 目標主機(admin-ws)中的事件

我們在目標主機中可以找到與賬戶成功登陸有關的兩個事件(4624事件)。與域控上的情況類似,這些事件都與黃金票據攻擊無關。

 

Time: 14:11:12
Event: 4624
Event content:
- SubjectUserSid = S-1-0-0 SubjectUserName = - SubjectDomainName = - SubjectLogonId =
0x0000000000000000
- TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-500 TargetUserName = myadmin
TargetDomainName = corp
- TargetLogonId = 0x000000000051f916
- LogonType = 3 LogonProcessName = Kerberos AuthenticationPackageName = Kerberos
- WorkstationName =
- LogonGuid = {A0706C8D-9BC6-F4D5-1226-FA2A48BB58D9} TransmittedServices = - LmPackageName = -
KeyLength = 0 ProcessId = 0x0000000000000000 ProcessName = -
- IpAddress = 192.168.89.101 IpPort = 49406
Command: net use \admin-ws
Time: 14:11:12
Event: 4672
Event content:
- SubjectUserSid = S-1-5-21-2976932740-3244455291-537790045-500 SubjectUserName = myadmin
- SubjectDomainName =
- SubjectLogonId = 0x000000000051f916
- PrivilegeList = SeSecurityPrivilege SeBackupPrivilege SeRestorePrivilege
SeTakeOwnershipPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege SeLoadDriverPrivilege
SeImpersonatePrivilege
Command: net use \admin-ws
Time: 14:11:39
Event: 4624
Event content:
- SubjectUserSid = S-1-0-0 SubjectUserName = - SubjectDomainName = - SubjectLogonId =
0x0000000000000000
- TargetUserSid = S-1-5-21-2976932740-3244455291-537790045-500 TargetUserName = myadmin
TargetDomainName = corp
- TargetLogonId = 0x00000000005204ad
- LogonType = 3 LogonProcessName = Kerberos AuthenticationPackageName = Kerberos
- WorkstationName =
- LogonGuid = {B504E2E8-3007-1C03-F480-011559C08D34} TransmittedServices = - LmPackageName = -
KeyLength = 0 ProcessId = 0x0000000000000000 ProcessName = -
- IpAddress = 192.168.89.101 IpPort = 49409
Command: psexec.exe \admin-ws cmd.exe
Time: 14:11:39
Event: 4672
Event content:
- SubjectUserSid = S-1-5-21-2976932740-3244455291-537790045-500 SubjectUserName = myadmin
SubjectDomainName =
- SubjectLogonId = 0x00000000005204ad
- PrivilegeList = SeSecurityPrivilege SeBackupPrivilege SeRestorePrivilege
SeTakeOwnershipPrivilege SeDebugPrivilege SeSystemEnvironmentPrivilege SeLoadDriverPrivilege
SeImpersonatePrivilege
Command: psexec.exe \admin-ws cmd.exe

6.3 附錄D-Windows安全(Security)事件

這部分主要介紹了本文中所提到的安全事件細節,參考了微軟的官方定義[5][6]。

4624事件:成功登錄帳戶。

 

Subject:
Security ID: %1
Account Name: %2
Account Domain: %3
Logon ID: %4
Logon Type: %9
New Logon:
Security ID: %5
Account Name: %6
Account Domain: %7
Logon ID: %8
Logon GUID: %13
Process Information:
Process ID: %17
Process Name: %18
Network Information:
Workstation Name: %12
Source Network Address: %19
Source Port: %20
Detailed Authentication Information:
Logon Process: %10
Authentication Package: %11
Transited Services: %14
Package Name (NTLM only): %15
Key Length: %16
This event is generated when a logon session is created. It is generated on the computer that was accessed.
The subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe
or Services.exe.
The logon type field indicates the kind of logon that occurred. The most common types are 2 (interactive) and 3 (network).
The New Logon fields indicate the account for whom the new logon was created, i.e. the account that was logged on.
The network fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.
The authentication information fields provide detailed information about this specific logon request.
- Logon GUID is a unique identifier that can be used to correlate this event with a KDC event.
- Transited services indicate which intermediate services have participated in this logon request.
- Package name indicates which sub-protocol was used among the NTLM protocols.
- Key length indicates the length of the generated session keyThis will be 0 if no session key was requested.

4625事件:帳戶登錄失敗。

 

Subject:
Security ID: %1
Account Name: %2
Account Domain: %3
Logon ID: %4
Logon Type: %11
Account For Which Logon Failed:
Security ID: %5
Account Name: %6
Account Domain: %7
Failure Information:
Failure Reason: %9
Status: %8
Sub Status: %10
Process Information:
Caller Process ID: %18
Caller Process Name: %19
Network Information:
Workstation Name: %14
Source Network Address: %20
Source Port: %21
Detailed Authentication Information:
Logon Process: %12
Authentication Package: %13
Transited Services: %15
Package Name (NTLM only): %16
Key Length: %17
This event is generated when a logon request fails. It is generated on the computer where access was attempted.
The Subject fields indicate the account on the local system which requested the logon. This is most commonly a service such as the Server service, or a local process such as Winlogon.exe
or Services.exe.
The Logon Type field indicates the kind of logon that was requested. The most common types are 2 (interactive) and 3 (network).
The Process Information fields indicate which account and process on the system requested the logon.
The Network Information fields indicate where a remote logon request originated. Workstation name is not always available and may be left blank in some cases.
The authentication information fields provide detailed information about this specific logon request.
- Transited services indicate which intermediate services have participated in this logon request.
- Package name indicates which sub-protocol was used among the NTLM protocols.
- Key length indicates the length of the generated session keyThis will be 0 if no session key was requested.

4634事件:帳戶被注銷。

 

Subject:
Security ID: %1
Account Name: %2
Account Domain: %3
Logon ID: %4
Logon Type: %5
This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.
Event ID: 4647
User initiated logoff.
Subject:
Security ID: %1
Account Name: %2
Account Domain: %3
Logon ID: %4
This event is generated when a logoff is initiated but the token reference count is not zero and the logon session cannot be destroyed. No further user-initiated activity can occur. This event can be interpreted as a logoff event.

4648事件:試圖使用顯式憑據登錄。

 

Subject:
Security ID: %1
Account Name: %2
Account Domain: %3
Logon ID: %4
Logon GUID: %5
Account Whose Credentials Were Used:
Account Name: %6
Account Domain: %7
Logon GUID: %8
Target Server:
Target Server Name: %9
Additional Information: %10
Process Information:
Process ID: %11
Process Name: %12
Network Information:
Network Address: %13
Port: %14
This event is generated when a process attempts to log on an account by explicitly specifying that accounts credentials. This most commonly occurs in batch-type configurations such as scheduled tasks, or when using the RUNAS command.

4672事件:分配給新的登錄特權。

 

Subject:
Security ID: %1
Account Name: %2
Account Domain: %3
Logon ID: %4
Privileges%5

4768事件:Kerberos 身份驗證票證 (TGT) 請求。

 

Account Information:
Account Name: %1
Supplied Realm Name: %2
User ID: %3
Service Information:
Service Name: %4
Service ID: %5
Network Information:
Client Address: %10
Client Port: %11
Additional Information:
Ticket Options: %6
Result Code: %7
Ticket Encryption Type: %8
Pre-Authentication Type: %9
Certificate Information:
Certificate Issuer Name: %12
Certificate Serial Number: %13
Certificate Thumbprint: %14
Certificate information is only provided if a certificate was used for pre-authentication.
Pre-authentication types, ticket options, encryption types and result codes are defined in RFC 4120.

4769事件:Kerberos 服務票證請求。

 

Account Information:
Account Name: %1
Account Domain: %2
Logon GUID: %10
Service Information:
Service Name: %3
Service ID: %4
Network Information:
Client Address: %7
Client Port: %8
Additional Information:
Ticket Options: %5
Ticket Encryption Type: %6
Failure Code: %9
Transited Services: %11
This event is generated every time access is requested to a resource such as a computer or a Windows service. The service name indicates the resource to which access was requested.
This event can be correlated with Windows logon events by comparing the Logon GUID fields in each event. The logon event occurs on the machine that was accessed, which is often a different machine than the domain controller which issued the service ticket.
Ticket options, encryption types, and failure codes are defined in RFC 4120.

4776事件:域控試圖驗證帳戶憑據

 

Authentication Package: %1
Logon Account: %2
Source Workstation: %3
Error Code: %4
文章標籤
資訊安全
全站熱搜
創作者介紹
創作者 好康搬運工 的頭像
好康搬運工

好康搬運工

好康搬運工 發表在 痞客邦 留言(0) 人氣()