PracticU

יצירת Reverse Shell על ידי Powershell - חלק 1

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › יצירת Reverse Shell על ידי Powershell - חלק 1
מילון מושגים:
מעטפת - תוכנה שמפרשת פקודות של המשתמש ומעבירה אותן למערכת ההפעלה, למשל Bash או PowerShell.
PowerShell - סביבת שורת פקודה ושפת סקריפטים של מיקרוסופט לניהול אוטומטי של מערכות Windows ושירותים.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
אנטי וירוס - תוכנה שמזהה, חוסמת ומסירה תוכנות זדוניות מהמחשב, ומנטרת פעילות חשודה.
וירוס - תוכנה זדונית שמשכפלת את עצמה ומתפשטת ממחשב למחשב, ועלולה לפגוע בקבצים או בפעולת המערכת.
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).

יצירת Reverse Shell על ידי Powershell - חלק 1
הרצאה זו עוסקת בתקיפה (בניית ערוץ שליטה מרחוק שלא מצריך התקנת קובץ על מחשב הקורבן), ולכן הסיכום כאן נשאר במישור העקרוני בלבד, בלי רצף פקודות לביצוע.
הרעיון המרכזי
המרצה מציג עקרון שלפיו אפשר לפתוח ערוץ שליטה מרחוק על מחשב Windows באמצעות סביבת סקריפטים מובנית במערכת ההפעלה עצמה, בלי להעתיק לקורבן שום תוכנה או קובץ חדש. מכיוון שתוכנות אנטי-וירוס רבות מתבססות על בדיקת קבצים חדשים שנכתבים לדיסק, גישה שלא כותבת קובץ קשה יותר לזהות בשיטה הזו.
למה זה מעניין
ההדגמה מראה שאפשר לנצל פקודה אחת בסביבת סקריפטים נפוצה כדי לפתוח חיבור רשת חזרה לתוקף, להעביר דרכו פקודות ותשובות, ולדמות סביבת עבודה רגילה, הכול בלי קובץ זדוני נפרד על הדיסק. זו הדגמה של עקרון כללי חשוב בתחום ההגנה: הסתמכות על חסימת קבצים לא מספיקה כנגד שימוש לרעה בכלים לגיטימיים שכבר קיימים במערכת.
ההרצאה ממשיכה בחלק הבא, שבו מראים איך לדחוס את העיקרון הזה לפקודה אחת שניתן להריץ בלי לפתוח סקריפט.
אחרי הצפייה תוכלו להסביר מה ההבדל בין תקיפה שמעתיקה קובץ זדוני למחשב הקורבן לבין תקיפה שמשתמשת רק בכלים שכבר קיימים במערכת, ולמה ההבדל הזה מקשה על גילוי בעזרת אנטי-וירוס.
השיעור הבא בקורס: יצירת Reverse Shell על ידי Powershell - חלק 2

פרקי ההרצאה: יצירת Reverse Shell על ידי Powershell - חלק 1

  1. 00:00

    שימוש ב-PowerShell המובנה

  2. 00:38

    מדיניות Execution Policy מוגבלת

  3. 01:13

    הקמת מאזין בצד Kali

  4. 02:44

    פתיחת סוקט עם TCP Client

  5. 03:41

    קיצור דרך עם GetStream

  6. 05:28

    הבנת לולאת foreach והאופרטור אחוז

  7. 07:02

    יצירת מערך בייטים ריק

  8. 07:56

    קריאת נתונים מהרשת עם Stream Read

