PracticU

העלאת הרשאות
עקיפה של UAC

בלי כתוביותעם כתוביות
PracticU › קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › העלאת הרשאות עקיפה של UAC
מילון מושגים:
UAC - מנגנון ב-Windows שמבקש אישור לפני פעולות הדורשות הרשאות ניהול, כדי למנוע שינויים לא מורשים.
חשבון משתמש - זהות במערכת שמורכבת משם משתמש והרשאות, ומאפשרת למשתמש להתחבר ולפעול.
CMD - שורת הפקודה הקלאסית של Windows (Command Prompt), להרצת פקודות ותוכניות בממשק טקסטואלי.
TGT - כרטיס שמנפיק שרת האימות ב-Kerberos, שבעזרתו המשתמש מבקש גישה לשירותים בלי להזדהות שוב בכל פעם.
דומיין קונטרולר - שרת בדומיין של Active Directory שמאמת משתמשים ואוכף מדיניות והרשאות ברשת הארגונית.
משתנה סביבה - ערך בעל שם שמוגדר במערכת ההפעלה ומשמש תוכנות להגדרות, כמו נתיבים או מפתחות תצורה.
SMB - פרוטוקול של Windows לשיתוף קבצים ומדפסות ברשת ולגישה למשאבים מרוחקים.
האש - פונקציה שממירה מידע לערך קצר באורך קבוע. שינוי קטן בקלט משנה את התוצאה, והיא חד-כיוונית.

