PracticU

חטיפת RDP Session
שרת 2022 עם Meterpreter

בלי כתוביותעם כתוביות
PracticU › קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › חטיפת RDP Session שרת 2022 עם Meterpreter
מילון מושגים:
RDP - פרוטוקול של מיקרוסופט לחיבור לשולחן עבודה מרוחק של מחשב Windows והפעלתו מרחוק.
תהליכון - יחידת ביצוע בתוך תהליך, המאפשרת להריץ כמה מהלכים במקביל ולחלוק את אותו זיכרון.
CMD - שורת הפקודה הקלאסית של Windows (Command Prompt), להרצת פקודות ותוכניות בממשק טקסטואלי.
TCP - פרוטוקול תקשורת אמין שמוודא שכל חבילות המידע מגיעות ליעד בשלמות ובסדר הנכון.
Kali Linux - הפצת Linux המיועדת לבדיקות אבטחה וחדירות, הכוללת אוסף כלים לבחינת מערכות.
שרת אינטרנט - תוכנה או מחשב שמקבלים בקשות HTTP ומגישים דפי אינטרנט ומשאבים ללקוחות.
TGT - כרטיס שמנפיק שרת האימות ב-Kerberos, שבעזרתו המשתמש מבקש גישה לשירותים בלי להזדהות שוב בכל פעם.
טוקן - פיסת מידע שמשמשת לאימות או להרשאה, שהמערכת מנפיקה ללקוח ומוצגת בבקשות הבאות במקום סיסמה.

