Basic Understanding Kerberos Authentication (What I Learned)

Justin Thein Kyaw
5 min readFeb 25, 2021
[Ashley Van Haeften ] Hercules and Cerberus LACMA 65.37.151

What is Kerberos?

“Kerberos” ဆိုတာ ဂရိပုံပြင်တွေကနေဆင်းသက်လာတာဖြစ်ပါတယ်။ သူ့ အဓိပ္ပာယ်ကတော့ ခေါင်းသုံးလုံးနဲ့ခွေးဖြစ်ပါတယ်။ အဲခွေးက Underworld ကိုစောင့်ရတာဖြစ်ပြီး သူ့တာဝန်က သေဆုံးပြီးသားဖြစ်တဲ့ Souls တွေကို သေခြင်းတရားကထွက်မပြေးအောင်စောင့်ရှောက်ရတာနဲ့ အသက်ရှင်လျက်ရှိတဲ့ Souls တွေဝင်မလာအောင် ကာကွယ်ရတာပဲဖြစ်ပါတယ်။

Windows မှာတော့ Kerberos ဆိုတာ Authentication Technology တစ်ခုဖြစ်ပါတယ်။ AD Server configuration လုပ်ထားတဲ့ Network တွေမှာသုံးတဲ့ Default Authentication Protocol တစ်ခုဖြစ်ပါတယ်။

“Kerberos” ကို Microsoft မှ သူတို့ရဲ့ Windows တစ်ခုဖြစ်တဲ့ Windows 2000 ရဲ့ Version တစ်ခုအနေနဲ့မိတ်ဆတ်ခဲ့တာပဲဖြစ်ပါတယ်။ နောက်ပိုင်းမှာတော့ “Kerberos Consortium” မှ Kerberos ကို ပြုပြင်ပြီး Open-source Project တစ်ခုအနေနဲ့ Released လုပ်ပေးခဲ့ပါတယ်။

လက်ရှိ Kerberos ဟာ version 5 ဖြစ်နေပါပြီ။ Kerberos V5 လို့လဲခေါ်ကျပါတယ်။ Version တစ်ခုနဲ့ တစ်ခုရဲ့ Authentication လုပ်ဆောင်ချက်များက Version များအလိုက် အနည်းငယ် ကွဲပြားခြားနားမှာဖြစ်ပြီး Version မြင့်လာလေ Feature စုံလာလေဖြစ်ပါတယ်။

Kerberos ရဲ့ History များကို ဒီမှာ ဝင်ရောက်ဖတ်နိုင်ပါတယ်။

Why Kerberos?

Kerberos ဟာ သူ့ရှေ့မှာပေါ်ခဲ့တဲ့ Authentication Technologies များကို Improved လုပ်ထားတဲ့ Technologies တစ်ခုဖြစ်ပါတယ်။ သူဟာ ပိုပြီး Strong ဖြစ်တဲ့ Cryptography များကို အသုံးပြုထားတဲ့အပြင် Kerberos ကိုသုံးခြင်းအားဖြင့် Network ပေါ်မှာ infiltrate ဖြစ်လာနိုင်တဲ့ Cybercrime တွေကို လျော့ချပေးနိုင်ပါတယ်။

Kerberos ဟာ Ticket System တစ်ခုဖြစ်ပါတယ်။ ပုံမှန်အားဖြင့် Client/Server Authentication လုပ်ဆောင်တဲ့ Network ကို Ticket system အနေဖြင့် symmetric-key cryptography based authentication ကိုလုပ်ဆောင်ပေးပါတယ်။

(သို့ရာတွင်လည်း Kerberos ကို ချိုးဖောက်မည့် နည်းလမ်း များလည်း ရှိပါတယ် — ဥပမာ Pass the Ticket attack,Golder Ticket attack, etc…)

Kerberos မှာ အဓိက Key Player ၃ ယောက်ရှိပါတယ်။ အဲတာတွေကတော့

  1. KDC (KDC ဆိုတာ TGS နဲ့ AS ၂ ခုပေါင်းထားတဲ့ Server ဖြစ်ပါတယ်)
  2. Resource Server (or Service)
  3. Client

ဆိုပြီးပဲဖြစ်ပါတယ်။ “Kerberos” မှာသုံးတဲ့ Technology Terms များမှာအောက်ပါဖော်ပြပါအတိုင်းဖြစ်ပါတယ်။

Terminology

Ticket Granting Ticket (TGT) :

