ניצול סשן RDP מול Windows 10 וזיהוי עם MDE

הטקטיקה של Living off the Land או בקצרה LOTL היא טקטיקה המאפשרת להשתמש בכלים המובנים של המערכת, והיא נפוצה בקרב כל מי שמנסה לבצע פעולות התקפיות מול אותה מערכת, וע"י כך להסתיר את הפעולות מאחורי תהליכים לגיטימיים.

במידה ואנו לוקחים את Windows 10 ישנם אינספור כלים מובנים ולגיטימיים שאיתם ניתן לבצע פעולות התקפיות (LOTL קלאסי), ולכן תוקפים מנצלים את העובדה הנ"ל בכדי לבצע פעולות התקפיות ככל שניתן, אך הבשורה הטובה היא שבמקרים מסוימים מערכות הגנה מתקדמות כדוגמת EDR יכולות לזהות חלק מהפעולות, אך לצד זה ישנן פעולות אחרות שאינן מזוהות, אפילו במצב שבו ישנן מערכות הגנה מתקדמות.

במצב שבו ניתן להשתמש עם כלים מובנים ללא זיהוי ע"י המערכות הגנה, התוקף מנצל את הכלים הלגיטימיים בכדי לנוע רוחבית ברשת ולהשיג את המטרות ואף להתחבא בתחנה או ברשת ללא אפשרויות זיהוי.

במערכות מוכרות (וגם ישנות) פעולות התקיפה נעשות ע"י סוגי התקפות ישנות/חדשות, כלומר אותם סוגי תקיפות אך עם טריקים והתחכמויות חדשות, ולצד זה ישנם סוגי תקיפות חדשות מול מערכות חדשות, כדוגמת אפליקציות SaaS ושירותי ענן למינהם.

המאמר הנוכחי מתמקד כיצד ניתן להשתמש בקלות רבה בכלי המובנה של RDP בכדי להשיג שליטה בתחנה מסוימת, ומכן ניתן להמשיך אל תנועה רוחבית ברשת, ושוב, כל זאת ללא שום כלי חיצוני – או בקצרה RDP Hijacking.

איך להשיג שליטה ע"י RDP

בתרחיש שלפנינו ישנו שימוש בסשן אדמין בכדי להתחבר לתחנה עם הרשאות גבוהות, ולכן ישנם מספר רכיבים:

  • שרת DC מבוסס Windows Server 2019
  • שרת אפליקציות Windows Server 2019
  • תחנה מבוסס Windows 10 בילד 1909
  • מערכת הגנה Microsoft Defender for Endpoint
  • הכלים שבהם נשתמש הם: Tscon + Psexec + CMD

תיאור התקיפה הוא כזה שבא לנצל סשן של משתמש רגיל מתוך תחנת Windows 10 אשר מחובר באמצעות RDP לשרת מסוים ע"י ניצול של סשן קיים של אדמין מאותה תחנה, וחשוב להדגיש כי ניצול הסשן משתמש בסשן RDP קיים ואינו בא לחשוף את סיסמת האדמין או סיסמת חשבון בעל הרשאות שאותה אנו מנצלים.

הערה: התרחיש הוא להמחשה בסיסית בלבד של אפשרות ניצול סשן RDP עם כלי מובנה, ולצד האפשרות הבסיסיות ישנן אפשרויות מתקדמות יותר

בכדי להשתמש בסשן RDP קיים של חשבון בעל הרשאות נבצע את הפעולות הבאות:

נריץ את ממשק CMD במצב SYSTEM, ולכן נפתח CMD במצב NT AUTHORITY/SYSTEM עם הכלי PSEXEC דרך הפקודה הבאה:
PsExec.exe -s -i cmd.exe

נוודא את המשתמש הקיים באמצעות בדיקת המשתמש המחובר עם הפקודה whoami

איך להשיג שליטה ע"י RDP

נבדוק את המשתמשים המחוברים בשלב זה, ולכן נבצע שאילתה על המשתמשים הקיימים באמצעות הפקודה: query users

במצב שישנם מספר משתמשים מחוברים נקבל את התוצאות הבאות:

  • פרטי סשן אקטיבי של משתמש רגיל
  • פרטי סשן לא אקטיבי של חשבון בעל הרשאות (ישנם מצבים שהסשן יכול להיות אקטיבי)

screenshot_31

לאחר מכן נקח את פרטי הסשן וניצור Service לפי הפרמטרים הבאים:

  • יצירת Service באמצעות הפקודה sc create ושם service
  • פרמטר הפעלה באמצעות נתיב כולל CMD
  • בחירת סשן לא אקטיבי
  • בחירת שם סשן של RDP קיים

נחבר את כולם יחדיו ונריץ את הפקודה הבאה ונוודא שישנה יצירה בצורה תקינה:

