標籤:

域信任機制的攻擊技術指南Part.1

我撰寫關於Active Directory 域信任的一篇文章,已經有一段時間(近2年)。在 深入研究「組範圍」之後,我意識到了一些微妙的東西,這讓我發現我曾經有過關於信任和用戶組成員的一些誤解。結合去年PowerView的一些變化,我相信我會發布一個關於枚舉和攻擊域信任的最新指南。這可能是我發表了有一段時間的關於域信任的最後一篇文章 。總的來說,我不只是在我的博客中寫寫我的操作說明,我會試著寫一些能夠作為我的團隊成員的完整指南的文章,希望這些信息可能對其他人也有用(無論是從攻擊角度還是從防禦角度來看)。

我希望本文描述的內容儘可能完整,所以本文將涵蓋我們目前所了解的關於「信任」的各個方面。就像我以前的文章一樣,我想在這個時候盡我所能地把我對這個話題的知識包裝起來。之所以強調「這個時候」是因為我們的知識和行業技術總是在不斷發展,「域信任」也不例外。當我開始寫關於域信任的文章的時候,我有一些模糊的誤解。我從來不是一個系統管理員或AD架構師 – 我已經逐漸學會了我的知識,希望能夠解釋我在過去發表的文章中所存在的差距,而且我相信這些差距將會繼續出現。

所以我會開始嘗試做一些新鮮的事情,如果你不熟悉我以前發表的關於「域信任」的文章,那麼在這篇文章中的部分內容將會重複以前的研究工作中的某些內容,並將更新後的知識和PowerView語法結合起來。因為這是一篇新的文章,所以我肯定會有錯誤的地方和我遺漏的一些東西,所以當你找到它們時,情讓我知道,我會做適當的更新!

PowerView的最新版本將始終位於PowerSploit的開發分支上。

什麼是域信任?

在一個較高的層次上來說,域信任建立了一個域中的用戶對資源進行認證或充當另一個域中的安全主體的能力。微軟官網中有大量有關於域信任的信息,以及「域信任的安全注意事項」,這些說明有時看起來有點混亂。正如微軟所描述的那樣,「大多數擁有多個域的企業或組織都有合法的需求來訪問位於不同域中的共享資源 」,而域信任則允許具有多個域的企業或組織能夠讓 不同域的用戶訪問共享資源。域林是相互信任的域容器的集合。林之間也可以有信任關係。微軟官方網站有關於 域和林的信任的工作原理 的優秀文章。如果你不熟悉這方面的內容,我建議你先查看一下這些文章。

從本質上講,「信任」所做的就是鏈接兩個域的認證系統,並允許認證流量通過一個引用系統在這兩個域之間傳輸。如果用戶請求訪問當前所在域之外的資源的服務主體名稱(SPN),則其域控制器將返回一個特殊的引用票證,該票證指向外部域的密鑰分發中心(KDC,在Windows環境中的域控制器)。

用戶的票證授予票證(TGT)包含在該TGS-REP(票證授予服務回復)轉介票證中,並且該票證用域先前交換的域間信任密鑰加密或簽名,而不是第一個域的krbtgt帳戶。這個票證通常被稱為「域間票證授予票證或TGT」。然後,外部域通過使用先前協商的域間信任密鑰來解密它,然後驗證或解密包含在轉介票證中的TGT,並且完成正常的Kerberos處理過程的其餘部分。

Sean Metcalf在「關於域信任的一切」這篇文章中對這個過程進行了詳細的描述,他將這個過程描述為:「 一旦兩個域之間存在信任關係,則每個域的票證授予服務(Kerberos中的」realm「說)會被註冊為其他域的Kerberos服務(KDC)的安全主體。這使得每個域中的票證授予服務會將另一個域中的票證授予服務看作另一個域中的資源,同時提供跨域服務訪問的服務。」

因此,基本上,當外部域使用協商的信任密鑰解密轉介票證時,它看到用戶的TGT會說:「OK,另一個域已經認證了這個用戶,並且說這個用戶是誰(注意這裡是用戶自己說他們是誰)或者是這些用戶是哪個用戶組的,所以我會相信這個信息是準確的,因為我相信轉介的域。」