Authentication Ticket အမျိုးအစားတစ်ခုဖြစ်ပါတယ်။ သက်ဆိုင်ရာ Domain များမှ သက်ဆိုင်ရာ Service ကိုအသုံးပြုချင်သည့်အခါတွင် အသုံးပြုသည့် Service Tickets ကိုရရှိရန် TGS သို့ Request လုပ်ရာတွင်အသုံးပြုပါတယ်။

Key Distribution Center (KDC)

KDC သည် AS နှင့် TGS Services များကို Provide လုပ်ပေးနေသည့် Service center ဖြစ်ပါတယ်။ KDC သည် TGT နှင့် Service Ticket များကို Issue လုပ်ပေးသည့် Service ဖြစ်သည်။ Service Ticket များဆိုရာတွင် Authentication Service နှင့် Ticket Granting Service များပါ အပါအဝင်ဖြစ်ပါတယ်။

Authentication Service (AS)

Authentication Service သည် TGT များကို issues လုပ်ပေးသည့် service ဖြစ်ပါတယ်။ TGT Ticket များကို Domain တွင် ရှိသော Ticket Granting Service မှတဆင့် အခြားသော Machines များနှင့် Service Ticket များကို အသုံးပြုရန် Request လုပ်ရာတွင် အသုံးပြုနိင်ပါတယ်။

Ticket Granting Service (TGS)

Ticket Granting Service သည် ပေးပို့လာသော TGT များကို ယူဆောင်ပြီး သက်ဆိုင်ရာ Domain တွင်းရှိ Machine များကိုပေးပို့ပါတယ်။

Service Principal Name (SPN)

Service Principal Name ဆိုသည်မှာ Identifier အမျိုးအစားဖြစ်ပြီး Service Instance များကို Domain Service Account နှင့်အတူတကွ Associate လုပ်ရန် အသုံးပြုပါတယ်။ Windows က ဘယ် Service သည် ဘယ် SPN Set များကို အသုံးပြုသည်ကို အတည်ပြုရန် Service များတွင် သက်ဆိုင်ရာ Domain Service Account များလိုအပ်ပါတယ်။

Client Long Term Secret Key (Client LT Key)

Client Key များသည် Computer သို့မဟုတ် Service Account များပေါ် တွင်မူတည်ပါတယ်။ ၄င်းကို Encrypt လုပ်ထားသော timestamp နှင့် session key များကို စစ်ဆေးရာတွင်အသုံးပြုသည်။ တနည်းအားဖြင့် Client ရဲ့ NTLM hash ဖြစ်ပါတယ်။

Service Long Term Secret Key (Service LT Key)

Service Key များသည် Service Account များပေါ်တွင်မူတည်ပါတယ်။ ၄င်းကို Service ticket များကို Encrypt လုပ်ရာတွင် လည်းကောင်း၊ PAC ကို Sign လုပ်ရာတွင်လည်းကောင်း အသုံးပြုပါတယ်။

Session Key

Session Key ကို TGT ကို Issue လုပ်ပြီးသည့်အခါ KDC မှ Issues လုပ်ပေးပါသည်။ User မှ Service Ticket များကို Request လုပ်ရာတွင် Session key နှင့်အတူတကွ TGT ပါအဝင် KDC သို့ပေးပို့ရပါတယ်။

Privilege Attribute Certificate (PAC)

PAC တွင် User နဲ့သက်ဆိုင်သည့် Information များပါဝင်ပါတယ်။ PDC ကို TGT နှင့် အတူ KDC ကိုပေးပို့ရပါတယ်။ KDC သည် Target LT Key နှင့် KDC LT Key များကို Sign ထိုးခြင်းဖြင့် User ကို စစ်ဆေး (Validate) လုပ်ပါတယ်။

Kerberos Authentication Overview

Kerberos Authentication အလုပ်လုပ် ပုံ Overview အဆင့်ဆင့်မှာ အောက်ပါအတိုင်းဖြစ်သည်။

AS-REQ-1 Client မှ Authentication Ticket သို့မဟုတ် Ticket Granting Ticket (TGT) ကို KDC မှတောင်းခံမည်။ ထိုသို့တောင်းခံရာတွင် timestamp ကို user ရဲ့ Client LT နဲ့ Encrypt လုပ်ပြီးပေးပို့တာဖြစ်ပါတယ်။

AS-REP-2 KDC မှ Client မှပေးပို့သော Request ကို Verify လုပ်ပြီး Encrypt လုပ်ထားသည့် TGT ကိုပြန်ပေးမည်။

