
הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Kerberos - TGS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בהרצאה הקודמת דיברנו על tgt ובהרצאה הזאת נדבר על tgs אז מי שלא סגור על tgt שיראה את ההרצאה הקודמת מה שהכי חשוב לי שעכשיו אחרי שיש לי את הtgt הזה בזיכרון זה הכרטיס הזה הראשון אני יכול לבוא ולבקש עוד כרטיס בשביל להתחבר נניח לsql או לפייל סרבר אני עכשיו הולך לקבל שירות מיעד מסוים משרת מסוים
זה נקרא tgs טיקט גרנטינג סרוויס אני אני עכשיו רוצה להתחבר לשרת הקבצים או לsql או לכל תוכנה שתומכת בקרברוס אז לפני שאני מתחבר לשרת ההוא היוזר בכלל הולך לדומיין קונטרולר להגיד לו תביא לי כרטיס שמוצפן עם הסיסמה של היעד שלי שהוא יאמין לי שאני זה אני שלא יגיד שאני מתחזה
אני מבקש ממנו טיקט לשירות שאני רוצה לקבל ואת השם של השירות אני מציין פה ב-spn אני אומר לדיסי, דיסי חמוד, אני רוצה ללכת לשרת הקבצים, תביא לי טיקט לשרת הקבצים.
ועם הטיקט הזה, אני אחרי זה אלך לשרת הקבצים, והוא יאמין לי שאני באמת יוני, ולא איזה מתחזה. אז אני מבקש, לפני שאני פונה בכלל לשרת הקבצים או ל-SQL, אני בכלל פונה לדיסי שלי שיביא לי טיקט, שאיתו אני אוכל ללכת לשרת הקבצים, או ל-SQL,
או לכל שרת אחר. ומה אני שולח בתוך TGS request? אני מכניס את היוזרניים שלי, טיימסטמפ את השעה הנוכחית ושוב את השעה הנוכחית אנחנו שמים כדי למנוע מאאקר שמאזין לנו על הקו לשלוח את הפאקט הזה שוב בשמנו בלי לפענח בלי כלום פשוט לקחת פאקט as is לשלוח עוד פעם אם הוא יעשה את זה זה לא
יעזור לו כי שרת תקלוט שיש לו שני פאקטים מאותו יוזר באותה אלפית שנייה הוא מתעלם מהשני זה מנגנון מצוין נגד ריפליי אטאק אבל כדי שאאקר לא ישנה את הטיימסטמפ בעצמו הכל מוצפן עם ה-session key התחלנו גם להצפין עם ה-hash שלנו, אבל קרברוס רצה להוסיף אבטחה, הוא אומר כמה שפחות נשתמש ב-hash, בוא נצפין הכל עם ה-session key.
אז ככה השרת בודק שה-user name נכון, שאין reply attack, שה-session key שלי פותח את הפאקט, זה אומר שאני באמת הצפנתי אותו. דרך אגב, איך השרת זוכר את ה-session key?
מה, הוא זוכר סשן קי של כל מאות אלפי אנשים שעוברים עימות אצלו? התשובה היא לא. אני גם שולח לו את ה-TGT, ובתוך ה-TGT הזה יש גם את ה-Session Key הזה. זוכרים בתוך ה-TGT פה שהשרט הביא לי פעם היה גם Session Key.
מתוך ה-TGT הוא מוצא את ה-Session Key, פותח את הפאקט ובודק שהיוזרנם והטיימסטמפ נכונים. ואז השרת אומר, אוקיי, זה אתה, גם לא בזבזתי עליך למשאבי זיכרון, שכחתי מי אתה אבל הבאת לי TGT מוצפן עם הסיסמה שלי, אז זה בסדר, אבל מה אתה רוצה ממני?
ואז השרת רואה כאן SPN. SPN זה איזה שירות אני רוצה לקבל ממנו. למי אני רוצה ללכת עם הטיקט שהוא ייתן לי? בואו נראה את ה-spn-ים האלו. ככה הוא נראה, שם של סרוויס, סלאש, שם של שרת, אפילו אפשר לכתוב פורט, שטרודל, איזה דומיין.
זאת הצורה שבה כותבים spn, Service Principle Name, וככה כתוב על הטיקט עבור איזה שירות הוא. לדוגמה, אני אעשה דיר על איזשהו שיתוף, אני אעשה k-list, קיבלתי עוד טיקט אחד עבור סיפס, עבור שיתופים ב-file server.
יש לי טיקט עבור ההזדהות הזאת יש לי טיקט עבור השירות הזה אז ככה נראה TGS הפנייה שלי לדומיין קונטרולר ל-DC כדי לקבל טיקט עבור שרת קבצים או SQL או עבור מישהו אחר אני מעביר לו את ה-TGT שלו אני מעביר לו את הטיימסטמפ והיוזרניים שלי מוצפנים עם ה-Session Key ובסוף אני אומר לו תקשיב זה מה שאני רוצה את ה-SPN
הזה אז מה יש לנו בקרברוס TGS ריפליי בתשובה שה-DC שולח לי בחזרה הוא שולח לי את ה-TGS שלי טיקט גרנטינג סרוויס ה-TGS הזה הכרטיס הזה שימו לב הוא מוצפן עם ההאש של היעד שלי ואז כשאני אבוא ליעד הזה עם הטיקט הזה הוא יגיד אה הבאת לי טיקט שמוצפן עם ההאש שלי כנראה שבאמת הבאת את זה מדיסי שגם אני וגם אתה סומכים עליו שרת היעד אפילו לא
צריך ללכת לדיסי לבדוק שום דבר הוא כבר יודע שרק דיסי היה יכול לייצר אותו דרך אגב מי זה סרוויס אונר האש מי זה הסרוויס אונר הזה זה ההאש שמריץ את הסרוויס, ההאש הזה שאיתו מוצפן הכרטיס הוא יכול להיות Local System שזה אומר הסיסמה של המחשב עצמו הרי באקטיב דירקטורי לכל מחשב יש גם סיסמה עם 128 תווים שכל 30 יום מתחלפת אז עם הסיסמה של המחשב
אפשר לעשות אפשר להריץ את הסרוויס ואפשר גם עם יוזר רגיל להריץ את הסרוויס מה זה סרוויס זה למעשה תוכנה רגילה בסוף זה אקזר רגיל ופשוט שמופעל אוטומט עם יוזר כלשהו. זה יכול להיות יוזר של המחשב וזה יכול להיות יוזר רגיל של Windows.
לא משנה איך הוא מופעל, אתה צריך להביא לי כרטיס שמוצפן עם ההאש של היוזר הזה שהפעיל אותו. הרי ב-Task Manager אנחנו רואים פה SQL SRV Server שהוא מופעל כרגע עם האדמיניסטרטור.
אם האקזר הזה היה עובד תחת יוזר אחר, צריך להביא כרטיס שמוצפן עם מה"ש של היוזר הזה שהפעיל את הסרוויס הזה. אז בסופו של יום אני מביא לו TGS את הכרטיס מה-DC שמוצפן עם מה"ש של מי שהריץ את הסרוויס, את האקזה שאני מנסה להתחבר אליו.
ואם מנהל רשת הריץ את הסרוויס עם יוזר של אדמיניסטרטור, בדיוק כמו שקרה פה ש-SQL רץ עם יוזר של אדמיניסטרטור כי הוא כתב פה לא גונז אדמיניסטרטור כי הוא היה צריך שהוא יוכל להתחבר לאנשהו, לשלוח מיילים או איזושהי סיבה שהאקזה הזה צריך לרוץ עם איזשהו יוזר מסוים וליוזר הזו סיסמה יחסית פשוטה אני יכול לנסות לפרוץ אותה זה בדיוק התקפת
care ברוסטינג כי כל יוזר ב-Active Directory רשאי לבקש מ-DC שלו את ה-TGS את הכרטיס עבור יעד מסוים והכרטיס הזה יהיה מוצפן בהאש של היוזר שמריץ את הסרוויס הזה אז התקפת care ברוסטינג המפורסמת זה בעצם