העלאת הרשאות
עקיפה של UAC
בשיעור זה אנו לומדים כיצד לעקוף את ה-UAC, ה-User Account Control. אנו נמצאים בתוך CMD רגיל שנשלט על ידי התוקף, המשתמש עצמו חבר בקבוצת האדמיניסטרטורים של התחנה, אך ה-payload שלנו הורץ בלי הרשאות אדמין ולכן כל ניסיון לבצע פעולת אדמין מקבל הודעת גישה נדחתה.
נושאי הסיכום המוצגים בשיעור:
1. מהו ה-UAC: מנגנון ההגנה שמאלץ אישור ידני בכל פעם שתוכנה רוצה לרוץ כאדמיניסטרטור. כשהמשתמש עצמו מריץ פקודה עם run as administrator, הוא מקבל התראה, מאשר אותה, והפעולה עוברת, למשל יצירת משתמש חדש בתחנה. אבל ה-payload של התוקף נפתח בלי אישור כזה, ולכן נתקע ברמת הרשאה Medium.
2. בדיקת רמת ההרשאה: הפקודה whoami עם מתג ההצגה המלאה מציגה את רמת ה-integrity של התהליך. ב-CMD הרגיל מופיע Medium Mandatory Level, ובעת הרצה כאדמיניסטרטור מופיע High Mandatory Level. העלאת ההרשאות פירושה לעבור מ-Medium ל-High.
3. הרעיון של העקיפה: משתמשים בכלי כמו Kekeo שיודע לבקש TGT מסוג Delegation. כל משתמש רשאי לקבל טיקט כזה, זהו מנגנון לגיטימי וחוקי של Active Directory, ה-Unconstrained Delegation, שבו משתמש או שרת מעבירים את ה-TGT שלהם לשרת אחר כדי שזה יזדהה בשמם, למשל כשהמשתמש בבית ואין לו חיבור ישיר למסד הנתונים ושרת מתווך מביא עבורו את הנתונים.
4. העברת ה-TGT אל התוקף: התוקף מקבל את קובץ ה-TGT מהתחנה הנפרצת, ולפני שמתחילים לעבוד דואגים לתקינות ה-DNS, בין אם בעזרת הוספת רשומות לקובץ hosts ובין אם בכך שמגדירים את הדומיין קונטרולר, שהוא גם שרת ה-DNS של הארגון, כשרת ה-DNS של התוקף בקובץ resolv.conf, ומאמתים בפינג לפי שם.
5. המרת פורמט ה-TGT: כלי impacket עובדים עם פורמט שונה מזה של קרברוס, ולכן מבצעים המרה של קובץ ה-kirbi לפורמט ccache. חשוב לזכור שבתוך הקובץ יושבים לא רק ה-TGT אלא גם ה-Session Key, שהוא בעצם הסוד שמזהה אותנו מול השרת.
6. משתנה הסביבה KRB5CCNAME: מכניסים את קובץ ה-ccache למשתנה סביבה, משום שכלי impacket שולפים ממנו את ה-TGT. מאמתים עם echo שהמשתנה אכן מכיל את הקובץ, ומוסבר שמנגנון משתני הסביבה זהה בין לינוקס ל-Windows, למשל PATH שמגדיר איפה מחפשים קבצי הרצה.
7. הרצת psexec מרחוק: לפני ההרצה מוודאים שבתחנה פעילים שיתופים, למשל על ידי גישה לשיתוף הניהולי של כונן C דרך SMB, ובמידת הצורך בודקים בהגדרות הרשת שאין אזהרה על כיבוי שיתופים. אחר כך מריצים את psexec מתוך impacket, שקיים גם ככל Sysinternals של מיקרוסופט, עם שם הדומיין, שם המשתמש ושם התחנה, ובמתג שמציין שימוש בקרברוס בלי סיסמה. הכלי מזדהה עם ה-TGT שבמשתנה הסביבה ומקבל עמדה על התחנה.
8. התוצאה, SYSTEM ובלי UAC: מבצעים whoami ומגלים שמתוך היותנו משתמש פשוט הפכנו ל-SYSTEM, שהוא מעל אדמיניסטרטור. פקודות שנחסמו קודם עם הודעת גישה נדחתה עוברות כעת בהצלחה, ואפשר ליצור ולמחוק משתמשים מקומיים. הסיבה היא ש-UAC לא תופס בכלל על חיבורים מרחוק של אדמיניסטרטורים מקומיים, מיקרוסופט עשו זאת בכוונה כדי שמנהלי רשת יוכלו לנהל תחנות מרחוק, והיתרון הזה מנוצל כאן לעקיפה מוחלטת של ה-UAC.
9. הגבול וההמשך: אין בידינו זכות ליצור משתמש בדומיין כולו, כיוון שמול ה-Active Directory אנו מזוהים רק כחשבון המחשב עצמו ולא כחשבון משתמש, שכן ההרשאות שלנו מקומיות בלבד. אבל המטרה שהוצבה הושגה, אנו אדמיניסטרטור מקומיים על התחנה. מכאן אפשר להמשיך הלאה, למשל להמתין שאדמיניסטרטור של כל הרשת יתחבר לתחנה ולחלץ את ה-hash שלו מתוך ה-LSASS באמצעות dump, אם ה-LSASS אינו מוגן, אם כי ב-Windows החדשים נוספו הגנות על ה-LSASS שמקשות זאת.
סיכמנו כיצד תוקף שנמצא בתחנה עם הרשאות משתמש פשוט מעלה את עצמו לאדמיניסטרטור מקומי, באמצעות קבלת TGT של Delegation ממשתמש שהוא אדמין, המרתו לפורמט ccache, הכנסתו למשתנה סביבה והתחברות מרחוק עם psexec, תוך ניצול העובדה ש-UAC אינו חל על התחברויות מרחוק של אדמיניסטרטורים מקומיים. זה הכל, תודה רבה.
SR12950HE

פרקי ההרצאה: העלאת הרשאות עקיפה של UAC

  1. 00:00

    הכרת מנגנון ה-UAC

  2. 00:55

    המצב של ה-CMD הרגיל

  3. 01:47

    בקשת טיקט האצלה

  4. 02:23

    היתרונות של ה-Delegation

  5. 03:00

    העברת הטיקט למחשב התוקף

  6. 03:53

    המרת הטיקט לפורמט Impacket