sc create MSTSC binpath= "cmd.exe /k tscon 2 /dest:rdp-tcp#66"

screenshot_33

בסיום נפעיל את השירות החדש באמצעות הפקודה net start MSTSC

screenshot_32

לאחר מכן יתבצע לוגין אוטומטי של השרת באמצעות הסשן הלא אקטיבי של החשבון בעל ההרשאות.

טיפ: המשתמש המקומי שאיתו מבצעים את הפעולות חייב להיות משתמש אדמין מקומי, ברוב הארגונים משתמשים מקבלים Local Admin

מה קורה כאשר ישנו Password Less מוטמע בארגון? אין בעיה אפשר לעקוף את מצב שבו ישנו Password Less ולבצע את אותם פעולות רק עם תוספת קטנה ביצירת השירות המקומי.

טיפ: הפקודה הנ"ל מתאימה גם למצבים של גישה פיסית

screenshot_34

איך לבצע אוטומציה להפעולות הפשוטות הנ"ל? בסקריפט קצר (זמין בגיטהאב):

query user
set /p id=Enter ID Number:
set /p sn=Enter Session Name:
set /p an=Enter Any Name of Session (example:MSTSC):
%serv% = sc create %an% binpath= “cmd.exe /k tscon %id% /dest:%sn%”
%se% = net start %an%

זיהוי פעולות

במצבים כאלה של ביצוע פעולות Living off the Land ושימוש עם כלים מובנים אנו עלולים למצוא את עצמנו ללא זיהוי של פעולות מהסוג הנ"ל, ולכן מי שעובד עם מערכות הגנה כדוגמת EDR, למשל, Microsoft Defender for Endpoint יכול לזהות את הפעולה הספציפית הזאת עם התרחיש הנ"ל בצורה מלאה.

בממשק Microsoft Defender for Endpoint נוכל לראות את הזיהוי של המתקפה כולל פעולות ברמת הבורג כולל הפעולה הראשונית שנעשתה בתחנה והיא קשורה אל כלל הפעולות של RDP Hijacking.

לזהוי הפעולות נתחיל בממשק MTP בתצוגת Incidents ונוכל להבחין באינספור פעולות מול אותה תחנה ושימוש מול חשבון בעל הרשאות

זיהוי פעולות

screenshot_37

עדיין בממשק MTP נוכל לקבל פרטים ראשונים על הפעולות שנעשו בתחנה.

אפשר לשיב לב שמקורות המידע שלנו הם Microsoft Defender for Endpoint וכן Azure ATP, והסביה לכך היא שמערכת MDATP זיהתת את הפעולות שנעשו ברמת התחנה, והמערכת של Azure ATP זיהתת חתירה למגע עם חשבון בעל הרשאות שמנוטר.

screenshot_39

screenshot_43

לאחר מכן נמשיך בתחקור באמצעות ממשק Microsoft Defender for Endpoint שם נוכל להתחיל בתחקור ולקבל פרטים ברמת הבורג, כדאי לשים לב לראיות בתהליך, ובנוסף לכך מומלץ לעבוד עם הממשק הרפי בכל לקבל תמונה ראשונית של הבעיה.

screenshot_38

screenshot_40screenshot_41

screenshot_42

טיפ: נוכל לבצע מיטיגציה לפעולה הספציפית הנ"ל או להפריד את התחנה מתוך הרשת בכדי להמשיך תחקורולמנוע פעולות נוספות הקשורות לאותה פעולה או למנוע תנועה רוחבית

איך מונעים בעיות אבטחה של RDP? אחת הדרכים למניעה של בעיות אבטחה מהסוג הנ"ל כאשר ישנם אפשר למנצל סשנים של RDP לחשבונות בעלי הרשאות היא להגדיר ברמת Group Policy את האפשרויות של log off disconnected sessions.

לסיכום, ישנם דרכים רבות לבצע RDP Hijacking דרך כלים מובנים או דרך כלים צד שלישי, המטרה בכלים מובנים היא למנוע זיהוי ולהתחבא מאחורי מערכות הגנה קיימות במטרה לעשות שימוש בכלים קיימים, לנצל חולשות ולעשות נועה רוחבית ברשת הארגונית.

כידוע, פרוטוקול RDP אינו ניחן ביכולות אבטחה מדהימות ומהווה סיכון, ולכן אנו צריכים לעשות כל שביכולתינו למנוע בעיות אבטחה מול RDP, ובמיוחד במצב הנוכחי שבו ישנן תחנות מרחוקות שאינן ניתנות לניהול (כמו ברשת הארגונית) וחשופות לבעיות אבטחה שונות.

You may also like...

1 Response

  1. יועד דביר הגיב:

    יופי של פוסט תודה רבה! 🙂

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *