PracticU

תקיפת שרת קבצים
בדומיין עם NtlmRelayX

בלי כתוביותעם כתוביות
PracticU › קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › תקיפת שרת קבצים בדומיין עם NtlmRelayX
מילון מושגים:
NTLM - פרוטוקול אימות ותיק של מיקרוסופט המבוסס על ערכי האש של סיסמאות, שקדם ל-Kerberos.
חתימה דיגיטלית - מנגנון מבוסס הצפנה שמוכיח את מקור המידע ושלא שונה בדרך, בעזרת המפתח הפרטי של החותם.
SMB - פרוטוקול של Windows לשיתוף קבצים ומדפסות ברשת ולגישה למשאבים מרוחקים.
NetBIOS - ממשק ותיק שמאפשר למחשבים ברשת מקומית לזהות זה את זה לפי שם ולתקשר.
FTP - פרוטוקול להעברת קבצים בין מחשבים ברשת, בין לקוח לשרת.
LDAP - פרוטוקול לגישה ולשאילתה של שירותי מדריך כמו Active Directory, לאיתור וניהול משתמשים ומשאבים.
אדם בתווך - מתקפה שבה גורם עוין מיירט ואולי משנה את התקשורת בין שני צדדים בלי שהם מודעים לכך.
זיוף - התחזות ברשת בעזרת זיוף זהות, כמו כתובת מקור או שולח, כדי להטעות מערכת או משתמש.

תקיפת שרת קבצים
בדומיין עם NtlmRelayX
בשיעור זה אנו מבצעים התקפה אמיתית על רשת דומיין עם דומיין קונטרולר מעודכן, אנטי-וירוסים דלוקים וסיסמת אדמיניסטרטור מורכבת שאינה נמצאת באף מילון. למרות האבטחה הסבירה הזאת, בעזרת התקפת NTLM RelayX אנו משתלטים על הקבצים בשרת הקבצים של הארגון.
נושאי הסיכום המוצגים בשיעור:
1. תנאי הכרחי להתקפה: לפני הכל חייבים לוודא שהיעד אינו דורש חתימה דיגיטלית על הודעות SMB של השיתופים, כיוון שאם החתימה נדרשת, היא בסוף תסגיר את ההתקפה ולא נוכל להעביר הודעות משמאל לימין.
2. סריקת היעדים ב-nmap: משתמשים בסקריפט מיוחד של nmap שבודק על פורט 445, פורט השיתופים, אצל מי הוא פתוח והאם נדרשת בו חתימה דיגיטלית. מוסיפים מתג שמבטל את התלות בפינג, כדי שגם מחשבים עם פינג סגור בחומת האש לא ידולגו, ובמקום לרוץ על כל הרשת מריצים ישירות מול כתובות ידועות. בדומיין קונטרולר נראה פורט 88 של קרברוס, אך מסתבר שה-SMB שלו דורש חתימה, ולכן הוא לא יעד טוב. גם תוכנת CrackMapExec יודעת לבצע את אותה בדיקה.
3. בחירת הקורבן: שרת הקבצים, שהוגדר כולו בברירות המחדל של מיקרוסופט בלי שינויים, מאזין על פורט 445 ואינו דורש חתימה דיגיטלית על הודעות SMB, ולכן הוא הקורבן שנבחר להתקפה.
4. הכנת ה-Responder: בקובץ ההגדרות של Responder מכבים את רכיב ה-SMB שלו, שמופעל כברירת מחדל, כיוון שהתפקיד שלו בהתקפה הזאת הוא רק להביא אלינו לקוחות. ה-Responder מאזין לאירועים ברשת, משיב על שאילתות גילוי שכנים בפרוטוקולים כמו LLMNR ו-NetBIOS Name Service שמתרחשות כשה-DNS לא עונה, ועונה לכולן שהוא היעד המבוקש. הוא גם יודע להתנהג כשרת HTTP, SQL ו-FTP, אך את פורט ה-SMB אנו מפנים לכלי אחר.
5. הפעלת NTLMRelayX: בטאב חדש מריצים את ntlmrelayx מתוך impacket, שאפשר להתקין מ-GitHub או להשתמש בגרסה המובנית ב-Kali. מציינים לו את היעד, שרת הקבצים שבדקנו שאינו חותם, דורשים תמיכה ב-SMB2 ולא ב-SMB1, ומבקשים שברגע שיצליח להתחבר ליעד יפתח לנו עמדת CMD אינטראקטיבית. הכלי יודע לקבל פניות כשרת SMB ו-HTTP, ולגלגל אותן אל SQL, שרתי ווב, LDAP ועוד, כיוון שכל הפרוטוקולים האלה משתמשים ב-NTLM לאימות.
6. פתרון ההתנגשות בפורט 80: NTLMRelayX מדווח על חריגה ב-HTTP, משום שה-Responder תפס את פורט 80. זו בדיוק הסיבה שהוצאנו מה-Responder את ה-SMB, כדי שהפורט שלו יישאר פנוי עבור NTLMRelayX.
7. מכניקת ה-Relay בפועל: הקליינט מתחבר אלינו בחושבו שאנו השרת שחיפש, אנו מגלגלים את הודעות ה-NTLM לשרת האמיתי, מקבלים ממנו challenge ומעבירים אותו לקליינט, הקליינט מצפין את האתגר עם הסיסמה שלו ומחזיר לנו, ואנו מעבירים את התשובה לשרת האמיתי. השרת מאשר שהעימות תקין ומאשר כניסה, אבל ברגע האחרון, במקום הקליינט האמיתי, נכנסים פנימה אנחנו. חשוב להדגיש שה-Responder לא משנה כתובות MAC וזו איננה התקפת Man in the Middle בשיטת זיוף MAC, אלא התחזות מתוחכמת בפרוטוקולי גילוי השכנים.
8. הטריגר של ההתקפה, טעות הקלדה של האדמין: מנהל הרשת ניגש לדומיין קונטרולר וכותב נתיב לשרת הקבצים עם טעות קטנה בשם, בלי מקף. ה-DNS לא מכיר שם כזה, והתחנה צועקת ברשת בפרוטוקול LLMNR מי זה השרת הזה. ה-Responder עונה שהוא היעד, התחנה שמחה שמצאה את ה-IP ומתחברת אלינו, ותהליך ה-LSASS בתחנה עושה במקומה אימות אוטומטי דרך NTLM, שזה בדיוק תפקידו, לספק חווית Single Sign-On. אנו מנצלים את העימות האוטומטי הזה, המנהל לא רואה כלום ולמעשה קיבל הודעה שהשרת לא נמצא, אך ההודעות כבר גולגלו אל שרת הקבצים ואנו נכנסנו בהרשאות האדמיניסטרטור שלו.
9. השליטה בשרת הקבצים: NTLMRelayX פותח לנו במחשב התוקף shell אינטראקטיבי של SMB על פורט מקומי, מתחברים אליו, עושים help לראות את הפקודות, shares לראות את השיתופים, ועם use נכנסים לשיתוף ספציפי. אנו מורידים קובץ בודד אל המחשב המקומי, מורידים את כל הקבצים בשיתוף בעזרת mget, ואפילו מעלים קובץ אל השרת בעזרת put, ורואים אותו מופיע בתיקיית היעד. אנו היינו אדמיניסטרטור בשרת הקבצים עם אנטי-וירוס דלוק, ובלי לפצח אף סיסמה, פשוט גלגלנו הודעות אימות שמאלה וימינה.
10. למה NTLM עדיין חי: ההתקפה עובדת מצוין כי היא אינה תלויה במורכבות הסיסמה והאנטי-וירוס לא תופס אותה, והיא דורשת רק ש-NTLM יהיה פעיל בשרת היעד. מנהלי רשת מפחדים לכבות את NTLM ולהסתמך רק על קרברוס, כי אז לא יהיה אפשר להתחבר לשרת דרך כתובת IP או ממחשב שאינו חבר בדומיין, וההגבלות האלה מרתיעות אותם, ולכן NTLM נשאר מופעל כברירת מחדל בכל השרתים וההתקפה ממשיכה לעבוד. בשיעור הבא נלמד כיצד עוצרים התקפה זאת ומגנים על הרשת.
סיכמנו את מלוא שרשרת התקפת NTLM RelayX על שרת קבצים בדומיין, מהסריקה לגילוי יעד שאינו דורש חתימה, דרך הכנת ה-Responder ו-NTLMRelayX, ועד לטריגר של טעות הקלדה שמנהל הרשת, גניבת הקבצים וההבנה למה NTLM עדיין חי בכל הרשתות. זה הכל, תודה רבה.
בשיעור הבא נעסוק בנושא שליטה על דומיין דרך
שורת פקודה net user.
SR12937HE

פרקי ההרצאה: תקיפת שרת קבצים בדומיין עם NtlmRelayX

  1. 00:00

    התנאים של הרשת המציאותית

  2. 00:37

    בדיקת חתימת SMB עם Nmap

  3. 01:32

    בחירת שרת הקבצים כיעד

  4. 02:28

    הגדרת Responder

  5. 03:24

    סיכום תפקיד ה-Responder

  6. 04:40

    הקמת NtlmRelayX

  7. 05:55

    זרימת ההתקפה

  8. 07:41

    הטעות שחושפת את התחנה

