Yousef Alfakih
Yousef Alfakih

@0xclient

11 تغريدة 9 قراءة May 22, 2023
Kerberos
اليوم ان شاء الله بنتكلم عن ال Kerberos بم اني شفت ناس جدا كثيرة ماتعرف ايش هو ولا كيف يشتغل البروتوكول غير ان ناس كثيرة تواجه مشكلة في فهمه ف ان شاء الله بحاول اني ابسطه لكم بقدر الامكان
[+] اول شي ايش هو ال kerberos ؟
- الKerberos بكل اختصار هو عبارة عن authentication protocol وهو يعتبر ال authentication protocol الاساسي في بيئة ال Active Directory
"وطبعا ما ننسى ال NTLM Authentication" وتم اختراعه عام 1980 من قبل MIT وسوه عشان يمنعون ان ال passwords ما تنتقل عن طريق الشبكة خلال عمليات ال authentication ف بالتالي بيزيد ال security داخل ال environment
"ولكن طبعا الكلام هذا ماينفع معنا😂"
وبالمناسبة ال Kerberos يستخدم symmetric key cryptography
[+] كيف تتم عملية ال Kerberos Authentication
- طيبب ممكن اننا نقسم عملية ال Authentication هذي ل 6 خطوات او 5 على حسب , وبنشرح خطوة خطوة ان شاء الله بشكل مبسط
1- AS-REQ
2- AS-REP
3- TGS-REQ
4- TGS-REP
5- TGS-Service
6- Grants Access
طبعا انا متأكد انك لو اول مره تشوف الكلام هذا بتحس انك غبي ومب فاهم وش السالفة ولكن هذا طبيعي ماعليك بس الفكرة ابغاك تركز معي لان هو مب صعب ولكن يحتاج تفتيح مخ ف يلا
طيب طيب طيب ! قبل كل شي فيه كم مصطلح يبغالك تعرفه وتفهمه عشان تقدر تكمل معي والي هم :
[+] KDC ( Key Distribution Center )
- ال KDC نفسه هو ال
DC (Domain Controller) ف لما اقولك KDC ف تقدر تعتبره ال DC عادي، طيب ال KDC يشمل ٣ جوانب أساسية برضوا والي هم
1- Ticket Granting Server وهذا الي ي connect ال user بال SS او ال Service Server "وبنتكلم بعد شوي عن ذا الموضوع برضوا"
2- Kerberos Database وهذي ال database الي متخزن فيها ال passwords وال identifications حقت جميع ال verified users الي في ال environment
3- AS(Authentication Server) وهذي المرحلة حقت ال initial authentication "والي بنتكلم عنه برضوا"
[+] TGT (Ticket Granting Ticket)
[+] TGS (Ticket Granting Service)
" لو مافي شي واضح الحين ماعليك الامور بتوضح ان شاء الله"
1- اليوزر لما يجي يسجل دخول لجهازه الجهاز يروح يكلم ال KDC يقوله السلام عليكم كيف حالك ؟ ال KDC يقوله ياهلا والله الحمدلله بخير، وش بغيت ؟ اليوزر بيقوله بالله ابغا
TGT(Ticket Granting Ticket)
ال KDC بيقوله ابشر لكن بس لاهنت ارسلي شوي بيانات عشان اقدر اتحقق من هويتك واعطيك ال TGT، اليوزر يقوله تم ويرسله شوي بيانات زي ال IP , وال Username وال TimeStamp وغيره ويغلفها ويشفرها بال hash حق اليوزر نفسه وهذا يسمى ال AS-REQ
2- ال KDC ياخذ المعلومات هذي ويحاول يسوي لها decrypt بالhash حق اليوزر الي طلب ال AS-REQ الي عنده في قاعدة البيانات واذا قدر انه يسويله decrypt ف الامور تمام وهذا يدل ان فعلا اليوزر موجود في ال environment و verified ، بعد ما الKDC يتحقق من اليوزر بيقوله حلو امورك تمام خذ ال TGT
( وال TGT بتكون encrypted بال hash حق ال krbtgt account وبقولكم ليش بعدين ) وهذا الي يسمى ال AS-REP
[+] الحين اليوزر اموره تمام ومعاه TGT وكل شي تمام ، طيب وبعدين ؟ اليوزر والله يبغى ي access خدمة او service معينة وش بيسوي ؟ عشان يقدر ي access خدمة او service معينة لازم يكون معه TGS (Ticket Granting Service) وطبعا كلنا عارفين بيروح يطلبها من مين ، خوينا ال KDC
3- اليوز بيروح يقول لل KDC هلا والله كيف حالك من زمان عنك ، ال KDC بيرد عليه يقوله حياك الله عيوني امرني ، اليوزر بيقوله بالله ابغا access ل service معينة وهذا ال
SPN(Service Principle Name) حقه ، ال KDC بيقوله ابشر ماعندك مشكله لكن عندك TGT عشان اقدر اتحقق منك ؟ اليوزر بيقوله ايهه يارجال عندي دقيقه اعطيك ايها ، اليوزر يعطي ال KDC ال TGT الي هو اخذها منه في العملية الاولى والثانية الي هم ال AS-REQ + AS-REP ولكن ال KDC ذكيي ايش بيسوي عشان يتحقق من ال TGT هذي ان هي صدق طالعة من ال KDC نفسه ؟ بيروح يسوي لها decrypt بال krbtgt hash واذا قدر انه يسويلها decrypt ف هنا بيعرف انه هو الي مسويها وان اليوزر صادق وطلع انه ماخذها منه وهذي العملية الي تسمى TGS-REQ
4- الحين الKDC بعد ما تحقق من ال TGT وعرف انه هو الي معطيها لليوزر ف الامور للحين تمام ، الحين ال KDC بيقول لليوزر امورك تمام وهذا هذي ال TGS حقت ال service الي تبغاها ولكن برضوا هنا ال KDC سوا حركة ذكية والي هي ، انه سوا encryption لل TGS بال service account hash الي اليوزر طالبه يعني لو اليوزر كان طالب انه ي access خدمة معينة زي مثلا ال MS SQL ف الKDC بيسوي encrypt لل TGS بالهاش حق ال service account والي بيكون في هذي الحالة مثلا mssql_svc وبنعرف ليش سوا كذا برضوا بعد شوي ، وهذي الخطوة الي تسمى TGS-REP
5- اخر خطوة خلاص والي هي بعد ما اليوزر اخذ ال TGS حقت الservice بيروح لل server يقوله السلام عليكم عندي TGS عادي اخذ منك كم شي ؟ ال server بيقوله تمام بس عطني ال TGS اشيك عليها ، اليوزر بيقوله سم خذ ال TGS , الحين لو ال server قدر يسوي decrypt لل TGS ب استخدم ال service account hash والي هو حق ال mssql_svc ف هنا بيعرف انه اليوزر صادق وانه اخذ ال TGS من ال KDC بم ان محد يعرف ال service account hash غير ال KDC بحكم انه هو الوحيد الي عنده ال credentials حقت جميع الusers الي في الenvironment ، بعد مايتحقق بيقوله تمام اطلب امورك تمام 👍🏽 ( طبعا كان في خطوة زيادة بين ال server حق ال service وال KDC بس هذي optional غالبا غير اني مب متذكرها كويس صراحة) وهذي المرحلة الي تسمى ال granted access
وبس والله ادري طولت عليكم و الوضع ممكن حسيتوه ممل غير ان شرحي لحاله ممل و لكن حاولت اشرحه لكم بطريقة بسيطة والله وسهلة نوعا ما ف اتمنى انه افادكم ولو بشي بسيط

جاري تحميل الاقتراحات...