歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

域滲透技術解析:Roasting AS-REP

來源:本站整理 作者:佚名 時間:2019-07-01 TAG: 我要投稿

去年11月,我發表了一篇名為"沒有 Mimikatz 的 Kerberoast 攻擊利用"的文章,詳細介紹了PowerView和Tim Medin提出的Kerberoasting 攻擊的最新研究進展。這使我開始更仔細地研究 Kerberos。 幾周前,我的同事Lee Christensen發現Exumbra Operations的Geoff Janjua做了一個有趣的演講,題為"武器化 Kerberos 協議漏洞(Kerberos Party Tricks: Weaponizing Kerberos Protocol Flaws)",幻燈片和工具包可以在這里找到。Geoff提到的一個有趣的地方,也是他編寫的基于 Python 的"Party Trick"工具包執行的地方,就是濫用不需要 Kerberos 預身份驗證的用戶帳戶。
最近,我對這個話題進行了更深入的研究,并想與大家分享我所學到的和開發出的一些東西。這篇文章將給出一些我們正在濫用Kerberos的詳細背景和具體的問題是什么,如何輕松地列舉出不需要預身份認證的賬戶,如何在這些情況下提取可破解的哈希,以及最后如何有效地破解這些檢索到的哈希。還有一個相關的PowerShell工具包,ASREPRoast,可以在GitHub上找到。
tl;dr ——如果你可以枚舉Windows域中不需要Kerberos預身份認證的任何帳戶,那么你現在就可以輕松地為這些帳戶請求一條加密信息,并有效地離線破解這些賬戶的哈希,從而拿到用戶的明文密碼。
注意: 這并不是什么開創性的東西,顯然也沒有 Kerberoast 攻擊那么有用,因為賬戶必須明確設置DONT_REQ_PREAUTH讓其易受攻擊—— 你仍然依賴于密碼復雜性較弱這個弱點來實施攻擊。 然而,這種設置在某些環境中仍然存在,我們只是不確定這種情況發生的頻率,因為它不是我們以前通常要尋找的東西。我們的猜測是,它可能是為較老的帳戶而啟用的,特別是與Unix相關的帳戶。 如果你碰巧在"野外"發現了它,我們很樂意收到你的來信;)(在推特上@harmj0y 或者發郵件給 [email protected])。
如果你拿到的目標用戶擁有GenericWrite/GenericAll權限,你就可以惡意修改他們的userAccountControl屬性以使其不需要預身份驗證。之后使用ASREPRoast,重置這個屬性的值;)

背景
我不打算詳細介紹Kerberos的所有方面,因為像肖恩 · 梅特卡夫這樣的人已經在這方面做了大量的工作。 如果像AS-REQ 和 AS-REP這樣的術語對你來說是完全陌生的,那么我建議你先閱讀肖恩的文章,以便了解一些基本的背景知識。 我們在這篇文章中關注的是Kerberos 預身份認證這個方面。
在Windows Kerberos環境中的正常操作下,當你為給定用戶啟動TGT請求(Kerberos AS-REQ,消息類型為10)時,必須提供用該用戶的密鑰或密碼加密的時間戳。 這種結構是PA-ENC-TIMESTAMP,嵌入到AS-REQ的PA-DATA (預授權數據)中——這兩種結構在RFC4 120的第60頁都有詳細的描述,并在Kerberos版本5中進行了介紹。KDC 之后會解密時間戳,以驗證創建AS-REQ的主體是否真的是該用戶,然后返回AS-REP并繼續執行正常的身份驗證過程。
注意: 對于任何不正確的PA-ENC-TIMESTAMP嘗試,KDC確實增加了badpwdcount屬性,因此我們不能使用這種方法來在線爆破帳戶密碼: (
Kerberos預身份驗證的原因是為了防止離線密碼猜測。AS-REP票證本身使用的是服務密鑰(在本例中是 krbtgt hash)加密,而AS-REP"加密部分"則使用客戶機的密鑰(即我們發送 AS-REQ 的用戶的密鑰)進行簽名。如果沒有啟用預身份認證,攻擊者可以向任何沒有要求預身份認證的用戶發送AS-REQ,并收到一些加密數據塊,這些加密的數據可以進行離線破解從而泄露目標用戶的明文密碼。
這是人們早就知道的事情,畢竟,它是在 Kerberos 中實現預身份認證的原因! 在現代Windows環境中,所有用戶帳戶都需要Kerberos預身份認證,但有趣的是,默認情況下Windows嘗試 AS-REQ和AS-REP交換,而不是首先進行身份認證,讓我們回到在第二次提交時提供加密的時間戳:

我不知道為什么會發生這種行為?!
@munmap 在推特上指出,這種行為是由于客戶端事先不知道支持的ETYPES,RFC6113的2.2章節中明確詳細說明了這一點。
然而,Windows 提供了一種通過修改useraccountcontrol手動禁用對特定帳戶進行保護的方法:

如果你已經是一個經過身份驗證的用戶(但在其他方面沒有特權) ,你可以使用LDAP過濾器輕松地枚舉該域中具有此設置的用戶(userAccountControl:1.2.840.113556.1.4.803:=4194304)。 PowerView 的Get-DomainUser已經使用 -PreauthNotRequired  參數實現了這個功能:

所以現在我們知道了問題所在,以及如何識別易受攻擊的用戶。 雖然十多年來已經出現了對Kerberos交換中的AS-REQ的PA-ENC-TIMESTAMP組件進行暴力破解的方式(哈希格式甚至在 Hashcat 已經存在, -m 7500/ ‘Kerberos 5 AS-REQ Pre-Auth’) ,但我所見過的唯一攻擊RC4的工具集是 Geoff 的 Python 工具包。 我們需要一些基于Windows的工具,這些工具也不需要機器上的管理特權來允許我們在攻擊工作流程中保持靈活性。 我們還希望有一種更快的方法來破解這些哈希。
ASREPRoast
我的第一個希望是在 .NET 中找到一些已經公開的類似于Kerberoast 攻擊方法的AS-REP原始字節。我花了一段時間尋找相關的.NET方法,希望有某個方法能夠訪問AS-REP的原始字節響應,但不幸出現。雖然我不能確定這是否是不可能做到的,但我的直覺告訴我這可能是一個非常有深度的抽象層,我們無法輕易到達。即使.NET有這樣的方法,我們仍然有一個難題要解決,因為現代 Windows Kerberos環境在AS-REP中默認使用AES256-CTS-HMAC-SHA1-96進行加密,而不是用更快的ARCFOUR-HMAC-MD5/RC4方法。RC4-HMAC的破解速度要快得多,所以如果可能的話,我們更喜歡它。

[1] [2] [3]  下一頁

【聲明】:黑吧安全網(http://www.zjtpzs.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        神秘东方电子游艺