TGS-REQ-3 ထို့နောက် Client မှ Encrypted လုပ်ထားသော TGT နှင့် Access လုပ်လိုသည့် Service ရဲ့ Service Principal Name (SPN) ကို Ticket Granting Server (TGS) ကိုပို့ပေးမည်။

TGS-REP-4 KDC မှ Client ပေးပို့သော TGT ကို ကြည့်၍ ပေးပို့သော User သည် Request လုပ်သော Service ကို Access လုပ်ပိုခွင့်ရှိ မရှိကို Verify လုပ်ပြီး Access လုပ်ခွင့်ရှိပါက Valid Session key ကို Client ထံသို့ပြန်ပို့ပေးမည် ဖြစ်သည်။

AP-REQ — 5 Client မှ Request လုပ်လိုသော Resource (Server & Service) ကို KDC မှပြန်ပို့ပေးသော Session Key ကို ပို့ဆောင်ပြီး Authentication process ကိုလုပ်ဆောင်မည်။

AP-REP — 6 မှန်ကန်ပါက Service Grants ဖြစ်ပြီး Access လုပ်ပိုင်ခွင့်ရမည်ဖြစ်သည်။

(ဖော်ပြပါ Step နာမည်များမှာအရေးကြီးပါတယ်။

Hacker များအနေနဲ့ ဘယ်လို Attack မျိုးကိုအသုံးပြုမလဲဆိုတာကို Step နာမည်နဲ့ အသေးစိတ်ရှာဖွေနိုင်ပါတယ်။

AS-REQ ရဲ့ အသေးစိတ်အလုပ်လုပ်ပုံကို အောက်တွင်ဖတ်ရူနိုင်ပါသည်)

AS-REQ / Pre-Authentication in Detail.

AS-REQ (ပဏာမ အဆင့်) အနေနဲ့ User မှ TGT Issue ထုတ်ရန် KDC ကို Request လုပ်ရမှ စတင်ပြီး Kerberos Authentication ဟာ စတင်အသက်ဝင်ပါတယ်။ Request လုပ်သည့် User ကို Validate လုပ်ရန်နှင့် TGT create လုပ်ရန် KDC ဟာအောက်ပါအဆင့်များကို လုပ်ဆောင် ရပါတယ်။

ပထမအဆင့် အနေဖြင့် — Request လုပ်တဲ့ User ရဲ့ Request timestamp ကို သူ့ရဲ့ NT hash ဖြင့် Encrypt လုပ်ပြီး AS ကိုပို့ပေးပါတယ်။

ဒုတိယအဆင့် အနေဖြင့် — KDC ဟာ Timestamp ကို Request လုပ်တဲ့ User ရဲ့ NT hash ကိုသုံးပြီး Decrypt လုပ်ဖို့ကြိုးစားပါတယ်။ အကယ်၍ Decrypt လုပ်တာ အောင်မြင်ခဲ့လျှင် User သည် Valid user လို့ သဘောထားပြီး TGT နှင့် Session Key ကို Issue လုပ်ပေးပါတယ်။

Kerberos Tickets Overview

Ticket များထဲမှာမှ အဓိက ကျတဲ့ Ticket ကတော့ Ticket Granting Ticket (TGT) ဖြစ်ပါတယ်။ TGT ဟာ ပုံစံအမျိုးမျိုး နဲ့လာနိုင်ပါတယ်။ ဥပမာ — Rubeus အတွက်.kirib Form ၊ Impacket အတွက် .ccache form တို့ပဲဖြစ်ပါတယ်။

Ticket များဟာ အခြေခံအားဖြင့် Base 64 method ဖြင့် encode ပြုလုပ်ထားတာဖြစ်ပြီး Attack vector အနေဖြင့်လဲအသုံးများကျပါတယ်။ Kerberos မှာသုံးတဲ့ Tickets အမျိုးအစားက ၂ ခုရှိပါတယ်။ TGT နဲ့ Service Ticket များပဲဖြစ်ပါတယ်။

TGT ဟာ KDC မှ Service Ticket ရဖို့အတွက်ပဲ အသုံးပြုတာဖြစ်ပါတယ်။ Service Ticket ကတော့ သက်ဆိုင်ရာ Resource Server ကို Access လုပ်ဖို့ရာမှာသုံးပါတယ်။

