
ถอดรหัส Kerberoasting: การโจมตี Active Directory แบบเงียบเชียบ ที่หลายคนมองข้าม
Kerberoasting คืออะไร และทำงานอย่างไร?
การโจมตีแบบ Kerberoasting เป็นเทคนิคที่ผู้ไม่หวังดีใช้เพื่อขโมยรหัสผ่านของ Service Account ในระบบ Active Directory (AD) โดยที่ไม่ต้องใช้มัลแวร์ ไม่ต้องอาศัยช่องโหว่ หรือแม้แต่การยกระดับสิทธิ์ที่ผิดปกติเลย
ลองนึกภาพว่าในองค์กรมีระบบ Kerberos ทำหน้าที่เหมือนเป็นศูนย์กลางออกบัตรผ่าน ผู้ใช้งานที่ต้องการเข้าถึงบริการบางอย่าง เช่น ฐานข้อมูล SQL Server จะต้องไปขอ “บัตรผ่านบริการ” หรือที่เรียกว่า Service Ticket จาก Domain Controller (DC)
เมื่อ DC ออก Service Ticket ให้ บัตรนั้นจะถูกเข้ารหัสด้วยรหัสผ่านของ Service Account ที่เป็นเจ้าของบริการนั้นๆ
ผู้โจมตีฉวยโอกาสตรงนี้ โดยการทำตัวเป็นผู้ใช้งานทั่วไปในโดเมน จากนั้นก็ ร้องขอ Service Ticket สำหรับ Service Principal Names (SPN) ที่เจาะจง ซึ่ง SPN เหล่านี้ก็คือชื่อที่ใช้ระบุบริการต่างๆ ที่กำลังทำงานด้วย Service Account นั่นเอง
หลังจากได้ Service Ticket มา ผู้โจมตีจะดึงส่วนที่เข้ารหัสของบัตร ซึ่งภายในมี NTLM hash ของรหัสผ่าน Service Account ซ่อนอยู่ แล้วนำไปถอดรหัสแบบ Offline กระบวนการนี้จะทำนอกเครือข่ายขององค์กร ทำให้ไม่ทิ้งร่องรอยหรือสัญญาณเตือนภัยใดๆ ในระบบ
ทำไม Kerberoasting ถึงอันตรายและจับยาก?
ความน่ากลัวของ Kerberoasting อยู่ที่ความเป็น ความเงียบเชียบ ของมัน
ประการแรก ผู้โจมตีไม่จำเป็นต้องมีสิทธิ์สูงส่งใดๆ ในระบบ เพียงแค่มีสิทธิ์เป็น ผู้ใช้งานโดเมน (Domain User) ทั่วไป ก็สามารถร้องขอ Service Ticket เหล่านี้ได้แล้ว
ประการที่สอง การโจมตีนี้เป็นการใช้ โปรโตคอล Kerberos ตามขั้นตอนปกติของมัน ไม่ได้เป็นการเจาะระบบหรือรันโค้ดประสงค์ร้ายบนเซิร์ฟเวอร์โดยตรง
ด้วยเหตุนี้ ระบบ การตรวจสอบความปลอดภัย (Security Monitoring) หลายตัวจึงมักจะมองข้ามไป เพราะไม่เห็นการแจ้งเตือนใดๆ ที่ผิดปกติ ไม่มีมัลแวร์เข้ามา ไม่มีช่องโหว่ถูกใช้ ผู้โจมตีสามารถขโมยรหัสผ่านสำคัญไปได้โดยไร้ร่องรอยการบุกรุกที่ชัดเจน
Service Account: เป้าหมายหลักที่ต้องระวัง
ทำไม Service Account ถึงตกเป็นเป้าหมายสำคัญในการโจมตีแบบ Kerberoasting?
บ่อยครั้งที่ Service Account มักจะถูกตั้งรหัสผ่านที่ไม่แข็งแรงพอ บางครั้งก็เป็นรหัสผ่านเก่าเก็บที่ไม่มีการเปลี่ยนแปลงมานาน ทำให้การถอดรหัสแบบ Offline ทำได้ง่ายขึ้นมาก
นอกจากนี้ Service Account จำนวนมากมักมี สิทธิ์เข้าถึง (Privileges) สูง เพื่อให้บริการต่างๆ เช่น ฐานข้อมูล หรือแอปพลิเคชันทางธุรกิจ สามารถทำงานได้อย่างราบรื่นไม่มีสะดุด
หากผู้โจมตีสามารถถอดรหัสผ่านของ Service Account ที่มีสิทธิ์สูงได้ ก็เหมือนกับการได้ “กุญแจหลัก” ที่เปิดประตูสู่ข้อมูลและทรัพยากรสำคัญในองค์กร
การที่ Service Account ไม่ได้ถูกจัดการอย่างดี หรือมีรหัสผ่านที่ไม่ซับซ้อน จึงเป็นจุดอ่อนสำคัญที่ผู้โจมตีมักจะใช้ประโยชน์และพุ่งเป้าไปที่บัญชีเหล่านี้
ป้องกันตัวเองจาก Kerberoasting ได้อย่างไร?
การป้องกันการโจมตีแบบ Kerberoasting มุ่งเน้นไปที่การเสริมสร้างความแข็งแกร่งของ Service Account
สิ่งสำคัญที่สุดคือการตั้ง รหัสผ่านที่ซับซ้อนและยาวมาก สำหรับ Service Account อย่างน้อย 25 ตัวอักษรขึ้นไป การมีรหัสผ่านที่ยาวและมีตัวอักษรหลากหลายชนิด (ตัวพิมพ์เล็ก ตัวพิมพ์ใหญ่ ตัวเลข สัญลักษณ์) จะทำให้การโจมตีแบบ Offline ด้วยการเดาสุ่มรหัสผ่านเป็นไปได้ยากและใช้เวลานานจนเกินคุ้มค่าสำหรับผู้โจมตี
อีกวิธีที่ดีคือการพิจารณาใช้ Managed Service Accounts (MSAs) หรือ Group Managed Service Accounts (gMSAs) ซึ่งเป็นบัญชีบริการที่ Active Directory จัดการรหัสผ่านให้อัตโนมัติ รหัสผ่านเหล่านี้จะยาว ซับซ้อน และมีการหมุนเวียนเปลี่ยนรหัสผ่านเป็นประจำ ทำให้ปลอดภัยกว่าการตั้งรหัสผ่านเองอย่างมาก
สุดท้าย ควรมีการ ตรวจสอบและเฝ้าระวัง กิจกรรมการร้องขอ Kerberos Ticket ที่ผิดปกติอยู่เสมอ ตัวอย่างเช่น หากผู้ใช้งานคนเดียวร้องขอ Service Ticket สำหรับ SPN จำนวนมากผิดปกติในเวลาอันสั้น หรือมีการร้องขอจากเครื่องที่ไม่ควรเป็นผู้ร้องขอ การตรวจจับรูปแบบเหล่านี้ช่วยให้ระบุความพยายามในการโจมตีได้เร็วขึ้นและสามารถดำเนินการป้องกันได้ทันท่วงที