חטיפת RDP Session
שרת 2022 עם Meterpreter
בשיעור זה אנו חוטפים סשן של שולחן עבודה מרוחק, אך בשיטה שונה לגמרי, לא עם tscon שכן חסמו אותו, אלא בעזרת Meterpreter וביצוע הגירת תהליך, ממשתמש אדמיניסטרטור מקומי שיש לו הרשאת Debug אל משתמש דומיין-אדמין.
נושאי הסיכום המוצגים בשיעור:
1. הסצנה והמטרה: בתוך המחשב אנו כמשתמש מקומי בלבד, ואף שברשימת ההרשאות המלאה שלנו מופיע שאנו אדמיניסטרטור, זוהי הרשאה מקומית במחשב אחד בלבד, וניסיון לגשת ל-DC מסתיים בהודעת גישה נדחית. האדמיניסטרטור המקומי הזה, אנחנו כתוקף, רוצים לחטוף סשן של משתמש דומיין-אדמין, המשתמש דיוויד, שהוא חבר בקבוצת Domain Admins, שמתחבר אל השרת או אל תחנת עבודה, ולנצל את היכולות שלו.
2. הסשן הנטוש של הדומיין-אדמין: הדומיין-אדמין מתחבר אל השרת בשולחן עבודה מרוחק, עושה כל מיני פעולות ואף מתנתק עם סימן ה-X, ואנו רואים שהסשן שלו נשאר בזיכרון. ייתכן שהתנתק לרגע בגלל בעיה בתקשורת ועוד רגע יתחבר מחדש, כל התוכנות שלו פתוחות, ואנו רוצים לנצל את הזכות של ה-Debug שלנו ולהיכנס לאחד התהליכים שלו, לאחת התוכנות שפתוחות בזיכרון. בתצוגה המפורטת של מנהל המשימות רואים תוכנות של האדמיניסטרטור, תוכנות של SYSTEM של ה-Windows עצמו לצרכיו הפנימיים, ואת ה-explorer של דיוויד ובנפרד את ה-explorer של האדמיניסטרטור.
3. רקע על תהליכים ו-Threads: בתוך כל תהליך קיימת מקביליות של Threads, כלומר בתוך תהליך אחד יכולים לרוץ קטעי קוד רבים במקביל, ואנו רוצים לפתוח עוד Thread נוסף בתוך אותו מרחב זיכרון ולהריץ בו את ה-CMD שלנו. ה-explorer למשל מחולק לכמה עשרות קטעי קוד שרצים במקביל, ומה שמשותף להם הוא אותו אזור זיכרון ואותם משתנים, וזהו בעצם התהליך. תפקיד התהליך הוא לבודד את המשתנים בזיכרון של כל תוכנה מתוכנה אחרת, כך שתוכנה אחת לא תוכל לגשת לזיכרון של תוכנה אחרת. כל ה-Threads האלה נועדו גם לתת מענה לריבוי המעבדים, שכן אילו כל הקוד היה ב-Thread אחד ברצף אחד, כל התוכנה הייתה יושבת על מעבד פיזי אחד. אנו נכניס עוד תהליך של CMD שירוץ עם הזכויות וההרשאות של דיוויד.
4. יצירת ה-payload והעברתו: מייצרים פיילוט ל-Meterpreter, ה-CMD המשוכלל, שיתחבר ב-Reversal TCP חזרה אל ה-Kali, כיוון שפעמים רבות קשה להתחבר אל הקורבן כי החומת אש חוסמת, ולכן הקורבן מתחבר אלינו. מפעילים שרת ווב, הולכים למחשב הקורבן ומושכים את ה-payload הזדוני בעזרת PowerShell מתיקיית ההורדות עם פקודת הבקשה מהאינטרנט, מורידים אותו ומפעילים אותו עם הרשאות של Run as Administrator, כיוון שאיננו רוצים כעת להתעסק בהעלאת הרשאות, ויש הרצאות נפרדות על העלאת הרשאות מיוזר פשוט לאדמיניסטרטור. אילו היינו פותחים אותו רגיל, לא הייתה לנו זכות ה-Debug.
5. הקמת המאזין ב-Meterpreter: מפעילים את מסגרת התקיפה במצב שקט, עם רצף פקודות שמבוצע מיד בכניסה, כדי שלא נצטרך להקליד כל פקודה בנפרד, וזה בעצם הכניסה אל ה-handler, הפעלת המאזין הרב-תפקודי שיחכה לפיילוד המתאים. אפשר לראות בהגדרות המתקדמות אפשרות חשובה שנקראת Exit on Session, השאלה האם לצאת ברגע שיש חיבור ראשון. אם מבטלים אותה, המאזין לא יצא אחרי שהקורבן הראשון מתחבר אלא ימשיך להמתין לעוד קורבנות ועוד חיבורים. כדי להרוג את המאזין הקיים משתמשים בפקודה ייעודית, מגדירים שהיציאה עם הסשן הראשון אינה רצויה, ומריצים את המאזין שוב ברקע. אחר כך נפתח סשן ראשון, הקורבן התחבר, והמאזין ברקע עדיין ממשיך להמתין לחיבורים נוספים.
6. הזיהוי בסשן: נכנסים לסשן, בודקים את מזהה המשתמש ורואים שאנו אדמיניסטרטור מקומי, כיוון שהרצנו את הפיילוד תחת הרשאות האדמיניסטרטור, ובודקים את מזהה התהליך ורואים שאנחנו תהליך מסוים בזיכרון.
7. המיגרציה אל התהליך של דיוויד: רוצים לעבור אל ה-explorer של דיוויד, מספר 5656 בהדגמה. קודם אפשר להריץ ב-Meterpreter את פקודת התהליכים ולראות את כל התהליכים, שזה כמו מנהל המשימות שראינו, והכל בזכות היכולות של Meterpreter, והנה מזוהה ה-explorer של דיוויד. אפשר גם לעבור ל-CMD הפשוט ולהריץ שם פקודות, אך מעדיפים לעבוד עם Meterpreter כי נוח יותר. מבצעים מיגרציה מהתהליך שלנו אל התהליך של דיוויד, וזה מצליח לנו בגלל זכות ה-Debug שהייתה לנו.
8. התוצאה, דומיין-אדמין בפועל: אחרי המיגרציה בודקים את מזהה המשתמש ומגלים שאנחנו עכשיו דיוויד, דומיין-אדמין, אדמיניסטרטור של כל הרשת. ב-CMD עושים תצוגת רשת על ה-DC, שקודם לא עבד, ופתאום זה עובד, ואחרי הפעולה מתקבלים ב-klist טיקטים של קרברוס, ורואים שאנו יושבים עם ה-TGT של דיוויד, של דומיין-אדמין.
9. השלמת ההשתלטות: מריצים פקודת משתמשים ומוסיפים משתמש חדש ל-Active Directory אל ה-DC, ורואים בממשק הגרפי אחרי ריענון שהמשתמש החדש מופיע. כרגע הוא משתמש פשוט שנמצא רק בקבוצת Domain Users, ואז מריצים את הפקודה שהופכת את המשתמש החדש לדומיין-אדמין, ועכשיו אנחנו כבר לא משתמש מקומי, יש לנו פתאום דומיין-אדמין בכל הארגון.
10. הסבר מה קרה וכיצד מונעים: היינו משתמש פשוט, אדמיניסטרטור מקומי, שמוזכר שאינו יכול להיכנס לשום משאב ברשת, אינו מצליח לראות את ה-DC, ואם ינסה להתחבר אליו או לכל משאב אחר ברשת יידרש להזין שם וסיסמה שאין לנו. הפעלנו עם הרשאות האדמיניסטרטור את ה-payload הזדוני, ביצענו הגירת תהליך אל דיוויד, וברגע שהיינו בתוך דיוויד הרצנו פקודה שמתחברת למשאב ברשת, וה-Windows מאחורי הקלעים עשה את כל חלק הקרברוס וקיבל עבורנו את ה-TGT של דיוויד, כאילו אנו רצים במרחב הזיכרון שלו עם ההקשר האבטחתי שלו, שהוא בעצם שם המשתמש שלו. זה כל הקטע של התהליך, אילו משתנים בזיכרון נגישים לכל ה-Threads ולכל הקודים, וגם עם אילו הרשאות רץ הקוד שלנו, עם איזה הקשר אבטחתי ועם איזה טוקן הוא רץ, כל התהליך רץ עם הרשאות של דיוויד. וברגע שעשינו זאת, יכלנו ליצור לעצמנו משתמשים ב-Active Directory ולצרף אותם לקבוצת דומיין-אדמין, שזה כולה שתי פקודות. כאילו חטפנו את הסשן. כיצד מונעים דבר כזה? צריך לקבוע שכשהדומיין-אדמין מתנתק, אם תוך דקה הוא לא מתחבר מחדש, מתבצע לוגאוף, מעיפים אותו וסוגרים לו את כל מה שיש לו בזיכרון, כלומר מאפשרים לניתוק כזה להישאר בזיכרון רק לדקה, כי אם זה באמת ניתוק אמיתי, תוך דקה מנהל הרשת אמור לחזור ולהתחבר, ואם תוך דקה הוא לא מתחבר מתבצע יציאה. אבל זה מסוכן, כיוון שכל התוכנות שלו נסגרות, כפי שרואים בהדגמה שביצוע יציאה סוגר הכול והסשן שלנו מת ונעלם מרשימת הסשנים, אף על פי שיש מאזין שממתין לחיבורים חדשים. כך אפשר לגנוב את הסשן, שבעצם נקרא הגירת תהליך אל סשן קיים של משתמש אחר.
סיכמנו את חטיפת הסשן בשיטת הגירת התהליך, מהסצנה של האדמיניסטרטור המקומי עם זכות ה-Debug, דרך יצירת ה-payload, הקמת המאזין עם ההגדרות המתקדמות, המיגרציה אל התהליך של הדומיין-אדמין, ועד ליצירת משתמש דומיין-אדמין חדש וההמלצה להגביל את זמן שהיית הסשנים המנותקים בזיכרון. זה הכל, תודה רבה.
SR13000HE