תמלול ההרצאה: תקיפת שרת קבצים בדומיין עם NtlmRelayX

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

  1. 00:02

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

  2. 00:27

    אנחנו על ידי התקפת ntlm relay x נשתלט על הקבצים בפייל סרבר קודם כל אני חייב לבדוק האם אני בכלל מסוגל לבצע את ההתקפה הזאת אם יש חתימה דיגיטלית על הודעות של smb של שיתופים זה לא יעבוד יש סקריפט מיוחד ב-nmap שבודק למי פתוח פורט 445 של שיתופים האם בתוך הפורט הזה חייבים חתימה דיגיטלית או לא אני גם מוסיף מינוס pn כאן כדי לא להיות תלוי בפינג כי אם פינג

  3. 00:58

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

  4. 01:10

    רק במקום להריץ את זה עם כוכבית, וזה ייקח 20 דקות בערך, אני אריץ את זה ישירות מול כתובת IP שאני יודע שהיא כבר קיימת. קודם כל, אני רואה שפורט 88 פתוח בקרברוס, זה אומר שזה דומיין קונטרולר, אבל מה שמעניין אותי זה פורט 445, אני רואה שהוא פתוח, ובתוך ה-445 זה השיתופים, הפרוטוקול של השיתופים,

  5. 01:31

    SMB, דורש חתימה. Signing is enabled and required. ברגע שהחתימה נדרשת, אני לא אוכל לתקוף בשיטת NTLM relay attack, אני לא אוכל להעביר הודעות שמאל לימינה, כי החתימה הדיגיטלית בסוף תסגיר אותי.

  6. 01:47

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

  7. 02:10

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

  8. 02:20

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

  9. 02:32

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

  10. 02:54

    יהיה רק להביא לקוחות אליי אז אחרי שבדקתי ש smb פה באוף דרך אגב ברירת מחדל שהוא באון אני העברתי אותו לאוף אני עושה ctrl x יוצא מכאן ומפעיל את הרספונדר הזה הנה הרספונדר עובד listening for events מחכה לאירועים שיקרו ברשת איזה אירועים יקרו מישהו יצג ברשת מי זה המחשב כזה וכזה בפרוטוקול אלה למנהר פרוטוקול של שכנים ברשת ואז הריספונדר

  11. 03:21

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

  12. 03:44

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

  13. 04:01

    ב-HTTP, ב-SQLית, להיות שרת SQL, שרת FTP של קבצים. אני רק חיביתי לו את ה-SMB, אמרתי לו, SMB, אתה לא עונה. אתה לא תופס את הפורט של SMB סרבר 445, כי אני רוצה שם תוכנה אחרת.

  14. 04:16

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

  15. 04:45

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

  16. 05:02

    אני עושה Enter, והוא מחכה לתקשורת. תסתכלו מה יודע לעשות NTMA ריליי X הזה. הוא יודע להתחבר ל-SQL, הוא יודע לתקוף שרתי ווב, וכמובן את השיתופים הרגילים כי כל הפרוטוקולים האלו משתמשים ב-NTLM לצורך אימות והוא יודע להתחבר לכל אלו אבל כדי להתחבר לכל אלו הוא צריך קודם כל להיות שרת והוא יודע להיות שרת SMB זה שמקבל פניות של לקוחות תמימים לשיתוף

  17. 05:33

    ושרת HTTP בפורט 80 דרך אגב אתם רואים פה למטה HTTP עם exception למה הוא עם exception כי פורט 80 של ל-HTTP, תפס לנו הריספונדר. תסתכלו, הריספונדר פה תפס לנו את פורט 80, אז בגלל שהריספונדר יושב על הפורט הזה, NTLM ריליי X לא יכול לתפוס אותו.

  18. 05:52

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

  19. 06:13

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

  20. 06:28

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

  21. 06:39

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

  22. 07:04

    למנאר בקיצור אני נהיה באמצע ו ntlm relay x מגלגל את ההודעות. טוב, אני רואה שאנחנו מוכנים להתקפה. ריליי איקס פה מוכן לגלגל את ההודעות, הריספונדר פה מוכן לכל קריאה, לכל חיפוש ברשת, ועכשיו מנהל רשת שלנו בא לשרת DC וכותב פה שני סלשים פייל סרבר, והוא עושה טעות קטנה, הוא שוכח מקף, אתם רואים יש פה בשם מקף?

  23. 07:28

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

  24. 07:57

    אותו דרך dns אבל דרך שכנים ברשת הוא גילה את הIP שלו והוא בא להתחבר אליו ועונה לו ntlm relay x ומגלגל את ההודעות שלו ב-SMB ל-133.

  25. 08:11

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

  26. 08:32

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

  27. 09:00

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

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

ההרצאה הקודמת: תפיסה ופריצה של NTLM Hash - עם Responder ו-Wireshark

ההרצאה הבאה: שליטה על דומיין דרך - שורת פקודה net user

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

  • הגדרת שרת קבצים - DFS
  • תקיפת HTA עם Unicorn
  • צד שרת
  • מה זה שרת ?

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

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