
Kerberoasting Attack
Incognito Lab
Kerberoasting Attack
Kerberoasting เป็นเทคนิคหนึ่งในการโจมตี Kerberos มีเป้าหมายเพื่อ crack หา Password ของ target service บน Windows Domain Environment แบบ offline โดยที่เราไม่จำเป็นต้องไปแตะหรือ interface กับ target service หรือเครื่องเป้าหมายเลย เพียงแค่เราคุยกับ KDC เพื่อขอ TGS มาก็พอ ข้อดีคือเราสามารถทำการ crack ในลักษณะ offline ได้ ทำให้เราไม่ต้องกังวลว่าจะสร้าง noise ใด ๆ ให้เกิดขึ้นบน target ปลายทางหรือใน environment ไม่ว่าจะเป็นการสร้าง log หรือเผลอทำ account lock
คำว่า "target service" ถูกเรียกใช้เพื่อความง่าย ถ้าจะระบุอย่างเฉพาะเจาะจงแล้วต้องหมายถึง AD(Active Directory) object ใด ๆ เช่นเป็น service account, user account หรือ computer object ก็ได้ ที่มี SPN(Service Principal Name) ผูกไว้อยู่เพื่อจะได้รู้ว่า service นั้น ๆ ถูก run ภายใต้ account อะไร เทคนิค Kerberoasting จึงมุ่งหมายโจมตีไปยัง password ของ SPN ซึ่งจะผูกกับ account ใน AD นั่นเอง
การโจมตีไปยัง account ที่มี SPN สร้างข้อได้เปรียบอย่างหนึ่งก็คือ password ที่ใช้มักจะไม่ได้เปลี่ยนบ่อยเนื่องจากมันเป็น service และให้เลือก SPN ที่เป็น user account อย่าไปใช้ computer account เพราะ password จะซับซ้อนกว่า
อารัมภบทมาพอสมควรแล้ว คราวนี้มาลองดูสิ่งที่เกิดขึ้นจากผ่าน Authentication flow ของ Kerberos กันบ้าง หากทำ TGS Request แบบปกติสิ่งที่ตอบกลับมาจะเป็น TGS ในรูปแบบของ

how-it-work.png
enc(\[username,service_session_key,TGS period,PAC\],target_key)
ซึ่ง TGS นั้นมีแต่ target service ที่จะสามารถแงะออกมาได้ หากเราได้ TGS มาย่อมมีความเป็นไปได้ที่จะหา target_key ได้เช่นกัน และถ้าหากทำสำเร็จสิ่งที่ได้ก็คือ password ของ SPN ที่เรากำลังสนใจนั่นเอง
Attack Methods
สำหรับกรณี Kerberoasting attack ผู้เขียนเองชอบใช้ PowEnum ที่มี option ในการ run kerberoasting ด้วย ( PowEnum เป็น PowerShell Script ที่เรียกใช้ function ของ Powerview มีไว้เพื่อทำการ enumerate ข้อมูลจาก Active Directory ใช้งานสะดวกเพราะ run เพียง 1 คำสั่งก็จะได้ข้อมูลที่สามารถดึงได้จาก AD อยู่หลายอย่างทั้ง Users, Group, AdminCount, DNS Record หรือ File Servers สามารถไปดูรายละเอียดการใช้งานได้จาก https://github.com/whitehat-zero/PowEnum
การทำ Kerberoasting attack นั้นจำเป็นที่จะต้องได้ TGT ก่อน นั่นหมายความว่าต้องมี domain user account เรียบร้อยแล้วถึงจะโจมตีได้ สำหรับ PowEnum สามารถเริ่มต้นใช้งานได้จากเครื่องที่ไม่ได้ join domain โดย run คำสั่งจาก cmd ดังนี้
\> runas /netonly /user:demodomain\\dorothy powershell
Enter the password for demodomain\\dorothy:
Attempting to start powershell as user "demodomain\\dorothy" …
หลังจาก PowerShell console แสดงผลแล้วให้เรียกใช้ PowEnum
\> Import-Module .\\PowEnum.ps1
\> Invoke-PowEnum -NoExcel -Mode Roasting -FQDN demodomain.local
หากใน Domain Environment มี SPN อยู่ จะพบว่าจะสามารถระบุได้ว่ามี SPN กี่ account ที่ทำ Kerberoast มาได้ จากภาพจะพบว่ามี 2 account

PowEnum result
ให้เปิด output file จะพบค่า TGS ของ SPN ที่หามาได้
$krb5tgs$23$\*svcsytem1$demodomain.local$MSSQLSvc/system7.demodomain.
local:1433\*$6E18FA25B… (stripped)
$krb5tgs$23$\*svcadmin$demodomain.local$MSSQLSvc/system8.demodomain.l
ocal:2138\*$5798BE…(stripped)
ลำดับถัดไปให้ทำ offline crack ด้วย hashcat ตาม style, dictionary และเทคนิคตามสะดวก
\> hashcat64 -r ..\\hob064.rule.txt -m 13100 ..\\kerb_tgs.txt
..\\rockyou.txt -o cracked.txt — force
Mitigation
- ถ้าใช้ service account และมีการตั้ง SPN อยู่ด้วย ให้ทำการตั้งค่า password ที่ strong และ complex ที่ยากและใช้ effort มากเกินกว่าที่จะ crack ได้ในระยะเวลาที่ attacker จะทนรอได้
- หากต้องการใช้ service account ให้เปลี่ยนไปใช้ Group Managed Service Account (gMSA) ที่ AD จะเป็นผู้รับผิดชอบเรื่อง password เอง ลองดูรายละเอียดเพิ่มเติมได้จาก
- https://techcommunity.microsoft.com/t5/itops-talk-blog/step-by-step-how-to-work-with-group-managed-service-accounts/ba-p/329864
- https://medium.com/tech-jobs-academy/creating-and-associating-a-group-managed-service-account-19843050a6a6
Reference
- ทำความรู้จักกับ SPN และดูตัวอย่างของ SPN ได้ที่ https://en.hackndo.com/service-principal-name-spn/
Up Next

NEWS
Jul
07
2021
Incognito Lab Certified ISO/IEC 27001:2013
เมื่อไม่กี่วันที่ผ่านมานี้ทางเรา Incognito Lab ได้ผ่านการตรวจรับรองและได้รับใบประกาศนียบัตรมาตรฐาน ISO/IEC 27001:2013
READ MORE

ARTICLES
Jun
10
2021
ทำความรู้จัก หลักเกณฑ์การกำกับดูแลและบริหารจัดการความเสี่ยงด้านเทคโนโลยีสารสนเทศ ของบริษัทประกันชีวิตและประกันวินาศภัย พ.ศ. 2563 ตอนที่ 1
ปัจจุบันถือเป็นเรื่องสำคัญอย่างยิ่งสำหรับองค์กรทุกองค์กร ในความพยายามที่จะปฏิบัติกฎหมาย กฎระเบียบ ประกาศ และข้อบังคับต่างๆ ที่ถูกประกาศออกมาและบังคับใช้จากหน่วยงานภาครัฐ
READ MORE

ARTICLES
Jun
07
2021
An untold story about web application vulnerability assessment
มาทำความรู้จักกับการทำ Web application VA ให้มากขึ้นกันนะครับ
READ MORE