Kerberoasting
ถอดรหัสตั๋วบริการ
Kerberoasting เป็นบทเรียน Ethical Hacking Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ethical Hacking Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
Kerberoasting คืออะไร
Kerberoasting คือการโจมตีที่มุ่งเป้าไปยังบัญชีบริการใน Active Directory ผู้ใช้โดเมนที่ยืนยันตัวตนแล้วทุกคนสามารถขอตั๋วบริการของบัญชีที่มีชื่อหลักของบริการ (SPN) ได้
ส่วนหนึ่งของตั๋วนั้นเข้ารหัสด้วยแฮชรหัสผ่านของบัญชีบริการ ผู้โจมตีจึงสามารถถอดรหัสแบบ ออฟไลน์ ได้โดยไม่ต้องติดต่อบัญชีนั้นเลย
เหตุผลที่วิธีนี้ใช้ได้
เมื่อผู้ใช้ขอตั๋วบริการ (TGS) KDC จะเข้ารหัสส่วนหนึ่งของตั๋วด้วยแฮช NTLM ของรหัสผ่านบัญชีบริการ
เนื่องจากผู้ใช้โดเมนทุกคนสามารถขอตั๋วนี้ได้ และไม่จำเป็นต้องมีสิทธิ์พิเศษ ผู้โจมตีจึงเพียงรวบรวมตั๋วแล้วค่อย ๆ ถอดรหัสบนเครื่องของตนเอง
การค้นหาบัญชี SPN
ขั้นแรก ให้แจกแจงบัญชีที่กำหนด SPN ไว้ บัญชีเหล่านี้มักเป็นบัญชีบริการที่เรียกใช้ SQL เว็บ หรือบริการอื่น ๆ
บัญชีผู้ใช้ (ไม่ใช่บัญชีเครื่อง) ที่มี SPN เป็นเป้าหมายที่เหมาะสมอย่างยิ่ง เพราะรหัสผ่านมักตั้งโดยมนุษย์และไม่ค่อยมีการเปลี่ยน
# PowerView
Get-DomainUser -SPN | select samaccountname,serviceprincipalnameการขอตั๋วด้วย Rubeus
Rubeus เป็นเครื่องมือ C# ยอดนิยมสำหรับใช้ Kerberos ในทางที่ผิด คำสั่ง kerberoast จะขอตั๋ว TGS ของบัญชี SPN และส่งออกในรูปแบบที่ถอดรหัสได้
ขั้นตอนนี้ไม่สะดุดตา เพราะมีลักษณะเหมือนการรับส่งข้อมูล Kerberos ปกติจากผู้ใช้ที่ถูกต้อง
Rubeus.exe kerberoast /outfile:hashes.txtการขอตั๋วด้วย Impacket
จาก Linux เครื่องมือ Impacket คำสั่ง GetUserSPNs.py จะทำการโจมตีแบบเดียวกันจากระยะไกลโดยใช้ข้อมูลประจำตัวโดเมนที่ถูกต้อง
วิธีนี้มีประโยชน์ระหว่างการปฏิบัติงานจากภายนอกหรือการปฏิบัติงานที่สมมติว่าถูกเจาะระบบแล้ว ซึ่งคุณมีข้อมูลประจำตัวที่มีสิทธิ์ต่ำอยู่หนึ่งชุด
GetUserSPNs.py corp.local/lowuser:Password1 -dc-ip 10.0.0.10 -requestรูปแบบแฮช
ตั๋วที่จับมาได้จะถูกบันทึกในรูปแบบที่ Hashcat รู้จักในโหมด 13100 (Kerberos 5 TGS-REP etype 23, RC4)
แฮชแต่ละรายการเริ่มต้นด้วย $krb5tgs$23$ ตามด้วย SPN บัญชี และข้อมูลที่เข้ารหัส นี่คือข้อมูลที่คุณป้อนให้เครื่องมือถอดรหัส
$krb5tgs$23$*svc_sql$CORP.LOCAL$MSSQL/...*$a1b2c3...การถอดรหัสด้วย Hashcat
การถอดรหัสแบบออฟไลน์จะใช้รายการคำ (มักใช้ร่วมกับกฎ) ทดสอบกับแฮชที่เก็บมาได้ เนื่องจากตั๋ว RC4 ทดสอบได้รวดเร็ว รหัสผ่านบริการที่คาดเดาได้ง่ายจึงถูกถอดรหัสได้อย่างรวดเร็ว
ด้วยเหตุนี้ รหัสผ่านของบัญชีบริการจึงควรยาวและสุ่มอย่างแท้จริง โดยควรจัดการผ่าน Group Managed Service Accounts (gMSA)
hashcat -m 13100 hashes.txt rockyou.txt -r best64.ruleประเภทการเข้ารหัสมีความสำคัญ
หากบัญชีรองรับ RC4 (etype 23) การถอดรหัสจะทำได้รวดเร็ว แต่หากอนุญาตเฉพาะ AES (etype 17/18) การถอดรหัสจะช้าลงมาก แต่ยังคงทำได้ (โหมด 19600/19700 ของ Hashcat)
ผู้โจมตีอาจลดระดับประเภทการเข้ารหัสที่ร้องขอ เพื่อบังคับให้ใช้ตั๋ว RC4 ที่อ่อนแอกว่า
การตรวจจับและการป้องกัน
ฝ่ายป้องกันจะเฝ้าดูปริมาณคำขอ TGS ที่ผิดปกติ โดยเฉพาะตั๋ว RC4 (รหัสเหตุการณ์ 4769) มาตรการลดความเสี่ยงได้แก่:
- ใช้รหัสผ่านบัญชีบริการที่ยาวและสุ่ม (อย่างน้อย 25 อักขระ)
- ใช้บัญชี gMSA ที่เปลี่ยนรหัสผ่านโดยอัตโนมัติ
- ปิดใช้งาน RC4 และบังคับใช้ AES
เหตุใดจึงเลือกโจมตีบัญชีบริการ
บัญชีบริการเป็นเป้าหมายที่น่าสนใจ เนื่องจากมักเป็นสมาชิกของกลุ่มที่มีสิทธิ์สูง ใช้รหัสผ่านเดิมเป็นเวลานาน และไม่ได้ผูกกับบุคคลใดบุคคลหนึ่งซึ่งอาจสังเกตเห็นความผิดปกติ
หากถอดรหัสบัญชีดังกล่าวได้ ก็อาจเข้าถึงสิทธิ์ Domain Admin ได้ทันที หากบัญชีบริการนั้นได้รับสิทธิ์มากเกินไปโดยประมาท
ตำแหน่งของเทคนิคนี้ในลำดับการโจมตี
โดยปกติจะทำ Kerberoasting ไม่นานหลังจากได้ฐานที่มั่นในโดเมน การทำเช่นนี้เป็นการสำรวจที่ก่อสัญญาณรบกวนน้อยร่วมกับการถอดรหัสแบบออฟไลน์ จึงแทบไม่ทำให้เกิดการแจ้งเตือน
บัญชีบริการที่ถอดรหัสได้มักนำไปสู่การเคลื่อนที่ด้านข้างหรือการยกระดับสิทธิ์ ทำให้เทคนิคนี้เป็นส่วนสำคัญของการทดสอบเจาะระบบภายในและปฏิบัติการทีมสีแดง
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ลองทบทวนข้อกำหนดหลักของ Kerberoasting
สรุปทบทวน
ขณะนี้คุณเข้าใจ Kerberoasting แล้ว:
- ผู้ใช้ใด ๆ ในโดเมนสามารถขอ TGS tickets สำหรับบัญชีที่มี SPN ได้
- ตั๋วจะเข้ารหัสด้วยแฮชของบัญชีบริการ และถอดรหัสแบบ ออฟไลน์
- เครื่องมือ: Rubeus, Impacket GetUserSPNs.py และถอดรหัสด้วย โหมด 13100 ของ Hashcat
- ป้องกันด้วยรหัสผ่านที่ยาว, gMSA และการเข้ารหัสแบบ AES เท่านั้น
ถัดไป คุณจะนำข้อมูลประจำตัวกลับมาใช้โดยตรงด้วย Pass-the-Hash
คำถามที่พบบ่อย
บทเรียน “Kerberoasting” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Kerberoasting” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ethical Hacking Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Kerberoasting”
ถอดรหัสตั๋วบริการ คุณปฏิบัติ Ethical Hacking Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ethical Hacking Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ethical Hacking Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “Kerberoasting” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ethical Hacking Academy นี้ได้ไหม
ได้ บทเรียน Ethical Hacking Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน AD
- Kerberoasting
- Pass-the-Hash
- BloodHound