พอดีได้อ่าน post เกี่ยวกับสรุปการทำงานของ Kerberos Authentication Protocol แล้วเห็นว่ามันเข้าใจง่ายดีเลยเอามาโพสต์ดูครับ

Active Directory (AD)

ก่อนที่จะทำไปถึง Kerberos เรามาทำความเข้าใจเรื่อง Active Directory กันซักหน่อย Active Directory คือ Enterprise Server ที่คอย control คนทั้งองค์กร หรือก็คือ “Domain Controller” (DC) โดยมีการจัดการโครงสร้างของผู้ใช้งานและหน่วยงานต่างๆเป็นแบบ hierarchcical structure

AD จะทำตามมาตรฐาน x.500 และทำงานในระดับ Application Layer (OSI Model) ทำให้ admin สามารถควบคุม user และ resouse ทั้งหมด โดย AD จะเก็บข้อมูลทั้งหมดไว้ใน database และใช้งาน “Kerberos protocol” สำหรับการ authentication และใช้ LDAP สำหรับการรับข้อมูล โดย user ทั้งหมดต้อง authentication กับ DC ก่อนที่จะเข้าถึง resource ใดๆหรือ service ใดๆใน Domain ซึ่ง DC จะสามารถเขียน policy ให้ทุกๆ user ทำสิ่งที่ต้องการได้และกำหนดสิทธิ์ของ user ได้ ทำให้ admin ทำงานได้ง่ายขึ้น โดย AD มีรายละเอียดปลีกย่อยที่สำหรับการควบคุมดังต่อไปนี้

  • Object คือ network resource ใดๆใน AD ไม่ว่าจะเป็น computers, users, printers และอื่นๆ
  • Domain คือกลุ่มของ object ในองค์กร
  • Tree คือ collection ของ domain ตั้งแต่ 1 ขึ้นไป โดย domain ทั้งหมดจะอยู่ภายใต้ tree เดียวกัน แชร์ schema ร่วมกัน
  • Forest คือ collection ของ tree ที่แชร์ Directory Schema และ configuration กันข้ามองค์กร

การ Authentication ของ Kerberos

กฏการใช้งานง่ายๆคือ กล่องใดๆเปิดได้เฉพาะกุญแจสีเดียวกันเท่านั้น กล่องสีเดียวกันถูกสร้างได้ด้วยกุญแจสีเดียวกัน และ User ใดๆจะมีกุญแจสีไม่ซ้ำกันเลย
สรุปจาก post ได้ตามนี้ครับ
– AS (Authentication Server)
– Ticket Granting Server (TGS)
1. user ส่งชื่อไปยัง AS (user มี black key)
2. AS สร้าง red key แล้วส่งคืนไปให้กับ user โดยใช้กล่อง black ที่สร้างจาก black key
3. AS มี green key อยู่ ก็เลยสร้าง green chest ส่ง red key พร้อมกับแปะชื่อ user ไว้ข้างใน ส่งไปให้กับ service ต่างๆอย่าง FTP
4. เมื่อ user ต้องการ authen ก็ทำการสร้างกล่อง red จาก red key ที่ได้รับ แล้วก็เอาชื่อตัวเองใส่เข้าไปในกล่อง red แล้วส่งไปให้กับ FTP
5. พอ TGS ที่มี key ของ FTP Server และเป็นตัวครอบครอง key ของ AS ไว้ได้รับกล่อง red จาก user ก็จะเปิดด้วย red key แล้วก็เอาชื่อมาเช็คว่าตรงกับที่เคยได้รับก่อนหน้านี้มั้ย เมื่อเช็คแล้วก็จะสร้าง yellow key ขึ้นมาสำหรับผ่านการตรวจสอบขึ้นมา แล้วก็สร้าง blue box จาก blue key ของ FTP server แล้วยัด key สีเหลืองกับชื่อของ user เข้าไปในกล่อง blue
6. TGS ส่งกล่อง red ที่มี yellow key กลับไปให้ user พร้อมกับกล่อง blue ที่มี yellow key อยู่ภายใน + ชื่อ user
7. User ได้รับกล่องสี red และ blue จากนั้นก็เปิดกล่อง red เพราะมี red key อยู่ได้ yellow key แต่เปิดกล่อง blue ไม่ได้เพราะไม่มี key
8. User ส่งกล่อง yellow ที่สร้างจาก yellow key กลับไปยัง FTP Server โดยภายในนั้นมีชื่อของ user อยู่ด้วย พร้อมกับส่งกล่อง blue box ที่ตัวเองเปิดไม่ได้ให้ไปด้วย
9. เมื่อ FTP Server ได้รับก็เปิด blue box ด้วย key ของตัวเอง จากนั้นเอา yellow key ที่อยู่ภายใน blue box เปิด yellow box แล้วเอาชื่อของ user ออกมา เช็คกับชื่อของ user ที่อยู่ในกล่อง blue box ว่าตรงกันมั้ย ถ้าตรงกันแสดงว่าเป็นคนเดียวกับที่ต้องการเข้าใช้งานจริง
 

 การโจมตีที่อาจเกิดขึ้นได้กับ Kerberos

อย่างที่บอกไปแล้วว่าเครื่องใดๆที่ join AD นั้นจำเป็นต้องใช้งานผ่าน Kerberos ดังนั้นแน่นอนว่าหากโจมตี Kerberos ได้ ก็เรียกได้ว่ายึด Domain ได้เลยก็ว่าได้ ก็เลยมีการโจมตีในหลากหลายรูปแบบขึ้นมา

  • Silver Tickets เป็น Ticket Granting Service (TGS) ซึ่งเป็น service tickets สามารถสร้างได้โดย crack account password ในเครื่อง user แล้วนำมาสร้าง fake authentication ticket ซึ่ง Kerberos อนุญาตให้ใช้ services login เข้าสู่ระบบโดยไม่มีการ check ว่า token นั้น valid หรือไม่ โดย ticket ดังกล่าวทำให้เราสามารถเข้าถึง service บาง service ที่ใช้ Kerberos เป็นส่วน authenticate 

  • Golden Tickets KRBTGT account ซึ่งใช้ในการ encrypt และ sign Kerberos ticket ทั้งหมด โดย Account นี้ password จะไม่มีหมดอายุ และ KRBTGT จะไม่มีการเปลี่ยนชื่อใน domain ใดๆ จะเหมือนเดิมตลอด สิ่งที่ต้องทำให้ได้คือเอา KRBTGT password hash มาให้ได้ก่อน ซึ่งเป็นส่วนสำคัญสุด โดยการจะได้มาซึ่ง password hash นั้นเราต้องเข้าถึง AD และใช้สิทธิ์ admin ให้ได้ก่อน โดยสามารถดูวิธีการสร้าง Golden Ticket ได้จากในนี้ครับ