תמלול ההרצאה: העלאת הרשאות עקיפה של UAC

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

  1. 00:02

    שלום לכולם, בהרצאה הזו נראה איך לעקוף User Account Control UAC זאת אומרת, אנחנו נמצאים בתוך CMD רגיל ואנחנו לא יכולים להריץ פקודות של אדמיניסטרטור כמו להוסיף יוזר חדש ל-Windows הזה Access is denied למרות שאנחנו בקבוצת אדמיניסטרטורים זאת אומרת, בגרופס כאן, באדמיניסטרטורס דיוויד, היוזר הנוכחי שלי,

  2. 00:26

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

  3. 00:48

    אחרת run as אדמיניסטרטור הוא מקבל התראה כזאת והוא צריך לאשר את זה זה נקרא user account control אחרי שהוא מאשר את זה, הפקודה כן עובדת כי אני כן אדמיניסטרטור ונוצר לי פה יוזר חדש נעשה refresh ונראה שיש user pt1, pt זה penetration test, בדיקת חדירות אז ליוזר הנוכחי שלי כן מותר להריץ פקודות של אדמיניסטרטורה לתחנה

  4. 01:13

    אבל הוא הריץ את ה-CMD שלי, את התוכנה הזדונית שלי, את ה-payload שלי, בלי הרשאות של אדמיניסטרטור עכשיו השאלה איך אני מעלה לעצמי הרשאות כשאני יושב פה בתוך ה-CMD הזה בלי הרשאות דרך אגב פקודת whoami/all תראה לי פה שרמת ההרשאות שלי זה מדיום ואם הייתי בrun as

  5. 01:35

    administrator והייתי עושה whoami/all בתוך אותם גרופס קבוצות שאני חבר בהם היה כתוב למטה בשורה האחרונה high mandatory level זאת המטרה שלי טוב אז מה עושים אז אני לוקח מוריד קקאו או כל תוכנה אחרת שיודעת לבקש tgt לדיליגיישן ומריץ את הקקאו הזה שימו לב לפני שאני מריץ אותו אני עוד פעם מדגים לכם שכרגע אני נמצא ב-CMD עם רמת מדיום

  6. 02:03

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

  7. 02:25

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

  8. 02:51

    הנתונים מהמקור ההוא ואני צריך להביא לו את ה-TGT שלי. זה נקרא Unconstrained Delegation. אז אני לוקח את ה-TGT הזה, ואני מעביר אותו למחשב של אקר.

  9. 03:03

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

  10. 03:17

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

  11. 03:26

    אני לקובץ resolve.conf הוספתי את השרת dc שיהיה שרת ה-DNS שלי, כי דומיין קונטרולר הוא גם ה-DNS. עכשיו אין לי בעיה של שמות, אני יכול לעשות פינג לפי שם איך שבא לי.

  12. 03:38

    אז מה אנחנו עושים? דבר ראשון אנחנו עושים קונברט. אנחנו הופכים את קובץ קירבי לפורמט אחר, לפורמט שנקרא cc-cash, כי הכלים של אימפאקט עובדים עם קובץ TGT בפורמט טיפה שונה.

  13. 03:53

    חשוב לציין שחוץ מ-TGT יש שם גם את ה-Session Key, את הסיסמה מול השרת. היא גם יושבת בתוך הקובץ Kirby.

  14. 04:02

    עכשיו אני לוקח את הקובץ CC-Cash הזה, אני מכניס אותו למשתנה סביבה, לזיכרון, כי הכלים של אימפאקט הולכים להשתמש במשתנה הסביבה הזה כדי לשלוף משם את קובץ ה-TGT. אני יכול לראות שזה אכן תפס.

  15. 04:17

    אני עושה אקו ושם של משתנה סביבה והוא מדפיס לי שבאמת במשתנה סביבה כזה יושב הקובץ הזה אפשר גם להדפיס את כל משתנה הסביבה לעשות פקודת

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

ההרצאה הקודמת: הגנה על AD עם קבוצת - Protected Users

ההרצאה הבאה: הסבר על Kerberos - Unconstrained Delegation

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

  • הסבר על UAC
  • מעבר למצב Administrator או UAC
  • הרשאות על קבצים - חלק 1
  • עקיפה של זיהוי ROOT ב-UnCrackable3

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

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