下面是一個可視化跨信任邊界的Kerberos處理過程的圖片:

建立信任的目的是允許來自一個域的用戶訪問資源(比如伺服器上的本地管理員組),以組的形式嵌套,或者用作另一個域的安全主體(例如,用於AD對象的ACL )。林內信任(存在於同一個Active Directory林中的域信任)的一個例外是 – 林中創建的任何域與林中的每個其他域保持著隱式的雙向可傳遞信任關係。這有很多的影響,這塊的內容我們將在本文的後面進行介紹。

但在此之前,我們不得不描述更多的信任特徵。

有幾種類型的信任,其中一些有不同的攻擊性含義,包括:

· 父子信任關係——同一個林的一部分 —— 子域保留了與父域的隱式雙向傳遞信任。這可能是你遇到的最常見的信任類型。

· 交叉鏈接信任關係——又名子域之間的「快捷方式信任」,目的是提升轉介時間。通常情況下,複雜的林中的引用必須過濾到林根,然後再回到目標域,因此對於地理上分散的那種場景,交叉鏈接關係可以減少認證的時間。

· 外部信任關係——在不同域之間創建的隱式非傳遞式信任關係。「外部信任提供了對尚未加入林信任的林之外的域中資源的訪問能力。」外部信任強制執行SID過濾,本文後面將介紹這塊的安全保護。

· 樹根信任關係——林根域和你添加的新樹根之間的隱式雙向可傳遞信任關係。我沒有經常遇到樹根信任關係,但是從微軟官方的文檔中可以發現,當你在林中創建新的域樹時就會創建這種關係。這些是林內的信任關係,它們 保留了雙向傳遞性,同時允許樹有一個單獨的域名稱(而不是child.parent.com)。

· 林信任關係——一個林根域和另一個林根域之間的傳遞信任關係。林信任也強制SID過濾。

· MIT信任關係——與非Windows RFC4120兼容的 Kerberos域的信任。我希望將來能夠更多地投入到MIT的信任關係研究中。

傳遞性?域信任的另一方面是它們是具有傳遞性的或是不具有傳遞性的。引用MSDN文檔中關於傳遞性的描述:「傳遞性信任將信任關係擴展到其他域; 不可信的信任不會將信任關係擴展到其他域。」這意味著傳遞的信任可以被鏈接,因此用戶可以訪問多個域中的資源。也就是說,如果域A信任B且B信任C,則A絕對信任C。更深層次的說,如果特定的信任關係是可傳遞的,則信任域可以重新將用戶的TGT包裝到附加的轉介票證中,並將它們轉發到當前域所信任的域中。

而且,信任傳遞可以是單向或雙向的。雙向信任實際上只是兩個單向的信任關係。單向信任意味著受信任域中的用戶和計算機可能會訪問另一個信任域中的資源。單向信任只在一個方向上,因此才有「單向」這個名稱。信任域中的用戶和計算機無法訪問受信任域中的資源。微軟的官方網站中有一個很好的可視化圖表:

圖片來源:technet.microsoft.com/e.aspx

當我開始研究的時候,這是一個讓我的頭腦變得很混亂的東西 —— 從攻擊的角度來看,我們關心的是訪問的方向,而不是信任的方向。對於信任方向為A –>B(A信任B)的單向信任,如果從A中列舉信任關係,則信任被標記為出站,而如果從B枚舉相同的信任,則信任被標記為入站,而潛在的訪問關係是B->A。這將在「域環境中的外部關係枚舉」這一章節變得更有意義。

本文翻譯自:harmj0y.net/blog/redtea ,如若轉載,請註明原文地址: 4hou.com/technology/979 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

谷歌更新Gmail郵箱安全功能
Catalog簽名偽造——Long UNC文件名欺騙
CTF | 那些比較好玩的stego(續一)
相比廠商自身力量、國家測評和專業安全公司,民間漏洞眾測的優勢主要體現在哪裡?但對其監管是否存在難點?

TAG:信息安全 |