Client (or) User မှ TGT Key ကို Server သို့ပို့ပြီးသည့်နောက် Server မှ User Details, Session Key, Service Account ရဲ့ NTLM Hash နဲ့ Encrypt လုပ်ထားတဲ့ encrypted tickets ကိုရရှိမှာဖြစ်ပါတယ်။

ထို့နောက် Client မှ encrypted timestamp, session key နဲ့ KDC မှပြန်ပေးထားသော encrypted TGT တို့ကို အသုံးပြုပြီး Service ticket ကိုတောင်းခံနိုင်သည်။ ထိုအခါတွင်မှ KDC server မှ Authentication process ကိုလုပ်ဆောင်ပြီး Request လုပ်သည့် Service အတွက် Service Ticket ကို response ပြန်ပေးမှာဖြစ်ပါတယ်။

Ticket Granting Ticket (TGT) Contents

Service Ticket များကို ဘယ်လို Created လုပ်မလဲ validated လုပ်မလဲကို နားလည်နိုင်ရန်အတွက် ပထမဆုံး Ticket တွေ ဘယ်ကလာတာလဲဆိုတာကိုကြည့်ရပါမယ်။

User မှ TGT ကို KDC ကိုပေးပို့ရပါတယ်။ KDC က TGT ကို Validate လုပ်ပြီး Validate လုပ်ပြီးသား Ticket နဲ့ Service Ticket ကို အတူတကွ User ထံကို ပြန်ပို့ပေးလိုက်မှာဖြစ်ပါတယ်။

ထို့နောက် Client မှာ မိမိ Access လုပ်လိုသော Service သို့ Access Request ကို ထို ticket နှင့် Request လုပ်ရခြင်းဖြစ်ပါတယ်။ TGT ticket မှာပါဝင်သည့် Content မှာအောက်ပါပုံ အတိုင်းဖြစ်ပါတယ်။

Service Ticket Contents

Kerberos သည် Authentication ဘယ်လိုအလုပ်သလဲကို နားလည်ရန်အတွက် Ticket များတွင် ဘယ်လို Contents များပါဝင်သလဲဆိုတာသိထားဖို့လိုပါတယ်။ Service Ticket မှာဆိုရင် အပိုင်း ၂ ပိုင်းပါ ပါတယ်။ Service Portion နဲ့ User provide Portion ဆိုပြီးပါ ပါတယ်။ ဒီ Portion ၂ ခုကို အောက်ပါတအတိုင်း ခွဲခြမ်း စိတ်ဖြာနိုင်ပါတယ်။

  1. Service Portion မှာ User Details, Session Key, Encrypts the ticket with the service account NTLM hash တို့ပါဝင်ပါတယ်။
  2. User Portion မှာတော့ Validity Timestamp, Session Key, Encrypts with the TGT session key တို့ပါဝင်ပါတယ်။

Summary

အကျဥ်းချုပ်ပြောရရင် Kerberos ရဲ့ Overview Authentication ပိုင်းကို နားလည်သွားမယ်လို့ယူဆပါတယ်။ ကျွန်တော့်လို Non-Windows environment ပိုင်းကလာမယ့်လူတွေကတော့ ခေါင်းရှုပ်သွားမှာအမှန်ပါပဲ။

Kerberos က တကယ်တော့ ဒီထက်ပိုရှုပ်ထွေးပါတယ်။

တကယ်တန်းပြောရရင် Windows Server Administrator တယောက်အနေနဲ့ ဒီလိုအပိုင်းတွေကို ယိုပေါက်မရှိအောင်လုပ်ရမယ်ဆိုတာက အိမ်မက်ဆိုးတစ်ခုပါပဲ။ ပုံမှန် Hacker, Software Developer တယောက်အနေနဲ့ Kerberos ပိုင်းကို ခုလောက်နားလည်ထားရင် အဆင်ပြေပါပြီ။

Kerberos Server ကို ဘယ်လို Setup လုပ်ရမယ်ဆိုတာကိုတော့ Root of Info ဆိုတဲ့ Technical Blog မှာဝင်ရောက်ကြည့်နိုင်ပါတယ်။

အားလုံးကိုကျေးဇူးတင်ပါတယ်။

References:

https://tryhackme.com/room/attackingkerberos

https://medium.com/@robert.broeckelmann/kerberos-and-windows-security-kerberos-on-windows-3bc021bc9630

https://www.varonis.com/blog/kerberos-authentication-explained/

https://www.rootofinfo.com/2019/03/understanding-kerberos-authentication.html

Written by Justin Thein Kyaw

--

--