מילון מושגים:
האש - פונקציה שממירה מידע לערך קצר באורך קבוע. שינוי קטן בקלט משנה את התוצאה, והיא חד-כיוונית.
RDP - פרוטוקול של מיקרוסופט לחיבור לשולחן עבודה מרוחק של מחשב Windows והפעלתו מרחוק.
רג'יסטרי - מסד נתונים מרכזי ב-Windows ששומר הגדרות של מערכת ההפעלה ושל תוכנות מותקנות.
NTLM - פרוטוקול אימות ותיק של מיקרוסופט המבוסס על ערכי האש של סיסמאות, שקדם ל-Kerberos.
Kali Linux - הפצת Linux המיועדת לבדיקות אבטחה וחדירות, הכוללת אוסף כלים לבחינת מערכות.
CMD - שורת הפקודה הקלאסית של Windows (Command Prompt), להרצת פקודות ותוכניות בממשק טקסטואלי.
TGT - כרטיס שמנפיק שרת האימות ב-Kerberos, שבעזרתו המשתמש מבקש גישה לשירותים בלי להזדהות שוב בכל פעם.
Group Policy - מנגנון ב-Active Directory להחלת הגדרות ומדיניות אבטחה באופן מרכזי על משתמשים ומחשבים בדומיין.
התקפת Pass-The-Hash על RDP
בשיעור זה אנו רואים כיצד הרג'יסטרי שמפעיל את ההגנות המשופרות של השולחן המרוחק מדליק בו-זמנית גם את ה-Remote Guard שעובד רק בקרברוס, וגם את ה-Restricted Admin שעובד ב-NTLM עם hash. וברגע שהופעלה האופציה המאובטחת כביכול, נפתחה הדרך להתקפת Pass-The-Hash על ה-RDP.
נושאי הסיכום המוצגים בשיעור:
1. מה אפשר לעשות עכשיו: השרת מקבל שולחן עבודה מרוחק עם עימות NTLM בלבד, כלומר עימות דרך hash בלבד. אם מצליחים לגנוב את ה-hash של המשתמש, אפשר לבצע התקפת Pass-The-Hash, להתחבר מרחוק כאקרים בלי לדעת את הסיסמה של המשתמש. נציין רק איזה משתמש, איזה דומיין ומה ה-hash של אותו משתמש, גם אם לא הצלחנו לשבור את ה-hash, פשוט מתחברים איתו כמו שהוא.
2. המכניקה של העימות: מבקשים מה-RDP שיזרוק לנו challenge, ואנחנו מצפינים אותו בעזרת ה-hash של המשתמש, כאילו ידענו את הסיסמה, למרות שאיננו יודעים אותה באמת. אבל זה hash של המשתמש המקורי, מצפינים איתו את הסיסמה, מחזירים אל השרת, והשרת מעביר הכל אל ה-DC לבדיקה, גם את ה-challenge וגם את התשובה. ה-DC מאשר שהוא אכן הצליח להצפין כמו שצריך, ושרת ה-RDP, בין אם זו תחנת עבודה ובין אם שרת קבצים או SQL, לא משנה איזה שרת, נותן לנו להיכנס פנימה.
3. החיסרון האדיר של הרג'יסטרי: לאופציה המאובטחת הזאת יש חיסרון עצום, שברגע שמציבים את הרג'יסטרי הזה, נפתחות שתי האופציות ביחד, גם ה-Remote Guard המאובטח שהוא קרברוסי, וגם ה-Restricted Admin, שמקבל NTLM. וברגע שהוא מקבל NTLM, הוא חושף את השרת להתקפת Pass-The-Hash. נפתחו שתי האופציות עם רג'יסטרי אחד, והמפתח נמצא בשאלה מה יכתוב המשתמש אחרי ה-slash בחיבור.
4. תנאי המשתמש להתקפה: כדי להתחבר עם המשתמש, עליו להיות אדמיניסטרטור מקומי בתחנה. מניחים שהמשתמש שלנו הוא דומיין-אדמין, ומכיוון שהוא דומיין-אדמין הוא גם אדמין מקומי. הסיבה שהוא חייב להיות דומיין-אדמין היא שאנחנו רוצים להתחבר עם המשתמש הזה בשיטת ה-Restricted Admin Mode, שדורשת שהמשתמש יהיה אדמיניסטרטור מקומי, כיוון שרק המצב הזה מאפשר אימות NTLM. כלומר, פתחנו את הרג'יסטרי במטרה לאבטח את עצמנו, ומאחורי הקלעים חשפנו את עצמנו להתקפת Pass-The-Hash. והנה אנחנו בפנים, מתוך Kali התחברנו אל תוך תחנת העבודה.
5. איך מזהים שאנחנו במצב הזה: אחרי החיבור, אם נכנס ל-CMD ונעשה klist, נראה שקיים רק TGT של המחשב ולא של המשתמש, וזהו סימן לכך שאנחנו במצב של Restricted Admin Mode.
6. שתי שיטות אבטחה ל-RDP: יש שתי שיטות לאבטח את השולחן המרוחק כך שלא יישב ביד התוקף ה-hash של המשתמש שמתחבר לתחנה פרוצה. האחת היא השיטה הישנה, Restricted Admin Mode, שהייתה מאז Windows 7, והשנייה היא Remote Credentials Guard, האופציה שהופיעה מ-Windows 10. בשתי התקופות, ההפעלה של שתי האופציות האלה נעשית עם מפתח רג'יסטרי אחד שמפעיל את שניהם, ובגלל שמדובר במפתח אחד, הכל תלוי במשתמש ובמה שהוא יכתוב אחרי ה-slash.
7. אכיפה באמצעות גרופ פוליסי: אם לא סומכים על המשתמשים לבחור לבד איך להתחבר, אפשר ב-Group Policy Management על ה-DC ליצור פוליסה חדשה, לקרוא לה בשם מתאים לדוגמה RDP Secure, ולהפעיל אותה על כל הדומיין. בתוך הפוליסה, ברמת המחשב, הולכים אל תבניות ניהוליות, מערכת, הגדרות הגנה, ומגיעים אל ההגדרה של האצלת ההרשאות מוגבלת לשרתים מרוחקים. שם יש שלוש אופציות, לאפשר רק את ה-Credentials Guard החדש שמחייב קרברוס, או רק את ה-Restricted Admin שמאפשר גם NTLM אך כל מקום מזדהה עם חשבון המחשב, או לאפשר את שניהם איך שהמשתמש רוצה, או כך או כך אך לא בצורה הרגילה. הגדרה כזאת חלה על Windows 8.1 ומעלה, ואם לא מגדירים דבר, הכל תלוי במה שהמשתמש יכתוב אחרי ה-slash בחיבור.
8. ההמלצה הסופית: Restricted Admin Mode מצוין לצוות הטכני, ו-Remote Credentials Guard מצוין לכולם, ולדעת המרצה הוא עדיף כי הוא פותר את כל הבעיות, עם מגבלה קטנה שכולם חייבים להיות באותו דומיין ולעבוד כראוי. אבל אם זה לא בעיה בתוך הארגון, פתרנו את הסיפור ששולחן עבודה מרוחק משדר את הסיסמה אל היעד, את ה-hash של הסיסמה ואת ה-TGT, ואם התחנה פרוצה אפשר לגנוב את כל אלה. כך מאבטחים את ה-RDP בתוך הארגון.
סיכמנו את התקפת ה-Pass-The-Hash על השולחן המרוחק, מהמנגנון שמאפשר עימות NTLM עם hash בלבד, דרך החיסרון הכרוך במפתח הרג'יסטרי המשותף והדרישה להרשאות אדמין מקומיות, ועד לשתי השיטות לאבטחת ה-RDP וההמלצה המעשית להעדיף את ה-Remote Credentials Guard. זה הכל, תודה רבה.
SR12999HE