תמלול ההרצאה: יצירת Reverse Shell על ידי Powershell - חלק 1

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

  1. 00:02

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

  2. 00:33

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

  3. 00:47

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

  4. 00:59

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

  5. 01:15

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

  6. 01:27

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

  7. 01:54

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

  8. 02:15

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

  9. 02:35

    לכם מה זה עושה יש לנו פה את קאלי בואו נבדוק את ה-IP שלה נעשה פייל ניו טאב טאב חדש יש לנו פה טאב חדש ifconfig מראה לנו שה-IP זה 122-153 יפה מאוד לכאן הוא צריך להתחבר יופי ואנחנו מחכים לחיבור שלו אז הדבר הראשון שקורה בסקריפט שלנו זה פותחים סוקט פותחים קונקט חיבור ל-IP של קאלי בפורט 443. שימו לב, אני פותח פה חיבור על ידי TCP Client.

  10. 03:06

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

  11. 03:21

    הרצנו רק את הפקודה הזאת ועכשיו Dollar Client שלנו זה משתנה שמכיל ומצביע לחיבור אתם רואים דולר קליינט מצביע על חיבור הוא במצב קונקטד והוא יכול לקבל 65 אלף בתים של מידע ויש לנו פה חיבור מוכן שמחכה בוא נראה מה קרה בקאלי אחרי שהרצנו פקודה אחת קונקטד הנה מישהו התחבר מישהו מחובר

  12. 03:47

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

  13. 04:13

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

  14. 04:35

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

  15. 05:04

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

  16. 05:32

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

  17. 06:00

    נניח 5, יצא לנו מספרים 0 עד 5, נעשה 0 עד 7, יצא לנו 7 מספרים. עכשיו אנחנו לוקחים את המספרים האלו ומשרשרים אותם לפקודה אחרת, אני יכול לשרשר אותם לאיזה פקודה שבא לי, לדוגמה לפקודת 4Each, תיקח כל אחד שיגיע ותחבר אותו בעצמו, אתם רואים מה קרה פה?

  18. 06:22

    הוא לקח כל אחד מהמספרים 0 עד 7 וחיבר אותו פעמיים. אני יכול לעשות לו גם כפול פה ואז יצא לי כמו חזקה 2.

  19. 06:30

    אתם רואים? זה כל מספר 1 עד 7 כפול עצמו. עכשיו במקום לכתוב מילת for each אני יכול לכתוב פה אחוז. אחוז ייתן אותה תוצאה.

  20. 06:40

    אחוז ו-for each זה אותו דבר. זה כמו קיצור רק בואו נעשה את זה מספרים עד 3 שיהיה לנו יותר קל. שתראו שזה בדיוק אותו דבר for each ואחוז. יפה מאוד.

  21. 06:51

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

  22. 07:00

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

  23. 07:13

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

  24. 07:26

    נריץ רק את החלק הזה. מה שקרה זה שיש לנו 65,000 פעמים אפס, אני עוצר את הריצה שלו פה בכפתור האדום, עולה הכי למעלה, בגלל שננקיתי מסך אז זה הכי למעלה, ואני רואה שיש לי פה 65,000 פעמים מספר אפס.

  25. 07:41

    למה? בשביל ליצור מערך שקוראים לו בייטס, מערך ריק בגודל אפס, לאפס את הביפנוכו של המערך. בסופו של דבר יצא לנו פה משתנה בשם בייץ. המשתנה הזה בשם בייץ יכיל בפנים 65,000 אפסים.

  26. 07:59

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

  27. 08:11

    אחרי כל ההכנות שלנו אנחנו עושים stream read. אנחנו קוראים את מה שהגיע לנו מהרשת. זוכרים המשתנה stream הזה? הוא מצביע על משתנה דולר קליינט גט סטרים ודולר קליינט מצביע לנו בעצם לחיבור לסוקט מול השרת שלנו אז חיבור מול השרת מצביע עליו דולר קליינט

  28. 08:33

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

  29. 08:54

    הפקודה הזאת, בואו נראה אותה, בואו נעתיק אותה ונעשה אותה פה בצד. הפקודה הזאת תפעיל רידר שיקרא לתוך ה-bytes הזה, לתוך המערך הריק הזה עם האפסים, את המידע מתוך הרשת.

  30. 09:08

    הוא יתחיל לקרוא ממיקום 0 ויקרא את כל ה-65,000 בתים שנכניס לו, ואחרי שהוא יסיים לקרוא הוא יכניס את המספר תכלס שהוא קיבל, מספר האותיות תכלס שהוא קיבל לדולר איי.

  31. 09:23

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

  32. 09:31

    אני עושה who am I enter, כשעשיתי enter הוא היה צריך להיקלט כאן. בואו נראה שהוא נקלט, דולר איי, לא נקלט כלום. בואו ננסה עוד פעם, נריץ רק את הפקודה הזאת.

  33. 09:43

    who am I enter, אה הנה קלט. אתם רואים 7, למה 7? 7 כי יש פה 6 אותיות ו-enter. שש אותיות ואנטר אז הוא קלט הוא אמ-איי כנראה שהשתיים הזה זה היה האנטרים שהכנסנו לפני כן זוכרים שהכנסנו אנטרים הנה זה הפעמיים

לקורס המלא: קורס סייבר למתחילים אונליין

ההרצאה הקודמת: הסבר על Socat - Encrypted Bind Shell

ההרצאה הבאה: יצירת Reverse Shell על ידי Powershell - חלק 2

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

  • יצירת Reverse Shell - ב-Windows עם Netcat
  • יצירת משתמשים ב-Powershell
  • SHELL MODULE
  • יצירת RAID 1 Mirror - על ידי LVM

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

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