פרקי ההרצאה: חטיפת RDP Session שרת 2022 עם Meterpreter

  1. 00:00

    השיטה החדשה להשתלטות

  2. 00:55

    הרשאות ה-Domain Admin

  3. 01:29

    הפעילות של המנהל בשרת

  4. 02:07

    הכרת מבנה ה-Process

  5. 03:02

    תהליכים במקביל בתוכנה

  6. 04:18

    הכנת ה-Payload להעברה

  7. 05:29

    ההרצה עם הרשאות אדמין

  8. 07:00

    קבלת הסשן והשליטה

תמלול ההרצאה: חטיפת RDP Session שרת 2022 עם Meterpreter

הטקסט המלא של הדקות הראשונות בהרצאה «חטיפת RDP Session שרת 2022 עם Meterpreter» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם היום בהרצאה אנחנו נחטוף סשן של rdp אבל בשיטה שונה לגמרי לא עם tscon כי tscon חסמו אותו אז אנחנו נשתמש ב msfenum במטרפריטר ונבצע פרוצס מיגריישן הגירה מיוזר אדמיניסטרטור מקומי שיש לו הרשאות של דיבאג תסתכלו אם אני אעשה cnd ויעשה whoami/all אני אראה את כל הפריבילגיות שלי שיש לי על המערכת ואחד מהם זה דיבאג ודרך

  2. 00:27

    הדיבאג הזה אני אכנס לפרוצס של אדמיניסטרטור של כל הדומיין של דומיין אדמין ואריץ שמה בפנים cmd זאת אומרת יש לי נניח יוזר בשם דיוויד אתם יכולים לראות שהוא חבר בדומיין אדמינס והמטרה שלי לגנוב את היכולות שלו כי אני כרגע פה בתוך המחשב הזה כיוזר מקומי בלבד זאת אומרת אם נעלה למעלה ב-who am I slash all אתם תראו שאני

  3. 01:03

    אדמיניסטרטור אבל רק בתוך מחשב אחד זאת אומרת אם אני עושה נניח נה את view נניח על dc access is denied אז יש לנו פה אדמיניסטרטור מקומי שיושב על התחנה ואני כאקר האדמיניסטרטור הזה ואני רוצה לחטוף סשן של domain admin של דיוויד שהוא חבר בקבוצת domain admins ודייוויד הזה מתחבר לשרת או לתחנת עבודה זה יכול להיות גם Windows 10, 11, 12, זה

  4. 01:28

    לא משנה. ואני כמנהל רשת מתחבר לתחנה הזאת עם דיוויד. הנה אפשר לראות שדייוויד הוא על שרת 2022, זה החלון של רימור דסקטופ שלו. נניח הוא עשה כל מיני דברים ואפילו התנתק עם X, ואני רואה את כל זה כאן.

  5. 01:45

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

  6. 01:55

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

  7. 02:22

    אדמיניסטרטור אני אני רוצה לנצל את הזכות דיבק שלי לכל תוכנה שקיימת במחשב להיכנס פנימה נניח לתוך האקספלואור של דייוויד ובפנים בתוך הפרוצס להריץ Thread קוד של CMD שלי שימו לב בתוך כל פרוצס יש Threading זאת אומרת בתוך פרוצס אחד יכולים להיות כמה מיני תוכנות במקביל כמה תהליכים במקביל ואני רוצה לפתוח עוד Thread עוד קוד אחד במקביל באותו מרחב זיכרון של

  8. 02:54

    כרגע יש לו, שימו לב, 38 Threadים במקביל. אני רוצה לפתוח עוד Thread 139 ובפנים להריץ את ה-CMD שלי. זאת אומרת, תוכנת Explorer מחולקת ל-39 תוכנות קטנות בפנים שרצות במקביל, ומה שמשותף להם זה אותו אזור זיכרון, אותם משתנים שיושבים בזיכרון, וזה למעשה ה-Process שלנו.

  9. 03:19

    והמטרה של Process זה לבודד משתנים בזיכרון, את כל הקוד של התוכנה מתוכנה אחת לשנייה, זאת אומרת אקספלואואר הזה לא יכול פתאום לגשת לזיכרון של איזושהי תוכנה אחרת.

  10. 03:31

    בקיצור, התוכנה עצמה עם כל הזיכרון שלה ועם כל המשתנים שלה בפועל מחולקת ל-32 קטעי קוד שרצים במקביל.

  11. 03:40

    יכולים להיות גם 5 קטעי קוד ואני יכול גם להוסיף Thread במקביל. כל ה-Threadים האלו נועדו כדי לתת פתרון לריבוי מעבדים ואם הייתי עושה את כל הקוד ב-Thread אחד, רצף אחד אז כל התוכנה הייתה יושבת על מעבד אחד פיזי בקיצור אנחנו הולכים להכניס לפה עוד תהליך אחד של CMD

  12. 04:01

    והתהליך הזה ירוץ עם הזכויות ועם ההרשאות של דייוויד טוב בואו נתחיל דבר ראשון אנחנו רוצים פה לייצר את הפיילואוד אנחנו מייצרים את הפיילואוד למטרפריטר שזה ה-CMD המשוכלל שיתחבר ברוורס TCP חזרה לקאלי זאת אומרת הקורבן יתחבר אליי כי הרבה פעמים קשה לי להתחבר לקורבן כי פיירול חוסם אותי, אז הקורבן מתחבר אליי.

  13. 04:27

    אני מפעיל שרת Web, הולך למחשב של הקורבן ומושך את ה-payload הזדוני. אני כותב PowerShell, פותח PowerShell בתיקיית דאונלודס ועושה Invoke Web Request ומוריד את ה-payload.

  14. 04:43

    הורדתי את ה-payload, הנה הוא פה, קובץ זדוני, ומפעיל אותו עם הרשאות של Run as Administrator, כי אני לא רוצה עכשיו להתעסק בהעלאת הרשאות אם הייתי עושה open לא הייתה לי זכות של דיבאג אני לא רוצה עכשיו להתעסק איך אני עולה מיוזר

  15. 04:58

    פשוט ליוזר של אדמיניסטרטור אני ישר מריץ את זה עם הרשאות של אדמיניסטרטור יש לנו הרצאות נפרדות על privilege escalation על העלאת הרשאות מיוזר פשוט לאדמיניסטרטור בקיצור הפעלתי אותו אנחנו יכולים לראות פה בתסק מנאג'ר שהתהליך שלו רץ ודרך אגב בתוך התהליך הזה יש שני threadים שני קטעי קוד

  16. 05:17

    במקביל אולי אחד מתחבר והשני עושה משהו אחר צריך לראות איך התוכנה בנויה איפה הוא נעלם לי התוכנה יצאה הוא ראה שהוא לא מצליח להתחבר והוא יצא סיים את התהליך עוד מעט נפעיל אותו שוב בואו נקבל כאן את המאזין למטרפריטר שהקורבן יתחבר אליי אני צריך מאזין אז אני מפעיל msf console מינוס q שזה בלי הלוגו של הכניסה מינוס x ורצף של פקודות שהוא יבצע בפנים איך שהוא ייכנס

  17. 05:48

    אני לא אצטרך להקליט כל פקודה בנפרד, הבאתי לו ישר במעמד הכניסה את כל הפקודות שאני צריך. שזה למעשה להיכנס להנדלר, להפעיל את המאזין מולטי-הנדלר שיחכה לפיילואוד כזה וכזה.

  18. 06:01

    שימו לב, אם אני ארשום פה Advanced, אני אראה איזושהי אופציה מאוד חשובה שנקראת Exit on Session, האם לצאת איך שיש חיבור ראשון. אם אני אבטל את הדבר הזה, הוא לא יצא אחרי שהקורבן הראשון יתחבר, הוא יחכה לעוד קורבן ועוד קורבן, ימשיך עם הג'וב הזה כרגע ברירת מחדל שאיך שהקורבן הראשון מתחבר הוא ישר עושה אקזיט אז תדעו שבאדוונסט יש

  19. 06:26

    אפשרות לכתוב אקזיט און סשן פולס ואז הוא לא יצא אחרי שהקורבן מתחבר הוא יחכה לעוד קורבן עוד אתם רואים יש פה ג'וב שרץ ברקע ומחכה לחיבור אם אני אעשה ג'וב מינוס k אני אהרוג את הג'וב הזה שלא יאזין אני אעשה סט אקזיט און סשן פולס ואריץ עוד פעם ג'וב run-j לרוץ ברקע אתם

  20. 06:48

    תראו שהג'וב הזה לא יסתיים אחרי החיבור הראשון בוא נוסיף את זה לפקודות שלנו כי נראה לי שזה יותר טוב ככה כרגע אין לנו אף אחד שמחובר ויש המתנה לחיבורים טוב בואו נריץ את זה ויש לנו פה סשן אחד שנפתח אתם רואים יש לנו בסשנס לקוח אחד קורבן ראשון שהתחבר ובג'ובים עדיין הוא ממשיך להזין לעוד קורבנות לעוד חיבורים אז כרגע יש לנו פה שליטה

  21. 07:15

    על הקורבן יש לנו סשן מול הקורבן בואו ניכנס לסשן הזה get uid נראה שאנחנו אדמיניסטרטור מיקומי כי הרצנו את זה תחת הרשאות של אדמיניסטרטור get pid get process id נראה שאנחנו פרוצס 2016 ובואו נעשה migrate רצינו לעבור לאקספלואור של דיוויד 5656 קודם כל אני יכול להריץ ps ולראות את כל הפרוצסים שזה כמו הטאסק מנאג'ר שראינו וזה הכל בזכות היכולות של מטרפריט

  22. 07:46

    כל הפקודות האלו. אני לא ב-CMD הרגיל, אני ב-CMD החכם של מטר פריטר, שיש לו פקודות כמו PS. והנה 5656, אקספלואור של דיוויד. ככה האקר רואה את זה. דרך אגב, יכלתי לעשות של ולעבור ל-CMD הפשוט, וגם להריץ את הפקודות של ה-CMD הפשוט.

  23. 08:05

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

לקורס המלא: מבדקי חדירה ל‑Active Directory

ההרצאה הקודמת: חטיפת RDP Session - שרת 2022 עם tscon

ההרצאה הבאה: פריצה בכח ל-RDP בדומיין - עם Brute Force - Hydra

הרצאות קשורות מקורסים אחרים

  • Session object - חלק 1
  • Disassembly Meterpreter
  • צד שרת
  • מה זה שרת ?

קורסים נוספים במסלול

  • קורס SOC - מיישם הגנת סייבר
  • קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting