สารบัญ
Series: CyberSecurity Foundation — รากฐาน Security สำหรับยุค AI (ภาษาคน)
Part 0 — WHY: เมืองนี้ทำไมต้องมียาม
- EP.01 — Cybersecurity คือเรื่องของคุณ
- EP.02 — 4 เคสที่เปลี่ยนวงการ
- EP.03 — CIA Triad
- EP.04 — Defense in Depth + Diversity
- EP.05 — Assume Breach + Risk
Part 1 — HOW: ระบบนิเวศของเมือง 6. EP.06 — ระบบนิเวศของโจร 7. EP.07 — ระบบนิเวศของผู้ป้องกัน 8. EP.08 — Framework: ISO/NIST/COBIT/CIS 9. EP.09 — Compliance Theater
Part 2 — Identity: บัตรประชาชน + กุญแจห้อง 10. EP.10 — IAM Lifecycle: เข้า / ย้าย / ออก 11. EP.11 — Authentication: 3 Factors + AAA 12. EP.12 — Password 101: MD5 / bcrypt / Salt / Pepper 13. EP.13 — MFA + Biometric: ที่ดี ที่หลอกได้ — และอนาคตของ Passkey 14. EP.14 — Kerberos: ระบบ check-in โรงแรมที่ Microsoft ใช้ทั่วโลก ← คุณอยู่ตรงนี้ 15. EP.15 — Federation / SSO (เร็วๆ นี้) 16. EP.16 — Authorization (เร็วๆ นี้) 17. EP.17 — PAM + Zero Trust (เร็วๆ นี้)
Part 3-6 (Data / Infrastructure / Operations / Governance) — กำลังเขียนต่อ
ครับ — EP.11-13 ผมพาคุณดูเรื่อง authentication ทุกซอกทุกมุม. 3 factors (Know / Have / Are), password (Hashing / Salt / Pepper / bcrypt), MFA 5 ระดับ (SMS OTP จนถึง Passkey), Biometric (ดี + หลอกได้). ทั้งหมดที่เล่ามา — เป็น authentication ในมุมของ คุณคนเดียว — คุณ login Gmail ของคุณ, คุณ login mobile banking ของคุณ, คุณ unlock มือถือของคุณ
ใน EP นี้ผมเปลี่ยน scale ครับ. ลองนึกบริษัทขนาดกลางในไทยสักแห่ง — พนักงาน 500 คน, เครื่อง Windows 1,000 เครื่อง (notebook + desktop + เครื่องในโรงงาน), ระบบภายใน 50 ระบบ — file server ของแต่ละแผนก, email server, intranet, SAP, ระบบ HR, printer ในแต่ละชั้น, share drive ของฝ่ายบัญชี. พนักงานคนนึงเดินเข้าออฟฟิศ 9 โมงเช้า — เปิดเครื่อง — ใส่ username + password ของ Windows ครั้งเดียว — แล้วใช้งานได้ตลอดวัน. เปิด Outlook (ไม่ต้องใส่ password อีก), เปิด file server (ไม่ต้องใส่ password อีก), เปิด SAP (ไม่ต้องใส่ password อีก), เปิด intranet (ไม่ต้องใส่ password อีก)
ระบบรู้ยังไงว่าเขาคือเขา? ทุก app, ทุก server, ทุกบริการ — ตรวจตัวตนของพนักงานคนนี้ยังไง โดยที่เขาไม่ต้องพิมพ์ password ซ้ำ 50 ครั้ง? และที่สำคัญกว่านั้น — ทำยังไงให้ password ของพนักงานไม่ต้องไปเก็บที่ server 50 ตัว? เพราะถ้า password อยู่ที่ทุก server — server ตัวไหนโดน hack = password หลุดทั้งบริษัท
คำตอบของวงการ — คือ protocol ที่ชื่อ Kerberos. เกิดที่ MIT ในปี 1988. ตั้งชื่อตามตำนานกรีก — เคอร์เบอรอส หมาเฝ้านรกสามเศียร. Microsoft รับเอาไปใส่ใน Windows 2000 — เป็น backbone ของ Active Directory — และตั้งแต่นั้นมา — Kerberos คือกลไก authentication ที่บริษัทใหญ่ทั่วโลกใช้ในระบบภายใน. ในปี 2026 — แทบทุกบริษัทที่มี Windows server + Active Directory — กำลังพึ่ง Kerberos อยู่ ทั้งที่ผู้บริหารส่วนใหญ่ไม่เคยได้ยินชื่อมัน
ทั้งหมดเดินอยู่บน analogy เดียวที่จะอยู่กับเราตลอดทั้งบทครับ — โรงแรม + บัตรแขก + คีย์ห้อง. ถ้าคุณเคย check-in โรงแรมในชีวิต — คุณเข้าใจ Kerberos ได้แน่นอน
เริ่มจากปัญหาก่อนครับ
ปัญหาก่อนมี Kerberos — ทำไมต้องคิดอะไรที่ซับซ้อนขนาดนี้
ก่อนจะเข้าใจว่า Kerberos แก้ปัญหาอะไร — ผมต้องพาคุณกลับไปดูโลกก่อนยุค Kerberos ก่อนครับ. โลกที่ enterprise IT ในปี 1980s ต้องอยู่กับ
ลองนึกบริษัทใหญ่ในยุคนั้น — มหาวิทยาลัย MIT ตอนปี 1980s ใช้ได้ดีเลย. มี mainframe หลายเครื่อง, มี server หลายตัว — ของฝ่าย physics หนึ่งเครื่อง, ของฝ่าย biology อีกเครื่อง, ของห้องสมุดอีกเครื่อง, ของระบบทะเบียนอีกเครื่อง. นักศึกษา + อาจารย์ — แต่ละคนต้องใช้หลาย server. คำถามคือ — server แต่ละตัว ตรวจตัวตนของผู้ใช้ยังไง?
ทางเลือกในยุคนั้นมี 2 แบบ — และทั้งสองแบบมีปัญหาคนละด้าน
ทางที่หนึ่ง — แต่ละ server เก็บ password ของผู้ใช้เอง. ผู้ใช้ login server ของ physics ด้วย username + password ของ physics. login server ของ biology ด้วย username + password ของ biology. ผลที่ตามมา — ผู้ใช้คนเดียวต้องจำ password 5-10 ตัว. แย่กว่านั้นคือ — server ทุกตัวเก็บ password ของผู้ใช้ในฐานข้อมูลของตัวเอง. ถ้า server ของห้องสมุด (ที่ปลอดภัยน้อยที่สุด) โดน hack — password ของผู้ใช้ทุกคนหลุด — และเพราะคนชอบใช้ password ซ้ำ — โจรเอาไปลองที่ server อื่นๆ ก็ผ่านได้
ทางที่สอง — ส่ง password ไปทุก server ตอน login. ผู้ใช้ใส่ password ครั้งเดียวที่เครื่อง client — แล้วเครื่อง client ส่ง password ไปให้ server ทุกตัวที่จะใช้. ปัญหา — network ในยุคนั้นไม่ได้ encrypted. password เดินทางในสาย LAN เป็น plain text. ใครก็ตามที่ดักจับ packet ได้ (sniffer) — เห็น password ทั้งหมด. และในห้อง lab ของ MIT ที่นักศึกษาทำการทดลองกันเอง — มี sniffer เต็มไปหมด
นักวิจัยที่ MIT จึงตั้งคำถามใหญ่ — “เราจะออกแบบระบบยังไงให้:
- ผู้ใช้พิมพ์ password ครั้งเดียวต่อวัน — แล้วเข้าได้ทุก server
- password ไม่เดินทางในสายเครือข่ายเลย แม้แต่ครั้งเดียวหลัง login
- server ปลายทาง (physics / biology / ห้องสมุด) ไม่เก็บ password ของผู้ใช้
- ทุกการเข้า server มี ticket ที่หมดอายุได้ + ตรวจสอบได้ว่า ticket เป็นของจริงไม่ใช่ปลอม
- ทั้งระบบทำงานได้ในสภาพแวดล้อมที่ network เชื่อใจไม่ได้ (มี sniffer)”
ทีมที่ตอบโจทย์นี้ — โครงการชื่อ Project Athena ที่ MIT — ออกแบบ protocol นึงในช่วงปี 1983-1988. ตั้งชื่อตามตำนานกรีก — เคอร์เบอรอส (Kerberos) หมาเฝ้านรก 3 เศียร. 3 หัวของหมา = 3 ตัวละครในระบบ — Client / Server / KDC. และตั้งแต่นั้น — Kerberos กลายเป็น standard ของโลก enterprise. Sun ใช้, IBM ใช้, Apple ใช้, Linux ใช้. และที่สำคัญที่สุด — Microsoft เลือก Kerberos เป็น authentication protocol หลักของ Active Directory ตั้งแต่ Windows 2000 — ทำให้ในปี 2026 — Kerberos คือ backbone ของบริษัทใหญ่ทั่วโลก
มุมผู้บริหาร: คุณอาจไม่เคยพิมพ์คำว่า “Kerberos” ในชีวิตเลยครับ. แต่ถ้าบริษัทคุณใช้ Windows Active Directory — Kerberos กำลังทำงานทุกครั้งที่พนักงานเปิดเครื่อง, เปิด Outlook, เปิด file share, print เอกสาร. มันคือ โครงสร้างพื้นฐานที่มองไม่เห็น ของบริษัท — เหมือนระบบประปาในเมือง — คุณไม่ต้องเข้าใจรายละเอียดทุกท่อ แต่ต้องรู้ว่า ถ้าท่อแตก = ทั้งเมืองวิกฤต. EP นี้คือเรื่องว่า “ท่อ” นี้ทำงานยังไง + แตกที่ไหนได้บ้าง
3 ตัวละครในโรงแรม — KDC / AS / TGS
ทีนี้ผมจะเริ่ม build analogy ที่จะอยู่กับเราตลอดทั้งบทครับ — โรงแรม
ลองนึกภาพ — คุณไปต่างจังหวัด เดินทางถึงโรงแรมตอนเย็น. ในโรงแรมนี้ — คุณจะต้องใช้ห้องพัก + ห้องประชุม + สระว่ายน้ำ + ห้อง gym + ห้องอาหารเช้า. รวมๆ คือคุณต้องเข้า 5 พื้นที่ที่ล็อกอยู่. โรงแรมจะออกแบบระบบยังไงให้คุณสะดวก + ปลอดภัย?
วิธีที่โรงแรมในชีวิตจริงใช้ — และวิธีที่ Kerberos เลียนมา 100% — คือ 2 เคาน์เตอร์
เคาน์เตอร์แรก — เคาน์เตอร์ check-in ที่ lobby. คุณยื่นบัตรประชาชน + จองห้องที่ยืนยันแล้ว — พนักงานตรวจสอบ — คุณได้ “บัตรแขก” (สีทอง, มีรูปคุณ, มีชื่อคุณ, ใช้ทั้งวัน, มีการ์ดป้องกันการปลอม). บัตรแขกนี้ — ใช้แทน “ตัวตนของคุณ” ทั้งโรงแรม. ไม่ต้องโชว์บัตรประชาชนอีก, ไม่ต้องเซ็นชื่ออีก — โชว์บัตรแขกอย่างเดียว
เคาน์เตอร์ที่สอง — เคาน์เตอร์ออกคีย์ห้อง / ออกบัตรเข้าสระ / ออกบัตรเข้า gym. คุณเดินไปที่เคาน์เตอร์นี้ — โชว์บัตรแขก — บอก “ขอคีย์เข้าสระว่ายน้ำ”. พนักงานตรวจบัตรแขก — ออก “คีย์การ์ดสระว่ายน้ำ” ให้ — เป็นบัตรขาว, ใช้ครั้งเดียว, อายุ 1 ชั่วโมง. คุณเดินไปประตูสระ — แตะบัตร — ประตูเปิด — ใช้สระ — กลับมาเอาคีย์ห้องนอนต่อ
ทำไมต้องมี 2 เคาน์เตอร์ ไม่ใช่ 1? — เพราะหน้าที่ต่างกัน. เคาน์เตอร์แรกตรวจ “คุณคือคุณจริงไหม” — ใช้บัตรประชาชนตัวจริง. เคาน์เตอร์สองตรวจ “คุณมีสิทธิ์ใช้พื้นที่นั้นไหม” — ใช้บัตรแขก (ที่บอกว่าคุณคือใครแล้ว). แยกหน้าที่ = แต่ละเคาน์เตอร์ทำงานเร็วขึ้น + secure ขึ้น
นี่คือภาพในหัวที่คุณต้องถือไว้ — เพราะ Kerberos = โรงแรมแบบนี้เป๊ะๆ. ทีนี้มาดูชื่อจริงในวงการ
KDC — ฝ่ายต้อนรับของโรงแรม
ในระบบ Kerberos — เคาน์เตอร์ทั้ง 2 ตัวนี้ รวมอยู่ในศูนย์เดียว ที่เรียกว่า KDC (Key Distribution Center) — แปลตรงตัวว่า “ศูนย์แจกจ่ายกุญแจ”
KDC = อาคารฝ่ายต้อนรับของโรงแรมทั้งหมด. ภายในแบ่งเป็น 2 เคาน์เตอร์ที่ผมเล่าไป — AS กับ TGS. ทั้งคู่อยู่ในอาคารเดียวกัน (ส่วนใหญ่อยู่ใน server เดียวกัน) — แต่ทำงานคนละหน้าที่
ในบริษัทที่ใช้ Active Directory — KDC = Domain Controller. คือ Windows server ที่ทำหน้าที่จัดการตัวตนของทั้ง domain. บริษัทขนาดกลางมัก 2-3 Domain Controllers ที่ replicate กันเพื่อความ resilient — ถ้าตัวนึงล่ม, ตัวอื่นทำงานต่อได้ทันที
AS (Authentication Server) — เคาน์เตอร์ check-in
ใน KDC — เคาน์เตอร์แรกชื่อ AS (Authentication Server) — เคาน์เตอร์ check-in ของโรงแรม
หน้าที่ของ AS = ตรวจ “บัตรประชาชน” ของผู้ใช้ — ออก “บัตรแขก”. ในศัพท์ทางเทคนิค — AS รับ username + (สิ่งที่เกิดจาก) password ของผู้ใช้ — verify ว่าตรงกับที่เก็บไว้ — ออก TGT (Ticket Granting Ticket) ให้ — ซึ่งคือบัตรแขกของโรงแรม
AS = เคาน์เตอร์เดียวที่ “คุย” กับ password ของผู้ใช้. ในชีวิตหนึ่งวันของผู้ใช้คนนึง — AS ถูกเรียกครั้งเดียวเท่านั้น — ตอน login Windows ครั้งแรก. หลังจากนั้น — AS ไม่ถูกเรียกอีก จนกว่าวันรุ่งขึ้น
TGS (Ticket Granting Server) — เคาน์เตอร์แลกคีย์ห้อง
เคาน์เตอร์ที่สองใน KDC ชื่อ TGS (Ticket Granting Server หรือ Ticket Granting Service) — เคาน์เตอร์แลกคีย์ห้อง
หน้าที่ของ TGS = รับ “บัตรแขก” (TGT) — ออก “คีย์ห้อง” (Service Ticket) ของบริการที่ผู้ใช้ขอ. ทุกครั้งที่ผู้ใช้จะเปิดบริการใหม่ในวันนั้น — เช่น เปิด file server, เปิด email, เปิด SAP — เครื่องของผู้ใช้คุยกับ TGS เพื่อขอ Service Ticket สำหรับบริการนั้น
TGS ไม่ต้องเห็น password ของผู้ใช้เลย — เพราะมัน trust บัตรแขกที่ AS ออกให้แล้ว. นี่คือสาเหตุที่ผู้ใช้พิมพ์ password ครั้งเดียวต่อวัน — เพราะหลัง check-in เสร็จ ทุก request หลังจากนั้นใช้บัตรแขก ไม่ใช่ password
ทำไมต้องชื่อ Kerberos — หมาเฝ้านรก 3 เศียร
ก่อนไปเรื่อง ticket — ผมอยากเล่าเรื่องชื่อนิดนึงครับ. เพราะมันสวยมาก
ในตำนานกรีก — เคอร์เบอรอส (Κέρβερος) คือหมายักษ์ 3 เศียร ที่เฝ้าทางเข้าโลกใต้พิภพ (Hades). หน้าที่ของมัน — กันคนตายไม่ให้กลับขึ้นมา, กันคนเป็นไม่ให้ลงไป. 3 เศียรของมัน = 3 ตัวที่ต้องตกลงกันถึงจะผ่านได้
นักวิจัย MIT เลือกชื่อนี้เพราะ — Kerberos protocol มี 3 ตัวละครที่ต้องตกลงกันถึงจะ authenticate ผ่านได้:
- Client — ผู้ใช้ + เครื่องของเขา (พนักงาน + Windows notebook)
- KDC — Domain Controller (ฝ่ายต้อนรับของโรงแรม)
- Service — บริการปลายทาง (file server / email / SAP)
ทั้ง 3 ตัวต้องคุยกันครบ — ถึงจะ access ผ่านได้. ถ้าตัวไหนตัวหนึ่งโกหก หรือ ticket ไม่ตรง — ระบบปฏิเสธ. 3 เศียรของหมาเฝ้านรก = 3 ตัวที่ตรวจ identity — เป็น metaphor ที่สวยมากสำหรับ protocol ที่ออกแบบให้ทำงานในเครือข่ายที่ไม่ปลอดภัย
มุมผู้บริหาร: เรื่อง KDC = Domain Controller ของ Active Directory — สำคัญมากสำหรับการตัดสินใจ infrastructure ครับ. Domain Controller = หัวใจของระบบ identity ทั้งบริษัท. ถ้าทั้งบริษัทมี Domain Controller ตัวเดียว — ตัวนั้นล่ม = พนักงานเข้า Windows ไม่ได้, เปิด Outlook ไม่ได้, เปิด file share ไม่ได้ = ทั้งบริษัทหยุดทำงาน. มาตรฐาน enterprise — ต้องมี Domain Controller อย่างน้อย 2 ตัวที่ replicate กัน, ในศูนย์ข้อมูลคนละจุด, มี backup ที่ recover ได้ใน 4 ชั่วโมง. ถามทีม IT ของคุณว่า — “Domain Controller ของเรามีกี่ตัว, อยู่ที่ไหนบ้าง, ครั้งสุดท้ายที่ test recovery คือเมื่อไหร่?“
2 ตั๋วของ Kerberos — บัตรแขก + คีย์ห้อง
ทีนี้มาดูตั๋ว 2 ใบที่ Kerberos ใช้กันละเอียดครับ — เพราะ attacker ทั้งหมดในหัวข้อ 5 จะวนเวียนอยู่กับ 2 ตั๋วนี้
TGT (Ticket Granting Ticket) — บัตรแขกของโรงแรม
TGT (Ticket Granting Ticket) = บัตรแขกของโรงแรม. คือตั๋วใบแรกที่ผู้ใช้ได้รับหลัง check-in สำเร็จ — และคือ “ตัวตน” ของผู้ใช้ทั้งวันในระบบ Kerberos
คุณสมบัติของ TGT:
- ออกโดย AS หลังจาก verify password — เป็น “proof of identity” ของผู้ใช้
- ใช้ขอ Service Ticket ได้หลายครั้ง — ทุกครั้งที่ผู้ใช้เปิดบริการใหม่ ใช้ TGT เป็น input ของ TGS
- อายุ 8-10 ชั่วโมง (1 working day) — default ของ Active Directory คือ 10 ชั่วโมง
- เก็บใน memory ของเครื่อง client — ไม่เขียนลง disk (ปกติ). ถ้าปิดเครื่อง = TGT หาย
- encrypted ด้วย “ความลับ” ที่เฉพาะ KDC รู้ — เครื่อง client ถือ TGT ได้ แต่อ่านข้างในไม่ได้ (เหมือนบัตรแขกที่มี chip ที่อ่านได้แค่เครื่องของพนักงานโรงแรม)
ส่วน “ความลับ” ที่ใช้ encrypt TGT ทุกใบ — นี่คือเรื่องสำคัญมากที่ผมจะกลับมาในหัวข้อ Golden Ticket. ใน Active Directory — ความลับนี้คือ password hash ของ account พิเศษชื่อ KRBTGT — account ที่สร้างอัตโนมัติตอนตั้ง domain — ไม่มีใครใช้ login — มีหน้าที่เดียวคือ encrypt TGT ทุกใบในระบบ
คุณภาพของ TGT = บัตรแขกที่ถ้าโจรขโมยได้ = โจรปลอมตัวเป็นเจ้าของบัตรได้ทั้งวัน. นี่คือสาเหตุที่ Kerberos attacks ส่วนใหญ่ — เป้าหมายคือ TGT
Service Ticket — คีย์ห้องของแต่ละห้อง
Service Ticket = คีย์การ์ดของห้องเฉพาะ. คือตั๋วใบที่สอง — ออกโดย TGS — ใช้เข้าบริการปลายทางเฉพาะตัวเท่านั้น
คุณสมบัติของ Service Ticket:
- ออกโดย TGS หลังจาก verify TGT — ใบนึงต่อบริการ
- ใช้ครั้งเดียว ต่อ session ของบริการนั้น — ถ้าจะเข้าบริการเดิมรอบใหม่ ขอใบใหม่
- อายุสั้นมาก — ตามมาตรฐาน 5-10 นาที (แต่ session ที่เปิดอยู่ใช้ต่อได้แม้ ticket หมดอายุ — ticket แค่ใช้ตอน “เริ่ม” connection)
- encrypted ด้วยความลับของบริการปลายทาง — เช่น Service Ticket สำหรับ file server, encrypt ด้วย password hash ของ computer account ของ file server. file server เท่านั้นที่อ่านได้ — TGS เองอ่านไม่ได้ (TGS แค่สร้าง — แล้วส่งกลับให้ client เอาไปยื่นเอง)
ผลที่สำคัญ — file server ไม่ต้องเก็บ password ของผู้ใช้ทุกคน. file server แค่เก็บ “ความลับของตัวเอง” — เพื่อ decrypt Service Ticket ที่ client ยื่นมา. ถ้า decrypt ได้ + ข้างในบอกว่าเป็น “พนักงาน ABC, แผนกบัญชี, มี role X” — file server เชื่อ. password ของพนักงาน ไม่เคยถึง file server เลย แม้แต่ครั้งเดียว — นี่คือเป้าหมายดั้งเดิมของ Project Athena ที่ MIT ตั้งใจไว้
ทำไมการแยก TGT กับ Service Ticket = design ที่สวยมาก
เหตุผลที่ Kerberos แยก 2 ตั๋ว — ไม่ใช่ใช้บัตรเดียวจบเลย — มีเหตุผลทางวิศวกรรม 4 ข้อ:
- Performance — TGT ออกครั้งเดียวต่อวัน (เคาน์เตอร์ check-in ทำงานหนักครั้งเดียว). Service Ticket ออกเร็วและบ่อย (เคาน์เตอร์แลกคีย์ทำงานเร็วเพราะแค่ verify TGT). ถ้ารวมกัน — ทุกครั้งที่ขอเข้าบริการต้องตรวจ password = ช้า + load หนัก
- อายุต่างกัน — TGT อายุยาว (วันละครั้งพอ). Service Ticket อายุสั้น (5-10 นาที — กัน replay attack). ถ้าใช้บัตรเดียว — ต้องเลือกอายุเดียว = trade-off แย่ไม่ว่าทางไหน
- ความลับแยกกัน — TGT encrypt ด้วย KRBTGT secret (1 ตัวสำหรับทั้ง domain). Service Ticket encrypt ด้วย secret ของแต่ละบริการ. ถ้าบริการตัวนึงโดน hack (เช่น secret ของ file server หลุด) — แค่ Service Ticket ของ file server เสี่ยง — TGT ไม่กระทบ — ไม่เสียทั้ง domain. นี่คือ Defense in Depth ระดับ protocol
- Auditability — TGS log ทุก Service Ticket ที่ออก — บอกได้ว่าผู้ใช้คนไหนเข้าบริการไหนตอนกี่โมง = audit trail ที่ดีเยี่ยม
มุมผู้บริหาร: ตรงนี้สำคัญสำหรับ audit + forensics ครับ. ในกรณีที่บริษัทโดน breach — ทีม IT จะต้องตอบคำถามว่า “โจรเข้าได้ที่บริการไหนบ้าง ตั้งแต่กี่โมง”. Active Directory + Kerberos log ทุก Service Ticket ที่ออก = ถ้าเปิด logging ครบ + ส่งไป SIEM (ระบบรวม log) = ทีมตอบได้ภายใน ชั่วโมง ไม่ใช่สัปดาห์. คำถามให้ผู้บริหารถามทีม IT — “เรา log Kerberos events (4768, 4769, 4771) ครบไหม + ส่งไป SIEM ไหม + เก็บไว้นานเท่าไหร่?” คำตอบที่ดี = “ครบ, ส่งไป Splunk/Sentinel, เก็บอย่างน้อย 1 ปี”
Flow จริงของ Kerberos — เดิน 1 วันของพนักงานคนนึง
มาดูทุกอย่างทำงานจริงในวันทำงาน 1 วันของพนักงานคนนึงครับ. ผมจะเรียกเขาว่า “คุณสมชาย” — พนักงานฝ่ายบัญชีของบริษัทขนาดกลาง
9 โมงเช้า — login Windows (AS Exchange)
คุณสมชายเดินเข้าออฟฟิศ 9 โมงเช้า. เปิด Windows notebook — หน้า login ขึ้น — พิมพ์ username somchai + password MyPassphrase2026!
ในเวลาเสี้ยววินาทีนั้น — Windows ของเขาทำสิ่งนี้:
- ไม่ส่ง password ตรงๆ ไป KDC — แต่ใช้ password คำนวณ hash (ตัวเลขที่เกิดจาก password ผ่านสมการเฉพาะ — ทางเดียวที่ย้อนกลับไม่ได้). hash นี้ใช้เป็น “กุญแจ” สำหรับการคุยกับ KDC ในขั้นต่อไป
- ส่ง request ไป AS (Authentication Server) — พร้อมข้อมูลที่ encrypt ด้วย hash ของ password — เพื่อพิสูจน์ว่า “ผมรู้ password ของคุณสมชาย”
- AS ตรวจสอบ — เปรียบเทียบกับ password hash ของคุณสมชายที่เก็บใน Active Directory database. ถ้า decrypt request ของ client ได้ = client ต้องรู้ password จริง = ผ่าน
- AS ออก TGT — บรรจุข้อมูล: ชื่อคุณสมชาย, เวลาออก, อายุ (10 ชั่วโมง), groups ที่อยู่ — encrypt ด้วย KRBTGT secret (ความลับของทั้ง domain)
- AS ส่ง TGT กลับให้ client — Windows เก็บ TGT ใน memory (LSASS process). password ของคุณสมชาย — หายไปจาก memory หลังจากนี้ (ทฤษฎี)
หน้า desktop ของคุณสมชายขึ้น. ตอนนี้ — Windows ของเขามี บัตรแขกสีทอง อายุ 10 ชั่วโมง. ยังไม่ได้ทำอะไรพิเศษเลย — แค่ login Windows สำเร็จ
จุดที่ผมอยากเน้นในขั้นนี้ — password ของคุณสมชาย เดินทางในเครือข่ายเพียง “ทางอ้อม” — ผ่าน hash ที่ใช้ encrypt request เท่านั้น — และไม่เคยส่งเป็น plain text เลย. คนที่ดักจับ network packet — ได้แค่ข้อมูล encrypted ที่ไม่มีกุญแจ — ดูไม่ออก. นี่คือเป้าหมายข้อหนึ่งของ Project Athena ที่ผมเล่าในหัวข้อ 1 — สำเร็จแล้ว
9:15 — เปิด file server (TGS Exchange ครั้งแรก)
คุณสมชายต้องการเปิด file share ของฝ่ายบัญชี. เขาคลิก \\fileserver\accounting. Windows ของเขาทำสิ่งนี้:
- ส่ง request ไป TGS — แนบ TGT + บอก “ผมต้องการคุยกับ file server ชื่อ
fileserver” - TGS ตรวจสอบ TGT — decrypt ด้วย KRBTGT secret — ดู: TGT ของจริงไหม, หมดอายุยัง, ผู้ใช้ที่อยู่ในนี้คือใคร
- TGS ออก Service Ticket สำหรับ file server — บรรจุ: ชื่อคุณสมชาย, groups ของเขา, เวลา. encrypt ด้วย password hash ของ computer account ของ file server (ความลับที่มีแค่ TGS กับ file server รู้)
- TGS ส่ง Service Ticket กลับให้ client — แต่ตัว TGS เองอ่านข้างในไม่ออก (มันแค่สร้างแล้วส่ง)
- Windows ของคุณสมชาย ยื่น Service Ticket ไปที่ file server
- file server decrypt Service Ticket ด้วย secret ของตัวเอง — เห็นว่า “นี่คือสมชาย, แผนกบัญชี” — เช็คว่า somchai มีสิทธิ์เข้า folder ของบัญชีไหม — มี — ให้เข้า
จุดเด่นของขั้นนี้ — file server ไม่เคยเห็น password ของคุณสมชาย, ไม่เคยคุยกับ AS โดยตรง, ไม่เคยเก็บ user database เลย. file server แค่ trust TGS — ถ้า TGS ออก Service Ticket มาแล้ว = เชื่อ. นี่คือ Single Sign-On (SSO) ระดับ protocol — ผู้ใช้พิมพ์ password ครั้งเดียว, server ปลายทางไม่ต้องรู้ password เลย
9:30 — เปิด email (TGS Exchange ครั้งที่ 2)
คุณสมชายเปิด Outlook. Windows ของเขาเห็นว่า Outlook ต้องคุยกับ email server (exchange.company.local) — แต่ยังไม่มี Service Ticket ของ email server. ก็เลย:
- ส่ง request ไป TGS — แนบ TGT (ยังอายุเหลือ 9 ชั่วโมง) + บอก “ขอ Service Ticket ของ email server”
- TGS verify TGT + ออก Service Ticket ของ email server — encrypt ด้วย secret ของ email server
- Windows ยื่น Service Ticket ไปที่ email server — email server decrypt — เห็นว่าเป็นสมชาย — ให้เข้า mailbox ของเขา
Outlook เปิดขึ้น — โหลด email — โดยที่คุณสมชายไม่ต้องพิมพ์ password อีกครั้ง. นี่คือ SSO ในระดับ enterprise ที่ทำให้พนักงานทั่วบริษัทไม่ต้องจำ password ของ 50 ระบบ — พิมพ์ครั้งเดียวต่อวัน
10:00, 11:00, 14:00, 15:30 — เปิดบริการต่างๆ ตลอดวัน
ทุกครั้งที่คุณสมชายเปิดบริการใหม่ — SAP, intranet, printer share, share drive ของอีกแผนก — flow เดิมซ้ำ:
- client มี TGT อยู่แล้ว → ไป TGS → ขอ Service Ticket ของบริการนั้น → ยื่นไปที่บริการ → ผ่าน
ผู้ใช้ไม่รู้สึกอะไรเลย — สำหรับเขา คือคลิกแล้วเปิด. แต่ background — Kerberos กำลังทำงานนับสิบครั้งต่อชั่วโมง
5 โมงเย็น — TGT หมดอายุ / logout
ตอน 7 โมงเย็น (10 ชั่วโมงหลัง login) — TGT ของคุณสมชายจะหมดอายุ. ถ้าเขายังนั่งทำงานอยู่ — Windows จะพยายาม renew TGT อัตโนมัติ (ถ้าตั้ง config ให้ renew ได้) — หรือถ้าไม่ได้ — Windows อาจถาม password อีกครั้ง
ถ้าเขา logout / shutdown — TGT + Service Tickets ทั้งหมดในเครื่อง = หาย (เพราะเก็บใน memory). พรุ่งนี้เช้า login ใหม่ = flow ใหม่ตั้งแต่ AS Exchange
ข้อดีของระบบนี้ที่ผมอยากสรุปครับ:
- password ผู้ใช้ = ใส่ครั้งเดียวต่อวัน + ไม่เคยส่งเป็น plain text บน network เลย
- service ปลายทาง = ไม่ต้องเก็บ password ของผู้ใช้ + แค่เก็บ secret ของตัวเอง
- ทุก ticket = มี digital signature (encrypted ด้วย secret ที่เฉพาะรู้) + อายุสั้น (Service Ticket 5-10 นาที, TGT 10 ชั่วโมง)
- audit trail = TGS log ทุกครั้งที่ออก Service Ticket = ตรวจสอบย้อนหลังได้
มุมผู้บริหาร: เรื่อง ticket lifetime สำคัญสำหรับ security policy ของบริษัทครับ. default ของ Active Directory คือ TGT 10 ชั่วโมง + Service Ticket 600 นาที (10 ชั่วโมง). ในบริษัทที่ security strict — มักลด TGT เหลือ 8 ชั่วโมง + Service Ticket เหลือ 30-60 นาที. ผลที่ตามมา — ถ้าโจรขโมย ticket ได้ — เขามีเวลาใช้น้อยลงมาก. ถามทีม IT — “Maximum lifetime ของ user ticket ในบริษัทเราคือเท่าไหร่?” ค่าที่ดี = TGT ≤ 8 ชม., Service Ticket ≤ 60 นาที, renewal ≤ 7 วัน
Kerberos Attacks — ทำไม red team ทั่วโลกหลั่งน้ำตา (ของฝ่ายป้องกัน)
ระบบที่สวยงามขนาดนี้ — มีจุดอ่อนไหม? — มีครับ. และจุดอ่อนของ Kerberos กลายเป็น attack vectors ที่ ransomware gang ทั่วโลกใช้กันทุกวัน. หัวข้อนี้ผมขอเล่า 5 attacks สำคัญ — ทุกตัวเริ่มต้นจากเครื่องมือเดียวกัน
Mimikatz — ของขวัญจากคุณ Benjamin Delpy ที่เปลี่ยนวงการ
ก่อนเข้าเรื่อง attack — ผมต้องเล่าเรื่องเครื่องมือนึงก่อนครับ — เพราะมันคือจุดเปลี่ยนของวงการ red team
ในปี 2007 — นักวิจัย security ชาวฝรั่งเศสคนหนึ่งชื่อ Benjamin Delpy ค้นพบเรื่องน่าตกใจ — Windows เก็บ credentials (รวมถึง password / TGT / NTLM hash) ใน memory ของ process ที่ชื่อ LSASS — และ memory นั้น อ่านได้ถ้ามี admin privilege
ใน 2011 — เขาเขียนเครื่องมือ proof-of-concept มาแชร์ open source — ตั้งชื่อว่า mimikatz (มาจากคำว่า “mimi” = น่ารักในภาษาฝรั่งเศส + katz). เครื่องมือนี้ — เปิด LSASS memory — ดึง credentials ทั้งหมดออกมาเป็น plain text. password ของผู้ใช้, TGT, NTLM hash, Kerberos session keys — ทุกอย่างหลุดออกมาในไม่กี่วินาที
Delpy ตั้งใจให้เป็น research tool — แต่ผลคือ — mimikatz กลายเป็นเครื่องมือมาตรฐานของ red team + ransomware gang ทั่วโลกตั้งแต่นั้นมา. ทุก attack ที่ผมจะเล่าต่อไป — ส่วนใหญ่เริ่มจาก mimikatz บนเครื่องที่โจร compromise ได้
Microsoft ใช้เวลาหลายปีในการป้องกัน mimikatz — เพิ่ม feature ชื่อ LSA Protection (Windows 8.1), Credential Guard (Windows 10) — แยก LSASS ออกไปอยู่ใน hypervisor ที่อ่านไม่ได้แม้มี admin privilege. แต่ — บริษัทส่วนใหญ่ในปี 2026 — ยังไม่ได้เปิด feature เหล่านี้ เพราะ compatibility issues. mimikatz ยังทำงานได้ในบริษัทไทยส่วนใหญ่จนถึงทุกวันนี้
ในวงการ — มีคำกล่าวว่า “ถ้าคุณยังไม่เปิด Credential Guard — คุณยังอยู่ในยุค 2011”. รุนแรงแต่จริง
Pass-the-Ticket — เอา TGT ของคนอื่นไปใช้
เริ่ม attack ตัวแรก — Pass-the-Ticket (PtT)
สถานการณ์: โจร compromise เครื่องของพนักงานคนนึงในบริษัท (เช่น ผ่าน phishing). โจรได้ admin privilege บนเครื่องนั้น — ใช้ mimikatz — ดึง TGT ของพนักงานคนนั้นจาก memory
ขั้นต่อไป: โจรเอา TGT ที่ขโมยมา — ไปใช้บนเครื่องอื่น (เครื่องของโจรเอง). เครื่องของโจร — ปลอมตัวเป็นพนักงานคนนั้นได้ทั้งวัน — โดยไม่ต้องรู้ password ของพนักงานเลย. TGT คือบัตรแขก — ใครก็ตามที่ถือบัตรแขกในมือ = ระบบเชื่อว่าเขาคือเจ้าของบัตร
ทำไม TGT ถูกขโมยได้ทั้งที่ encrypt? — เพราะใน memory ของ LSASS — TGT อยู่ใน structure ที่ Windows ใช้งานได้ (encrypted ด้วย KRBTGT secret แต่ใช้งานในระบบได้). mimikatz ดึงออกมาทั้งดุ้น — เครื่องอื่นเอาไปใส่ใน LSASS ของตัวเอง = ใช้ได้ทันที. ไม่ต้อง decrypt — แค่ replay
ผลที่ตามมา — ถ้าโจรขโมย TGT ของ Domain Admin ได้ — โจรเข้าทุก server ในบริษัทได้ทันที. นี่คือ lateral movement ที่ ransomware ใช้กระจายตัวเองในเครือข่ายบริษัท
Golden Ticket — ฝันร้ายของ Domain Admin
attack ตัวที่ทำให้ทีม IT ของบริษัทใหญ่นอนไม่หลับ — Golden Ticket
สถานการณ์ที่เลวร้ายที่สุด: โจร compromise ระดับสูงพอที่จะดึง password hash ของ KRBTGT account จาก Domain Controller ออกได้. KRBTGT account คืออะไร — ผมเล่าไว้แล้วในหัวข้อ 3 — มันคือ account พิเศษที่ KDC ใช้ encrypt TGT ทุกใบในระบบ
ขั้นต่อไป: เมื่อโจรได้ KRBTGT hash — โจรใช้ mimikatz ปลอม TGT ขึ้นมาเอง ที่:
- บอกว่าตัวเองคือใครก็ได้ — เป็น Domain Admin, เป็น CEO, เป็นใครก็ตามที่ต้องการ
- มี groups อะไรก็ได้ — Enterprise Admins, Domain Admins
- อายุยาวเท่าไหร่ก็ได้ — 10 ปีก็ได้ (ปกติ default คือสูงสุด 10 ชั่วโมง — โจรปลอม = 10 ปี)
- ไม่ต้องคุยกับ AS เลย — เพราะปลอม TGT เองโดยใช้ KRBTGT hash
นี่คือเรียกว่า Golden Ticket — บัตรแขกที่โจรปลอมขึ้นเอง — มีอำนาจสูงสุดในระบบ
ผลที่น่ากลัวที่สุด — แม้บริษัทจะตรวจพบการ breach + รีเซ็ต password ของทุก user ในบริษัท + ปิด account ที่ compromise — โจรยังใช้ Golden Ticket ได้อยู่. เพราะ TGT ที่โจรปลอม — ไม่ผูกกับ password ของใครเลย. ผูกกับ KRBTGT hash อย่างเดียว
วิธีกำจัด Golden Ticket: ต้อง rotate KRBTGT account password — และ ต้อง rotate 2 ครั้งติดกัน (ห่างกันมากกว่าระยะเวลา replication ของ Domain Controllers). เพราะ — ระบบ Active Directory เก็บ password history 2 versions — ถ้า rotate ครั้งเดียว — version เก่ายังใช้ได้ — Golden Ticket ยังทำงานได้
ในความเป็นจริงของบริษัทไทยส่วนใหญ่ — KRBTGT password ไม่เคย rotate ตั้งแต่ตั้ง domain มา. หลายบริษัทตั้ง domain ตอนปี 2005 — KRBTGT password เป็นค่าเดิมยาวกว่า 20 ปี. ถ้าโจรเคยขโมย hash ตัวนี้ในอดีต = วันนี้ยังใช้ Golden Ticket ได้
Microsoft แนะนำให้ rotate KRBTGT ทุก 6 เดือน. ในวงการ enterprise — มีเครื่องมือ script ที่ Microsoft แจกฟรี (New-KrbtgtKeys.ps1) — สำหรับ rotate อย่างปลอดภัย
Silver Ticket — ปลอม Service Ticket ของบริการเดียว
attack ที่แคบกว่า Golden Ticket แต่ตรวจจับยากกว่า — Silver Ticket
สถานการณ์: โจรไม่ได้ KRBTGT hash — แต่ได้ password hash ของ computer account ของบริการเดียว (เช่น file server, SQL server). อันนี้ทำได้ง่ายกว่า — แค่ compromise เครื่อง server นั้น
ขั้นต่อไป: โจรใช้ secret ของ service นั้น — ปลอม Service Ticket ของ service นั้นได้เอง — โดยไม่ต้องคุยกับ TGS เลย. ปลอม Service Ticket ที่บอกว่า “นี่คือ Domain Admin มาเข้า file server ของคุณ” — file server ตรวจไม่ได้ว่าปลอม เพราะ encrypted ด้วย secret ของตัวเอง
ทำไม Silver Ticket ตรวจจับยาก — เพราะมัน ไม่ผ่าน TGS เลย. log ของ KDC ไม่บันทึก. มี log แค่ที่ service ปลายทาง — ซึ่งบอกแค่ว่า “user X เข้ามา” — แต่ไม่รู้ว่า “ไม่มีการขอ TGS Service Ticket ของ user X ครั้งนี้”. ต้อง correlation log จาก 2 แห่งถึงตรวจได้
ขอบเขตของ Silver Ticket — แคบกว่า Golden Ticket (แค่ 1 service) — แต่เพียงพอสำหรับ attack เป้าหมายเฉพาะเจาะจง
Kerberoasting — ลอก Service Account hash ออกมา crack offline
attack ที่ใช้ feature ปกติของ Kerberos — Kerberoasting
สถานการณ์: ในบริษัทมี Service Account จำนวนมาก — account พิเศษที่ใช้รัน service (เช่น MSSQL service, Exchange service, IIS app pool). Service Account มักตั้ง password อ่อน + ไม่เคยเปลี่ยน + อายุ password เป็นปีๆ (เพราะเปลี่ยนทีต้องปิด service)
ขั้นต่อไป: โจรที่อยู่ในเครือข่าย (แม้เป็นพนักงานธรรมดา) — ขอ Service Ticket ของ Service Account เหล่านี้จาก TGS อย่างปกติ. Service Ticket = encrypted ด้วย password hash ของ Service Account. โจรเอา Service Ticket นี้ออกไป — crack offline ด้วย hashcat — ลองทุก password ที่เป็นไปได้
ถ้า password ของ Service Account คือ “Password123” หรือ “Company2020!” — โจร crack ได้ใน 5 นาที. ได้ password = login เป็น Service Account นั้น = ใช้สิทธิ์ของมัน (มักเป็น admin บางอย่าง)
นี่คือเหตุผลที่ Service Account ในบริษัทใหญ่ — ต้องตั้ง password ยาว + สุ่ม + เปลี่ยนทุก 6 เดือน. หรือดีกว่านั้น — ใช้ gMSA (Group Managed Service Account) ที่ Active Directory จัดการ password อัตโนมัติ — เปลี่ยนทุก 30 วัน — ไม่มีใครรู้ password เลย — ปิดประตู Kerberoasting
มุมผู้บริหาร: Kerberoasting คือ attack ที่ “คุ้มที่สุด” สำหรับโจรครับ — เพราะใช้ feature ปกติของ Kerberos, ไม่ต้องสิทธิ์ admin บนเครื่องไหน, ตรวจจับยาก. ถามทีม IT ของคุณ — “Service Account ในบริษัทเรามีกี่ตัว, ตัวไหนใช้ password ที่อ่อนหรือเก่า, เราใช้ gMSA แทนได้ตัวไหนบ้าง”. migrate Service Account ไปเป็น gMSA = 0 บาท (เป็น feature ของ Windows Server). ผลที่ปิด = Kerberoasting attack ทั้งหมด
Mitigation รวม — สรุปสำหรับ Kerberos attacks
ทั้ง 4 attacks ข้างต้น — มี defense layer ที่บริษัทควรทำ:
- เปิด LSA Protection + Credential Guard บน Windows — กัน mimikatz ดึง credentials จาก memory
- rotate KRBTGT password ทุก 6 เดือน + rotate 2 ครั้งติดกัน — กัน Golden Ticket ที่ใช้ hash เก่า
- ลด ticket lifetime — TGT 8 ชั่วโมง, Service Ticket 30-60 นาที — ลดเวลาที่ ticket ที่ขโมยมาใช้ได้
- migrate Service Account ไป gMSA — ปิด Kerberoasting
- monitor Kerberos events (4768 = TGT issued, 4769 = Service Ticket issued, 4771 = pre-auth failure) — ใน SIEM — alert pattern ผิดปกติ
- Tier 0 isolation — Domain Admin / Enterprise Admin ต้อง login เฉพาะเครื่อง dedicated สำหรับ admin work — ไม่เปิด email / browser บนเครื่องนั้น — ลดโอกาส compromise
Active Directory + ทำไมโจรเป้า Domain Admin
หัวข้อสุดท้ายก่อนจบ EP ครับ — ผมต้อง zoom out กลับมาที่ Active Directory ทั้งระบบ + ทำไมมันคือ crown jewel ของบริษัท
Active Directory คืออะไร — ฐานข้อมูลตัวตนของบริษัท
Active Directory (AD) = ฐานข้อมูล identity ของ Microsoft. เปิดตัวพร้อม Windows 2000 — ตั้งแต่นั้นมา — ครองตลาด enterprise IT มากกว่า 90% ทั่วโลกในปี 2026. 90% ของบริษัทใหญ่ใน Fortune 500 — ใช้ Active Directory เป็น identity backbone
ใน AD — เก็บข้อมูลของ:
- User accounts — พนักงานทุกคนในบริษัท
- Computer accounts — เครื่อง Windows ทุกเครื่องในบริษัท
- Groups — กลุ่มสิทธิ์ — Domain Admins, Sales Team, Accounting, ฯลฯ
- Service accounts — account สำหรับ run services
- Policies (GPO — Group Policy Object) — config + security setting ที่ push ไปเครื่อง Windows ทุกตัว
AD ใช้ 2 protocol หลัก:
- LDAP — สำหรับ query / search ข้อมูลใน directory (ใครอยู่กลุ่มไหน, เครื่องไหน online)
- Kerberos — สำหรับ authentication (ทุกอย่างที่เราเล่ามาในหัวข้อ 1-5)
โครงสร้าง — Domain / Forest / OU
Domain = ขอบเขต identity 1 ชุด. บริษัทขนาดกลางมัก 1 domain. ชื่อ domain มัก company.local หรือ corp.company.com
Forest = กลุ่มของ domains ที่ trust กัน. บริษัทใหญ่ที่ merger หลายๆ องค์กรเข้ามา — มักมีหลาย domain ใน 1 forest. trust ระหว่าง domains = แต่ละ domain authenticate ของกันได้
OU (Organizational Unit) = กล่องย่อยใน domain — สำหรับจัดกลุ่ม users / computers ตามแผนก / สาขา / ภูมิภาค. ใช้สำหรับ apply policy แตกต่างกัน — เช่น OU ของ Marketing ให้ลง software อันนึง, OU ของ Finance ห้ามลง
ทำไม Domain Admin = crown jewel
ใน AD มี role พิเศษที่ทรงพลังที่สุด — Domain Admin. Domain Admin = ผู้ดูแล domain ทั้งหมด — มีสิทธิ์:
- Login เครื่อง Windows ทุกเครื่องในบริษัท (เป็น local admin บนทุกเครื่อง)
- อ่าน password hash ของทุก user ในบริษัท (รวม CEO + ผู้บริหารทุกคน)
- ดึง KRBTGT hash = ทำ Golden Ticket ได้
- เปลี่ยน password ของทุก user
- เพิ่ม / ลบ user
- push GPO ไปทุกเครื่อง = ลง software / config ทุกเครื่องในวินาทีเดียว
ผลที่ตามมา — ถ้าโจรครอบครอง Domain Admin account ได้ = ครอบครองทั้งบริษัท IT. เครื่องทุกเครื่อง, ข้อมูลทุกอย่าง, mail ของทุกคน — เปิดดูได้หมด
นี่คือสาเหตุที่ ransomware gang ระดับโลก — Conti, LockBit, BlackCat, Cl0p — เป้าหมายแรกเสมอ = Domain Admin. flow มาตรฐานของ ransomware attack ในปี 2026:
- Initial access — phishing email + macro ใน Word — ได้ shell บนเครื่องพนักงาน 1 คน
- Privilege escalation บนเครื่องนั้น — local exploit / mimikatz — ได้ local admin
- Lateral movement — Pass-the-Ticket / Pass-the-Hash — กระจายไปเครื่องอื่นในเครือข่าย
- Compromise Domain Controller — หา Domain Admin token / hash — ทำ Golden Ticket
- Push ransomware ผ่าน GPO ไปทุกเครื่องในบริษัท — encrypt ทุก file ในเสี้ยววินาที
- เรียกค่าไถ่ — มักเป็น Bitcoin/Monero — หลักล้านดอลลาร์
flow ทั้งหมดนี้ — ใช้เวลาเฉลี่ย 2-10 วันในบริษัทที่ไม่มี EDR + ไม่มี Tier 0 protection. ในกรณีที่เลวร้ายที่สุด — Colonial Pipeline 2021 หรือ MGM Resorts 2023 — ทำเสร็จในไม่กี่ชั่วโมง
มุมผู้บริหาร: เรื่องนี้คือเหตุผลที่ในวงการ — มี practice ที่เรียกว่า Tier 0 / Tier 1 / Tier 2 model. Tier 0 = Domain Admin / Enterprise Admin / Forest Admin + Domain Controllers + ระบบ identity backbone. กฎ — Tier 0 admin ต้องใช้เครื่องคนละเครื่องกับเครื่องที่เปิด email / browser ปกติ. แยก physically. ถ้า admin ทำงาน admin บนเครื่องเดียวกับที่เปิด phishing email = ทั้งบริษัทพร้อมพัง. ถามทีม IT ของคุณ — “Domain Admin ของบริษัทเราใช้เครื่อง dedicated ไหม?” ถ้าตอบ “ไม่” = ความเสี่ยงสูงสุดของบริษัท
สรุป EP.14 — โรงแรมที่บริษัทใหญ่ทั่วโลกใช้ + กับดักที่ต้องระวัง
ครับ — EP.14 ยาวที่สุด EP หนึ่งใน Part 2. เพราะ Kerberos = backbone ที่ทำงานเงียบๆ ในบริษัทใหญ่ทั่วโลก — และ attack ที่ใช้กับ Kerberos = สิ่งที่ ransomware gang ทั่วโลกใช้ทุกวัน. ผู้บริหารต้องเข้าใจระดับนี้ — แม้ไม่ต้องลงมือ config เอง
ผมขอสรุปทั้ง 6 หัวข้อสั้นๆ:
เรื่องที่หนึ่ง — ปัญหาที่ Kerberos แก้. โลกก่อน 1988 — ทุก server เก็บ password ของผู้ใช้ + password เดินทางในเครือข่ายเป็น plain text. Project Athena ที่ MIT ออกแบบ Kerberos เพื่อ — ผู้ใช้พิมพ์ password ครั้งเดียวต่อวัน, password ไม่ส่งบน network, server ปลายทางไม่เก็บ password, ทุก ticket หมดอายุได้. Microsoft รับเอาไปใส่ใน Windows 2000 — กลายเป็น backbone ของ Active Directory
เรื่องที่สอง — 3 ตัวละครในโรงแรม. KDC (Key Distribution Center) = ฝ่ายต้อนรับโรงแรม = Domain Controller. แบ่งเป็น 2 เคาน์เตอร์ — AS (Authentication Server) = เคาน์เตอร์ check-in ที่ออกบัตรแขก + TGS (Ticket Granting Server) = เคาน์เตอร์แลกคีย์ห้อง. ชื่อ Kerberos = หมาเฝ้านรกสามเศียรในตำนานกรีก — 3 เศียร = 3 ตัวที่ต้องตกลงกัน (Client / KDC / Service)
เรื่องที่สาม — 2 ตั๋วของ Kerberos. TGT (Ticket Granting Ticket) = บัตรแขก, อายุ 8-10 ชั่วโมง, encrypted ด้วย KRBTGT secret, เก็บใน memory ของ client. Service Ticket = คีย์ห้อง, 1 ใบต่อ service, อายุสั้น (5-10 นาที), encrypted ด้วย secret ของ service ปลายทาง. ผลคือ — service ปลายทางไม่ต้องเก็บ password ของผู้ใช้เลย — แค่เก็บ secret ของตัวเอง
เรื่องที่สี่ — flow 1 วันของพนักงานคนนึง. 9 โมงเช้า login Windows → AS Exchange → ได้ TGT. 9:15 เปิด file server → TGS Exchange → ได้ Service Ticket ของ file server. 9:30 เปิด email → TGS Exchange → ได้ Service Ticket ของ email. ทั้งวัน — TGT 1 ใบ + Service Tickets หลายใบ. 7 โมงเย็น — TGT หมดอายุ หรือ logout = ticket หาย. password ใส่ครั้งเดียว — ไม่เคยส่งเป็น plain text บน network เลย
เรื่องที่ห้า — Kerberos Attacks. Mimikatz ของ Benjamin Delpy (2011) = เครื่องมือดึง credentials จาก LSASS memory — เปลี่ยนวงการ red team. Pass-the-Ticket = ขโมย TGT ของคนอื่นไปใช้บนเครื่องตัวเอง. Golden Ticket = ขโมย KRBTGT hash → ปลอม TGT เป็นใครก็ได้, role อะไรก็ได้, อายุยาวเท่าไหร่ก็ได้ — ต้อง rotate KRBTGT 2 ครั้งติดถึงแก้ได้. Silver Ticket = ปลอม Service Ticket ของ service เดียว — แคบกว่าแต่ตรวจจับยาก. Kerberoasting = ขอ Service Ticket ของ Service Account → crack offline → ได้ password อ่อน. Mitigation — LSA Protection + Credential Guard, rotate KRBTGT ทุก 6 เดือน, ลด ticket lifetime, ใช้ gMSA (Group Managed Service Account), log Kerberos events ไป SIEM, แยก Tier 0
เรื่องที่หก — Active Directory + Domain Admin. AD = ฐานข้อมูล identity ของ Microsoft, ครอง 90% ของ Fortune 500. ใช้ LDAP สำหรับ query + Kerberos สำหรับ authentication. โครงสร้าง = Domain / Forest / OU + GPO. Domain Admin = crown jewel — login ทุกเครื่อง, อ่าน password hash ของทุก user, ดึง KRBTGT hash. flow ของ ransomware ในปี 2026 — phishing → privilege escalation → lateral movement (Pass-the-Ticket) → compromise Domain Controller → Golden Ticket → push ransomware ผ่าน GPO ไปทุกเครื่อง — เสร็จในไม่กี่วันถึงไม่กี่ชั่วโมง
สิ่งที่ผู้นำต้องจำ — 2 ข้อ
ข้อแรก — ถ้าบริษัทใช้ Windows Active Directory — Kerberos คือ backbone. ถามทีม IT 4 คำถามนี้
นี่คือข้อที่ผมอยากให้คุณจำที่สุดของ EP นี้ครับ. ในปี 2026 — บริษัทไทยขนาดกลาง-ใหญ่ส่วนใหญ่ใช้ Windows + Active Directory. นั่นแปลว่า Kerberos กำลังทำงานเงียบๆ ในบริษัทคุณตลอด 24 ชั่วโมง — และจุดอ่อนของ Kerberos = จุดอ่อนของทั้งบริษัท
4 คำถามที่ผู้บริหารควรถามทีม IT — แล้วฟังคำตอบ:
- “เรา rotate KRBTGT account password ครั้งล่าสุดเมื่อไหร่?” — คำตอบที่ดี = “ภายใน 6 เดือนล่าสุด, rotate 2 ครั้งติด ตามคำแนะนำของ Microsoft”. คำตอบที่อันตราย = “ไม่เคย” / “ไม่รู้” — แปลว่าถ้า attacker เคยได้ KRBTGT hash ในอดีต = วันนี้ยังใช้ Golden Ticket ได้
- “Domain Controller ของบริษัทเรามีกี่ตัว + อยู่ที่ไหน + มี backup ที่ test recovery แล้วเมื่อไหร่?” — คำตอบที่ดี = “อย่างน้อย 2 ตัว, คนละศูนย์ข้อมูล, test recovery ภายในปีที่ผ่านมา”
- “เราเปิด LSA Protection + Credential Guard บนเครื่อง endpoint ของพนักงานทั้งหมดไหม?” — คำตอบที่ดี = “เปิดทุกเครื่องที่รองรับ — กัน mimikatz ดึง credentials จาก memory”
- “Service Account ในบริษัทเรา — ใช้ gMSA กี่ตัว, ใช้ password manual กี่ตัว, ตัวที่ manual password ตั้งล่าสุดเมื่อไหร่?” — คำตอบที่ดี = “ส่วนใหญ่ migrate ไป gMSA แล้ว, ตัวที่เหลือเป็น legacy ที่ rotate ทุก 6 เดือน”
ถ้าคำตอบทั้ง 4 ข้อคือ “ไม่รู้” / “ไม่เคย” / “ทีมเก่าทำไว้ไม่มี doc” — บริษัทคุณเปราะมากต่อ ransomware ในปี 2026. ต้นทุนของการแก้ — ส่วนใหญ่ฟรี (เป็น feature ที่มีอยู่แล้วใน Windows Server) — แค่ต้องเสียเวลา IT จัดทีมทำ
ข้อสอง — Domain Admin account = crown jewel ที่สำคัญที่สุดในบริษัท. ทุก security control สุดท้ายปกป้องตัวนี้
ข้อนี้เป็น mindset shift ที่ผู้บริหารหลายคนยังไม่เห็นภาพครับ. ในมุมของ attacker — Domain Admin = วัตถุประสงค์สุดท้าย. เมื่อ attacker ได้ Domain Admin = ครอบครองบริษัท IT ทั้งหมด. ทุก control ของ security ก่อนหน้านั้น (firewall, EDR, MFA ของพนักงาน) = สุดท้ายปกป้องไม่ให้ attacker ถึง Domain Admin
หลักการที่ต้องยึด:
- แยก Tier 0 จาก Tier 1, Tier 2 — Domain Admin ต้อง ทำงาน admin บนเครื่อง dedicated ที่ไม่เปิด email / browser ปกติ. ลดโอกาส phishing ถึง Domain Admin
- Domain Admin ต้องใช้ MFA + Hardware Key (กลับไปที่ EP.13) — ไม่ใช่ SMS OTP. password อย่างเดียว = ไม่พอ
- เปิด PAM (Privileged Access Management) สำหรับ Domain Admin — EP.17 จะลึก — แต่หลักการพื้นฐาน — Domain Admin ต้องไม่ได้สิทธิ์ตลอดเวลา — ต้อง JIT (Just-In-Time) — ขอสิทธิ์เมื่อจะใช้ — ใช้เสร็จ สิทธิ์หาย. ลดเวลา attack ที่โจรมีหลัง compromise account นั้น
- Audit ทุก action ของ Domain Admin — ส่ง log ไป SIEM — ถ้า Domain Admin login ตอน ตี 3 จากเครื่องที่ไม่เคยใช้ = alert ทันที
ในวงการ security ปี 2026 — ความเสียหายเฉลี่ยของ ransomware attack ในบริษัทไทยขนาดกลาง = หลายสิบล้านบาท (ค่าไถ่ + downtime + กู้ระบบ + ค่าปรับ + ความเสียหายต่อ brand). การลงทุนในการป้องกัน Domain Admin = เครื่อง dedicated 5 เครื่อง (~500,000 บาท) + setup gMSA + setup Tier 0 (เวลา IT ~ 1-2 เดือน) + setup PAM (ระบบราคา 1-3 ล้าน). ROI ของการลงทุนนี้ — มหาศาล. ROI ของการไม่ลงทุน — บริษัทคุณเป็น lottery ticket ของ ransomware gang ทุกวัน
Tease EP.15 — Federation: passport ของรัฐบาลอื่นที่ใช้ข้ามบริษัทได้
ครับ — EP.14 จบที่นี่. คุณได้เห็นแล้วว่า Kerberos = ระบบ check-in โรงแรมที่ Microsoft ใช้ทั่วโลกในบริษัทใหญ่. KDC + AS + TGS, TGT + Service Ticket, Mimikatz + Golden Ticket — และ Domain Admin คือ crown jewel ที่ ransomware เป้าเสมอ
แต่ — Kerberos = ระบบภายในบริษัทเดียว. ภายใน domain เดียว. ภายใน forest เดียว. คำถามถัดมาคือ — ถ้าบริษัทคุณต้องการให้พนักงานเข้าใช้ระบบของบริษัทอื่น — เช่น Slack, Salesforce, AWS, Google Workspace ที่อยู่ใน cloud — ที่ไม่ได้อยู่ใน domain ของคุณ — จะทำยังไง? จะให้พนักงานสร้าง account แยกที่ทุกบริการ? — กลับไปกับดักก่อนยุค Kerberos. จะทำ Active Directory ของบริษัทคุยกับ Active Directory ของ Salesforce ได้ไหม? — มันไม่มี
คำตอบของวงการ — เทคโนโลยีที่ชื่อ Federation. ในชีวิตจริง — มันเหมือนการที่คุณใช้ passport ของรัฐบาลไทย เข้าประเทศอื่น — โดยที่รัฐบาลของประเทศอื่น ไม่ต้องตรวจบัตรประชาชนของคุณเอง — แค่เชื่อ passport ของรัฐบาลไทยพอ. นี่คือ identity ข้ามองค์กร
EP.15 ผมจะพาคุณดูเทคโนโลยี Federation + SSO ข้ามองค์กร. คุณจะได้เห็น:
- SSO concept — Single Sign-On ข้ามองค์กร — แตกต่างจาก Kerberos SSO ภายในยังไง
- 3 ตัวละครใหม่ — IdP (Identity Provider) = รัฐบาลที่ออก passport, SP (Service Provider) = ประเทศที่รับ passport, Token / Assertion = passport เอง
- 3 protocols ที่ครองตลาด — SAML 2.0 (มาตรฐาน enterprise เก่า), OAuth 2.0 (มาตรฐาน mobile + API), OIDC (OpenID Connect) (มาตรฐานใหม่ที่กำลังแทน SAML)
- JWT (JSON Web Token) — โครงสร้างของ token ที่ทุก app ในยุค cloud ใช้
- “Login with Google” ทำงานยังไง — ทุกครั้งที่คุณกดปุ่มนี้ — มี protocol อะไรเกิดขึ้น
- Federation gotchas — confused deputy attack, redirect attack, token theft
- เคสจริง — Twitter 2020 (admin panel takeover ผ่าน OAuth misuse), Okta 2022 breach (IdP ที่บริษัทใหญ่ทั่วโลกใช้ — โดน hack — ผลกระทบลูกค้านับร้อยล้านคน)
- เปรียบเทียบ Kerberos (ภายใน) vs Federation (ข้าม) — เมื่อไหร่ใช้อะไร
ครับ — เมื่อจบ EP.15 — คุณจะเข้าใจว่า “Login with Google” ที่กดบ่อยๆ — เบื้องหลังมี protocol อะไรเดินอยู่ — และทำไม Okta โดน hack = บริษัทใหญ่ทั่วโลกพร้อมพัง
→ EP.15 — Federation + SSO: “Login with Google” คืออะไรกันแน่