Kerberos และ Kerberoasting
ถอดรหัสตั๋วของบัญชีบริการ
Kerberos และ Kerberoasting เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
เคอร์เบอรอสในภาพเดียว
เคอร์เบอรอสเป็นโพรโทคอลการพิสูจน์ตัวตนที่ใช้ตั๋ว แทนที่จะส่งรหัสผ่าน ไคลเอ็นต์จะแสดงตั๋วเข้ารหัสที่ออกโดยศูนย์กระจายกุญแจ (KDC) ซึ่งทำงานอยู่บนตัวควบคุมโดเมนทุกเครื่อง
- เซิร์ฟเวอร์พิสูจน์ตัวตน (AS) ออกตั๋วอนุญาตออกตั๋ว (TGT)
- เซิร์ฟเวอร์ออกตั๋วอนุญาต (TGS) ออกตั๋วบริการ
- บริการตรวจสอบตั๋วได้โดยไม่ต้องติดต่อ DC
การแลกเปลี่ยนสามครั้ง
เคอร์เบอรอสมีการแลกเปลี่ยนข้อความสามครั้ง การทำความเข้าใจการแลกเปลี่ยนเหล่านี้จะทำให้เห็นว่าการโจมตีเกิดขึ้นตรงจุดใด
- AS-REQ / AS-REP: ไคลเอ็นต์พิสูจน์ตัวตน (การพิสูจน์ตัวตนล่วงหน้า) และรับ TGT ที่เข้ารหัสด้วยกุญแจ krbtgt
- TGS-REQ / TGS-REP: ไคลเอ็นต์แสดง TGT เพื่อขอตั๋วบริการ (TGS)
- AP-REQ / AP-REP: ไคลเอ็นต์แสดง TGS ต่อบริการ
การรีดรหัสผ่านจาก AS-REP โจมตีการแลกเปลี่ยนครั้งแรก ส่วนการรีดรหัสผ่านจากตั๋วบริการโจมตีครั้งที่สอง
ชื่อหลักของบริการ
ชื่อหลักของบริการ (SPN) เชื่อมโยงอินสแตนซ์ของบริการกับบัญชีที่ใช้เรียกใช้บริการนั้น เมื่อคุณขอ TGS สำหรับ SPN ตั๋วที่ได้จะถูกเข้ารหัสบางส่วนด้วยค่าแฮชรหัสผ่านของบัญชีบริการ
นี่คือหัวใจของการรีดรหัสผ่านจากตั๋วบริการ: ผู้ใช้ที่ผ่านการพิสูจน์ตัวตนทุกคนสามารถขอตั๋วสำหรับบัญชีบริการ แล้วถอดรหัสแบบออฟไลน์เพื่อกู้คืนรหัสผ่านแบบข้อความธรรมดา
# Find accounts with SPNs set
Get-DomainUser -SPN | select samaccountname,serviceprincipalnameขั้นตอนการรีดรหัสผ่านจากตั๋วบริการ
การรีดรหัสผ่านจากตั๋วบริการสร้างสัญญาณรบกวนน้อย เพราะการขอ TGS เป็นพฤติกรรมปกติ ขั้นตอนการโจมตีมีดังนี้:
- สำรวจบัญชีผู้ใช้ที่มี SPN
- ขอตั๋ว TGS สำหรับ SPN เหล่านั้น
- ดึงชุดข้อมูลตั๋วที่เข้ารหัสออกมา
- ถอดรหัสแบบออฟไลน์ด้วยรายการคำ โดยไม่ต้องติดต่อ DC ระหว่างการถอดรหัส
# Rubeus: request and dump kerberoastable hashes
Rubeus.exe kerberoast /outfile:hashes.txt
# Impacket from Linux
GetUserSPNs.py domain/user:pass -dc-ip 10.0.0.10 -requestการถอดรหัสตั๋ว
ตั๋วที่เก็บได้ใช้รหัสผ่านของบัญชีบริการเป็นกุญแจ การถอดรหัสแบบออฟไลน์จะลองรหัสผ่านที่คาดเดาไว้จนกว่าจะมีรหัสหนึ่งถอดรหัสตั๋วได้อย่างถูกต้อง
บัญชีบริการมักมีรหัสผ่านที่อ่อนแอและไม่เคยเปลี่ยนหมุนเวียน จึงทำให้ถอดรหัสได้อย่างรวดเร็ว
# Hashcat mode 13100 = Kerberos 5 TGS-REP etype 23 (RC4)
hashcat -m 13100 hashes.txt rockyou.txt
# etype 18 (AES256) uses mode 19700
hashcat -m 19700 hashes_aes.txt rockyou.txtประเภทการเข้ารหัสมีความสำคัญ
รหัสเข้ารหัสที่ใช้กับตั๋วส่งผลต่อความเร็วในการถอดรหัส
- RC4 (etype 23) ถอดรหัสได้อย่างรวดเร็วและเป็นสัญญาณอันตรายหากยังอนุญาตให้ใช้งาน
- AES (etype 17/18) ใช้เวลานานกว่ามากในการลองสุ่มรหัสผ่าน
- ผู้โจมตีอาจลดระดับคำขอให้ใช้ RC4 ด้วยการใช้
/tgtdelegหรือใช้msDS-SupportedEncryptionTypesในทางที่ผิด
ฝ่ายป้องกันควรปิดใช้ RC4 ทั่วทั้งโดเมนและบังคับใช้ AES
การรีดรหัสผ่านจาก AS-REP
การโจมตีที่เกี่ยวข้องกันนี้มุ่งเป้าไปยังบัญชีที่ปิดใช้การพิสูจน์ตัวตนล่วงหน้าของเคอร์เบอรอส (DONT_REQ_PREAUTH) หากไม่มีการพิสูจน์ตัวตนล่วงหน้า AS-REP จะมีข้อมูลที่เข้ารหัสด้วยค่าแฮชรหัสผ่านของผู้ใช้ ซึ่งสามารถขอได้โดยไม่ต้องมีข้อมูลรับรองใด ๆ
# Rubeus AS-REP roast
Rubeus.exe asreproast /format:hashcat /outfile:asrep.txt
# Hashcat mode 18200
hashcat -m 18200 asrep.txt rockyou.txtเหตุใดจึงได้ผลบ่อย
การรีดรหัสผ่านจากตั๋วบริการได้ผลเนื่องจากจุดอ่อนเชิงโครงสร้าง ไม่ใช่ข้อบกพร่องของโพรโทคอล
- ตัวการที่ผ่านการพิสูจน์ตัวตนทุกคนสามารถขอตั๋วบริการใด ๆ ได้ตามการออกแบบ
- บัญชีบริการมักถูกตั้งค่าครั้งเดียวด้วยรหัสผ่านที่อ่อนแอและไม่เคยเปลี่ยนหมุนเวียน
- บัญชีจำนวนมากทำงานด้วยสิทธิ์ระดับสูง เช่น บัญชีบริการ SQL ในกลุ่มผู้ดูแลโดเมน
- การถอดรหัสทำแบบออฟไลน์ทั้งหมด ดังนั้นการล็อกบัญชีจึงไม่ทำงาน
กลยุทธ์การตรวจจับ
ฝ่ายป้องกันสามารถตรวจจับการรีดรหัสผ่านได้จากข้อมูลการติดตามคำขอ TGS
- เฝ้าติดตามเหตุการณ์
4769สำหรับคำขอตั๋ว RC4 (0x17) โดยเฉพาะเมื่อมีคำขอจำนวนมากจากบัญชีเดียว - แจ้งเตือนเมื่อตัวการเดียวขอ SPN ที่แตกต่างกันจำนวนมากภายในเวลาอันสั้น
- ติดตั้งบัญชี SPN กับดักที่ไม่มีบริการที่ถูกต้องใช้งาน คำขอใด ๆ ที่ส่งมายังบัญชีเหล่านี้ถือเป็นอันตราย
การเสริมความมั่นคงให้บัญชีบริการ
วิธีแก้ที่ยั่งยืนคือการกำจัดเงื่อนไขที่ทำให้สามารถถอดรหัสตั๋วได้
- ใช้บัญชีบริการที่จัดการโดยกลุ่ม (gMSA)ซึ่งมีรหัสผ่านยาวอย่างน้อย 120 อักขระและเปลี่ยนอัตโนมัติ
- บังคับใช้รหัสผ่านที่ยาวและซับซ้อนกับบัญชีบริการแบบดั้งเดิมที่ยังเหลืออยู่
- ปิดใช้ RC4 และกำหนดให้ใช้ประเภทการเข้ารหัส AES
- นำ SPN ที่ไม่จำเป็นออกและจำกัดสิทธิ์ของบัญชีตามหลักสิทธิ์น้อยที่สุด
การปฏิบัติงานอย่างมีจริยธรรม
ระหว่างการทดสอบที่ได้รับอนุญาต ให้ถอดรหัสตั๋วในสภาพแวดล้อมที่แยกออกมา และอย่าส่งข้อมูลรับรองแบบข้อความธรรมดาออกไปนอกขอบเขตงานโดยเด็ดขาด รายงานว่าบัญชีใดถูกถอดรหัสและใช้เวลาเท่าใด เพื่อให้ลูกค้าจัดลำดับความสำคัญในการย้ายไปใช้ gMSA
ให้ถือว่ารหัสผ่านที่ถอดรหัสได้เป็นข้อมูลอ่อนไหว จัดเก็บข้อมูลเหล่านี้แบบเข้ารหัสและลบทิ้งหลังจากรายงานผลแล้ว
ตรวจสอบความเข้าใจ
ตรวจสอบความเข้าใจเกี่ยวกับกลไกของการโจมตีแบบเคอร์เบอโรสติง
ทบทวน
คุณได้เรียนรู้ว่าเคอร์เบอรอสออกตั๋วอย่างไร และกลไกดังกล่าวถูกนำไปใช้ในทางที่ผิดอย่างไร
- ตั๋ว SPN ถูกเข้ารหัสด้วยแฮชของบัญชีบริการ ทำให้สามารถถอดรหัสแบบออฟไลน์ได้
- ตั๋วที่ใช้ RC4 ถอดรหัสได้รวดเร็ว ส่วน AES และ gMSA เป็นกลไกป้องกัน
- การโรสต์แบบ AS-REP ไม่ต้องใช้ข้อมูลรับรองเมื่อปิดใช้งานการยืนยันตัวตนล่วงหน้า
- SPN ล่อและการเฝ้าติดตามตั๋ว RC4 ของเหตุการณ์ 4769 ช่วยตรวจจับการโจมตีได้
ต่อไปเราจะกล่าวถึงการนำข้อมูลรับรองที่ขโมยมาใช้ซ้ำด้วยการส่งผ่านแฮชและการส่งผ่านตั๋ว
เรียนรู้ Cyber Security Academy ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 76
- บทเรียน
- 303
คำถามที่พบบ่อย
บทเรียน “Kerberos และ Kerberoasting” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Kerberos และ Kerberoasting” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Kerberos และ Kerberoasting”
ถอดรหัสตั๋วของบัญชีบริการ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “Kerberos และ Kerberoasting” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นผิวการโจมตีของ Active Directory
- Kerberos และ Kerberoasting
- Pass-the-Hash และ Pass-the-Ticket
- การยกระดับสิทธิ์และการครอบงำโดเมน