哈希傳遞(Pass-the-hash)是一種非常古老的技術(shù),最初由 Paul Ashton 在1997年發(fā)布的。盡管如此,“哈希傳遞”的存在已經(jīng)超過了10年。 它在大多數(shù)勒索軟件攻擊中被大量使用,比如在馬斯特里赫特大學(xué)(University of Maastricht)。但為什么這仍然是個問題呢?
首先,讓我們對這種攻擊有一個高層次的概述。 Pass-the-hash 是一種技術(shù),攻擊者在獲得本地管理員權(quán)限之后,通過這種技術(shù)從被入侵的工作站或服務(wù)器上的內(nèi)存中捕獲 NT (LM) 哈希。 使用這些被盜用的憑據(jù),他們可以代表受到威脅的用戶打開一個新的身份驗(yàn)證會話,以后還可以這樣做。 使用 PsExec、 WinRM、 RDP 等按照該用戶的側(cè)向移動。
對于 Pass-the-Hash 攻擊并沒有真正的修復(fù),因?yàn)樗昧?SSO (Single-Sign On)協(xié)議。 任何使用 SSO 的系統(tǒng)都容易受到類似的攻擊,比如 PtH。 因?yàn)榇蠖鄶?shù)組織都使用活動目錄作為其身份服務(wù),而 AD 將 SSO 作為其主要特性。這意味著許多組織必須處理這個問題,否則,它們就不能很好地抵御“傳遞哈?!惫?。
SSO 是一個身份驗(yàn)證過程,允許用戶使用一組憑據(jù)登錄,以訪問網(wǎng)絡(luò)上的資源,而無需再次輸入密碼。
假設(shè)你以用戶 Bob (DBA)的身份登錄,并希望訪問 SQL 服務(wù)器上的 SQL 數(shù)據(jù)庫。 而不是再次輸入你的密碼。 你只需要點(diǎn)擊“連接”。
按下連接按鈕后。 你已經(jīng)進(jìn)入并且可以訪問所有被監(jiān)聽的 SQL 數(shù)據(jù)庫。
你不必再次鍵入密碼的原因是,因?yàn)?Windows 將你的憑據(jù)緩存在內(nèi)存中,以提供 SSO 體驗(yàn)。
這也是為什么你不能完全防止哈希傳遞攻擊,因?yàn)檫@意味著你必須干掉單點(diǎn)登錄。 然而,因?yàn)楹茈y防止這種攻擊,這并不意味著你對此無能為力。 事實(shí)上,微軟已經(jīng)在這方面提供了很多指導(dǎo),可以減輕這種攻擊。
憑證存取 -T1003
在攻擊者可以執(zhí)行傳遞哈希攻擊之前。首先需要獲得憑證,并且所有憑據(jù)都存儲在 LSASS 進(jìn)程內(nèi)存中,因此每次用戶登錄時,他或她的憑證被緩存在內(nèi)存中,以提供我們前面討論過的 SSO 體驗(yàn)。 當(dāng)用戶登錄到一臺機(jī)器時,無論是通過 RDP 本地登錄,還是通過 Runas 在另一個帳戶下執(zhí)行操作,憑證都會被緩存。
下面是一個示例,其中我們從 WINDOWS2012 機(jī)器上的內(nèi)存中提取憑據(jù)。
現(xiàn)在讓我們假設(shè)我們已經(jīng)設(shè)法欺騙 Alice 登錄到我們已經(jīng)入侵的機(jī)器上,那么會發(fā)生什么呢?
因?yàn)锳lice已經(jīng)登錄了我們的跳板機(jī)器。 她的憑據(jù)已經(jīng)丟失,這意味著我們現(xiàn)在可以從內(nèi)存中提取憑據(jù)并開始模擬 Alice 以代表她訪問資源。
哈希傳遞 – T1705
我們現(xiàn)在已經(jīng)從 Alice 那里獲得了憑據(jù),因此我們現(xiàn)在可以開始執(zhí)行 哈希傳遞攻擊以模擬她并代表她訪問所有資源。
現(xiàn)在,由于 Alice 可以訪問 FILESERVER,我們可以作為用戶 Alice 橫向移動到這個服務(wù)器。
由于我們對 FILESERVER 擁有完全的管理特權(quán),現(xiàn)在我們也可以將憑據(jù)轉(zhuǎn)儲到這臺服務(wù)器上。
現(xiàn)在我們已經(jīng)設(shè)法從 Bob 那里獲得了憑據(jù),因?yàn)樗罱卿浟诉@個服務(wù)器。 Bob 是域管理員,所以如果我們模仿Bob。 我們可以接觸到任何東西。
與前面一樣,我們現(xiàn)在要執(zhí)行哈希傳遞攻擊來模擬 Bob 并代表他訪問資源。
數(shù)據(jù)外泄
例如,我們現(xiàn)在可以橫向移動到域控制器服務(wù)器,它也被稱為最關(guān)鍵的服務(wù)器,因?yàn)樗鼡碛忻總€用戶和計算機(jī)的所有憑證。
訪問域控制器是一回事,但是攻擊者的最終目標(biāo)是泄露數(shù)據(jù)。攻擊者并不關(guān)心他們是否成為DA或訪問DC。當(dāng)數(shù)據(jù)泄露時,它會影響你的生意。
這是一個例子,我們可以訪問 SQL 服務(wù)器,因?yàn)槲覀円呀?jīng)是 Domain Admin(域管理員),但是正如前面所說的。 DA 無關(guān)緊要,重要的是數(shù)據(jù)。 下面是存儲在硬盤驅(qū)動器上的所有 SQL 數(shù)據(jù)庫的示例。 也許這些數(shù)據(jù)對我們有很大的價值,如果這些數(shù)據(jù)泄露出去,可能會對我們的業(yè)務(wù)造成影響。
檢測憑證訪問和哈希傳遞技術(shù)一直是相當(dāng)困難的。 如果真像我們想的那么簡單。 那么大多數(shù)組織就已經(jīng)有了適當(dāng)?shù)臋z測規(guī)則。
一個偉大的事情是,微軟發(fā)布了 Defender ATP,這是一個 EDR 解決方案,利用了云的力量。 如果你必須選擇一個 EDR 解決方案。 我建議選擇Defender ATP。 這是一個很好的解決方案,可以提高所有端點(diǎn)的可見性,并且使你的生活更加容易,因?yàn)槟憧梢酝ㄟ^門戶獲得無時間的警報。
下面是我們從 LSASS 進(jìn)程內(nèi)存中提取憑據(jù)之后收到的一個示例。
上面的警報與另一個事件有關(guān),即哈希傳遞。
建議
第一件事是確保你做了基本的工作,也就是確保所有的 IT 管理員對他們的管理任務(wù)有一個單獨(dú)的帳戶,并且如果你想要完美地完成這些任務(wù)的話。 甚至建議使用單獨(dú)的加固工作站來執(zhí)行所有管理任務(wù)。
緩解哈希傳遞攻擊的最佳方法是查看微軟管理層模型——這是一種安全模型,通過確保較高層不能登錄較低層來減輕憑證盜竊,反之亦然。
第0層=可以訪問網(wǎng)絡(luò)上所有關(guān)鍵服務(wù)器的域管理員或同等級別的管理員
第1層=服務(wù)器管理員/系統(tǒng)管理員,他們可以訪問重要的服務(wù)器,但不是“關(guān)鍵”的
第2層=工作站管理員/幫助臺,可以訪問客戶的工作站,但不能訪問第1層和第0層管理員的獨(dú)立的加固工作站
現(xiàn)在你可能想知道,當(dāng)你實(shí)現(xiàn)這個層模型時,它看起來是什么樣的。 也許你還想知道你的組織是否有安全措施來減輕哈希傳遞。
部署管理層模型可能需要一段時間,但這是值得的。 這是一個關(guān)于在 AD 中如何設(shè)計一個層模型的例子。
我們創(chuàng)建了一些OU,在這些OU中。它包含不同的對象。作為一個例子。在第0層OU,我們有不同的子OU。你可以看到設(shè)備和第0層服務(wù)器。在設(shè)備OU中,它包含你的域管理員或同等人員的獨(dú)立加固工作站。在第0層服務(wù)器中,它包含最關(guān)鍵的服務(wù)器對象,比如域控制器、Azure AD Connect、ADFS、PKI、SCCM等等。
現(xiàn)在有另一個 OU 叫做 Tier 1,它包含了不同的子 OU,以及設(shè)備和 Tier 1 服務(wù)器。 在設(shè)備 OU 中,它包含服務(wù)器管理員的獨(dú)立硬化工作站和第一層服務(wù)器 OU。 它包含所有重要的服務(wù)器,但不是關(guān)鍵的。
在你指定之后。 一個 GPO 需要被創(chuàng)建和鏈接到設(shè)備 & 第1層(Tier 1)服務(wù)器 OU,這個 GPO 拒絕域管理員和等價物的登錄權(quán)(第0層管理員)。
在這里你可以看到,我已經(jīng)創(chuàng)建了一個 GPO 與拒絕登錄權(quán)限的設(shè)備和第一層服務(wù)器。 所有0級管理員不能登錄到第1層管理員設(shè)備或第1層服務(wù)器。
拒絕從網(wǎng)絡(luò)訪問此計算機(jī)
拒絕作為批處理作業(yè)登錄
拒絕作為服務(wù)登錄
拒絕本地登錄
拒絕通過遠(yuǎn)程桌面服務(wù)登錄
讓我們驗(yàn)證我們不能登錄到第1層資產(chǎn)。 例如,我們正在嘗試登錄第1層中的 FILESERVER。 訪問被拒絕,因?yàn)槲覀兊?GPO 拒絕了登錄訪問。
現(xiàn)在,當(dāng)我們試圖使用 PsExec 登錄到文件服務(wù)器時,我們也會被拒絕。
最后,但并非最不重要。 還有第二層,它包含了客戶端的所有工作站。 此層由幫助臺/工作站管理員管理。
現(xiàn)在創(chuàng)建另一個 GPO ,但這一次這個 GPO 需要拒絕登錄權(quán)限。 我們必須指定,第0層和第1層管理員都不允許登錄客戶的工作站和第2層管理員的單獨(dú)工作站。
拒絕從網(wǎng)絡(luò)訪問此計算機(jī)
拒絕作為批處理作業(yè)登錄
拒絕作為服務(wù)登錄
拒絕本地登錄
拒絕通過遠(yuǎn)程桌面服務(wù)登錄
現(xiàn)在,當(dāng)我們試圖將RDP作為第0/1層管理員發(fā)送到客戶機(jī)的工作站時,我們的訪問將被拒絕,因?yàn)榭蛻舻墓ぷ髡疚挥诘?層區(qū)域。
我經(jīng)??吹降膸讉€例子,可能會導(dǎo)致層模型繞過,是鏈接到0層資產(chǎn)的GPO,來自第1層的用戶可以修改它的設(shè)置。 確保所有鏈接到域?qū)ο蟮?GPO 和所有0級資產(chǎn)都由0級管理員管理。
另外,如果你在域管理員中有服務(wù)帳戶,并且這些服務(wù)帳戶作為具有 DA 特權(quán)的服務(wù)器上的服務(wù)運(yùn)行,那么最好知道這一點(diǎn)。 這意味著你需要將該服務(wù)器視為一個第0層資產(chǎn)。
總結(jié)
管理層模型(Administrative Tier Model)是一個很好的安全架構(gòu),可以防止憑證被盜用,因?yàn)檩^高的層不能登錄較低的層,反之亦然,這意味著例如域管理員的憑證永遠(yuǎn)不能在打印服務(wù)器或客戶機(jī)的工作站上公開。 沒有什么是完美的,但部署層模型和在所有工作站和服務(wù)器上安裝 Defender ATP 將使攻擊者更加困難。
如果你沒有任何類似的安全措施,如上所示。 我們可能得出結(jié)論,你根本沒有實(shí)現(xiàn)哈希傳遞攻擊的緩解措施,這沒有關(guān)系,但是現(xiàn)在是時候?qū)崿F(xiàn)它了。
-
微軟
+關(guān)注
關(guān)注
4文章
6620瀏覽量
104242 -
DDoS攻擊
+關(guān)注
關(guān)注
2文章
73瀏覽量
5810 -
哈希算法
+關(guān)注
關(guān)注
1文章
56瀏覽量
10759
發(fā)布評論請先 登錄
相關(guān)推薦
評論