What is Kerberos and how it works (ar)
what is kerberos and how it works
الـ kerberos هو عبارة عن protocol المسؤول عن الـ authentication في الـ network والتأكد من هوية الـ user او الـ host وبيشتغل علي Port 88/udp
أول حاجة لازم نعرفها ان ال kerberos للـ authentication مش للـ authorization وان الـ Kerberos بيستخدم الـ tickets في عملية الـ authentication
الـ kerberos بيشتغل مع الـ hostname يعني لو انت استخدمت الـ ip address مش هيشتغل واللي هيشتغل في الحالة دي هو الـ NTLM protocol مكانه
طيب الـ kerberos بيتكون من ايه؟
الـ kerberos بيتم بين 3 حاجات وهما الـ users, KDC و application server
-اول حاجة الـ user دا اللي بيكون عاوز يـ access service علي network
-الـ KDC دا الـ authentication server واللي بيلعب أهم دور في عملية الـ kerberos authentication لانه بيكون موجود فيه database بال users وال applications services والـ hash بتاعهم
-الـ application servers ودا بيكون server لـ service معينه
krbtgt key ودا بيكون بـ krbtgt account NTLM hash
user key ودا بيكون بـ user account NTLM hash
service key ودا بيكون بـ service account NTLM hash
session key ودا بيكون بين الـ user والـ KDC
service session key ودا بيكون بين الـ user والـ service
Tickets:
TGT(Ticket Granting Ticket)
- TGT ودي اول ticket بتطلع من الـ KDC وبتطلع لما الـ user يكون authintected
وبتكون متشفرة بالـ KDC Key
TGS (Ticket Granting Service)
-TGS ودي بتطلع لما الـ user يكون عاوز authentication لـ service معينه ولازم يكون معاه ال TGT عشان يقدر يطلبها من الـ KDC وبتكون متشفرة بالـ service key
Messages:
1- KRB_AS_REQ دي اللي الـ user بيبعتها للـ KDC عشان يطلب TGT
2- KRB_AS_REP دي اللي TGT الـ KDC بيبعتها للـ user بعد ما يكون authenticated
3- KRB_TGS_REQ دي الـ user بيطلب TGS من ال KDC لـ service معينه باستخدام ال TGT
4- KRB_TGS_REP دي الـ user بيستلم الـ TGS من KDC
5-KRB_AP_REQ دي بتكون بين الـ user بيطلب authenticate من الـ service باستخدام الـ TGS
6- KRB_AP_REP الـ service بتاكد للـ user انه authenticated
7- KRB_ERROR دي لتوصيل الـ errors
PAC:
ودي الـ Privilege Attribute Certificate دي بتكون موجودة تقريبا في كل الـ tickets ودي بيكون فيها الـ privilege بتاع الـ user ودي بتكون signed with KDC key واحنا قولنا ان الـ kerberos للـ Authentication مش للـ authorization
الـ service تقدر تتحق من الـ PAC عن طريق انها تكلم الـ KDC بس دا مبيحصلش كتير ومعا ذلك ال service بتتاكد بس من الـ signature ومبتتاكدش من الـ privilege وكمان الـ client يقدر يمنع وجود الـ PAC جوا الـ ticket عن طريق انه يحط KERB-PA-PAC-REQUEST في الـ ticket
نيجي بقا علي عملية الـ authentication بتتم ازاي
1- اول حاجة الـ user بيبعت KRB_AS_REQ للـ KDC ودي بيكون موجود فيها
-الـ username
-الـ service SPN ودا ال service principal name الخاصه بـ krbtgt account
- encrypted timestamp ودي بتكون متشفرة بالـ User NTLM hash
الـ request message كلها بتكون متشفرة بالـ User NTLM hash اللي هو الـ NTLM hash بتاع الـuser
ملحوظة الـ encrypted timestamp بتكون ضرورية للـ user اللي مفعل requires preauthentication
2- تاني حاجة الـ KDC بيستخدم الـ database اللي فيها الـ users/ktbtgt/services hashes عشان يعمل decrypt للـ request message اللي الـ user بعتها لو فكها وطلعت سليمة يبقي الـ user دا authenticated وبعدين يعمل generate للـ TGT
الـ KDC بيرد علي الـ user بـ KRB_AS_REP ودي بيكون فيها
-الـ Username
- encrypted data بـ الـ User NTLM hash ودي بتكون الـ session key والـ expiration date of TGT
- الـ TGT ودي بتكون encrypted بالـ krbtgt NTLM hash وبيكون فيها :
username
session key
expiration date of TGT
PAC signed by KDC
Some encrypted data with user key, which includes:
Session key
Expiration date of TGT
الـ TGT مهمه عشان الـ user يقدر يطلب الـ TGS
3- الـ KRB_TGT بتتخزن في الـ kerberos tray في الـ memory في جهاز الـ user
عشان يقدر يبعت message request للـ TGS
الـ KRB_TGS_REQ بيكون فيها
-Encrypted data with session key:
Username
Timestamp
-TGT
-SPN of requested service
4- الـ KDC بيستلم الـ KRB_TGS_REQ ويعملها decrypt بالـ krbtgt hash عشان يتاكد من الـ TGT بعد كدا بيبعت الـ KRB_TGS_REP ودي بتكون متشفرة بالـ requested service hash وفيها جزء متشفر بالـ user hash
ودي بيكون فيها:
-Username
- Encrypted data with the session key:
Service session key
-The expiration date of TGS
-TGS which contains:
Service session key
Username
The expiration date of TGS
PAC signed by KDC
5- لو كل حاجة عدت تمام كدا الـ user معاه TGS يقدر يـ interact مع الـ service
عشان يقدر يستخدمها لازم يبعت للـ KRB_AP_REQ
ودي بيكون فيها :
-TGS
-Encrypted data with the service session key:
Username
Timestamp, to avoid replay attacks
6- الـ service هتعمل decrypt للـ message بالـ service NTLM hash وتتاكد من الـ PAC من KDC عشان تتاكد من الـ user privileg ودا مبيحصلش عادة
7- الـ KDC هياكد الـ PAC
8- هيتسمح للـ user انه يستخدم الـ service لمدة معينة
Last updated
Was this helpful?