PracticU

הזרקה Process Injection
חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס SOC - מיישם הגנת סייבר › הזרקה Process Injection חלק 2
מילון מושגים:
תהליך - מופע של תוכנה שרצה בזיכרון, עם הקוד, הנתונים והמשאבים שהוקצו לה על ידי מערכת ההפעלה.
תהליכון - יחידת ביצוע בתוך תהליך, המאפשרת להריץ כמה מהלכים במקביל ולחלוק את אותו זיכרון.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
CLR - סביבת הריצה של .NET שמריצה את הקוד, מנהלת את הזיכרון ומטפלת בשגיאות (Common Language Runtime).
.NET - פלטפורמת פיתוח של מיקרוסופט להרצת יישומים בשפות כמו C#, הכוללת ספריות וסביבת ריצה משותפות.
Sysmon - כלי של מיקרוסופט שמתעד פעילות מפורטת במערכת Windows ביומן האירועים, לצורכי ניטור ואבחון אבטחה.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
האש - פונקציה שממירה מידע לערך קצר באורך קבוע. שינוי קטן בקלט משנה את התוצאה, והיא חד-כיוונית.

הזרקה Process Injection חלק 2
הרצאה זו מסבירה את הרעיון של Process Injection, הזרקת קוד לתוך תהליך קיים של מערכת ההפעלה, ולמה הטכניקה הזו מקשה על גילוי קוד זדוני.
מה זה Process Injection ולמה זה מסוכן
תהליך רגיל, כמו שירות ההדפסות (Spool Service), מריץ כמה חוטי קוד (threads) במקביל, מה שמאפשר לתוכנה להמשיך לעבוד בזמן שמתבצעת פעולה ברקע. בהזרקת תהליך, תוקף מוסיף thread חדש לתוך תהליך קיים ולגיטימי, כך שהקוד הזדוני רץ "בתוך" תוכנה תמימה ומוכרת, ולא מופיע כתהליך נפרד ב-Task Manager. מכיוון שכל ה-threadים של אותו תהליך חולקים את אותו הזיכרון, קוד שהוזרק יכול לגשת לכל מה שהתהליך המקורי מחזיק בזיכרון שלו, כולל מידע רגיש.
איך אפשר לגלות הזרקה כזו
1. CLR שלא היה צריך להיות קיים: תהליך שאינו כתוב ב-.NET, כמו שירות הדפסות שכתוב ב-C++, אינו טוען בדרך כלל את ה-CLR. אם מופיע CLR בתהליך כזה, זה סימן שהוזרק לתוכו קוד מבוסס .NET.
2. עלייה במספר ה-threadים: מספר ה-threadים הפעילים של תהליך גדל בפתאומיות כשמוזרק אליו קוד חדש.
3. תיעוד ב-Sysmon: עם הגדרה שמפעילה מעקב אחרי טעינת תוכן נוסף (image load), Sysmon מתעד את האירוע וניתן לזהות בו גם את ה-hash של מה שנטען.
שימו לב
ההרצאה מדגישה שבמקום קוד לגיטימי ניתן להזריק גם קוד זדוני, ושהטכניקה חזקה בדיוק בגלל שהיא מתחבאת בתוך תהליך שנראה תקין. ה-exe עצמו על הדיסק לא משתנה, רק ההעתק שלו בזיכרון.
אחרי ההרצאה אפשר להסביר מה זה Process Injection, למה הוא מקשה על גילוי קוד זדוני, ואיזה סימנים (כמו CLR לא צפוי או קפיצה במספר ה-threads) מעידים עליו.
השיעור הבא בקורס: גניבת סיסמה מדיסק עם Mimikatz וונדוס 11

פרקי ההרצאה: הזרקה Process Injection חלק 2

  1. 00:00

    הזרקה לשירות ההדפסות

  2. 00:40

    זיהוי הזרקה דרך ה-CLR

  3. 01:13

    מושג ה-Thread ותכנות מקבילי

  4. 02:11

    הורדת כלי הזרקה מ-GitHub

  5. 03:35

    הרצת PowerShell עם Bypass

  6. 04:48

    בחירת מספר התהליך להזרקה

  7. 06:17

    תיעוד ההזרקה ב-Sysmon

  8. 08:11

    התחברות למכונת התרגול

תמלול ההרצאה: הזרקה Process Injection חלק 2

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

  1. 00:02

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

  2. 00:32

    כרגע לא רואים אותו, כי SPOOL SERVICE כתוב בשפת C++ ומקומפל לשפת מכונה, הוא לא משתמש ב-DOTNET ולא צריך את ה-CLR.

  3. 00:43

    אחרי הזרקה אתם תראו שיופיע פה פתאום CLR של .NET, ככה נדע שבאמת הצלחנו להזריק. אז אנחנו רוצים לקחת פאוור של, את הפאוור של אקזה, כמובן שזה לא חייב להיות אקזה כזה, זה יכול להיות כל תוכנה ב-.NET, כל תוכנה ב-PowerShell, כולל קוד זדוני, ולהזריק אותו לכאן, ולהרביא אותו,

  4. 01:04

    ושאף אחד לא יעלה על זה שיש קוד זדוני שרץ בתוך סרוויס של Windows. איך אנחנו הולכים לעשות את זה? על ידי יצירת Thread נוסף. Thread זה קטעי קוד שרצים בתוך התוכנה במקביל.

  5. 01:18

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

  6. 01:28

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

  7. 01:41

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

  8. 01:55

    דברים קורים במקביל בתוך אותו פרוצס יש כמה threadים שרצים אנחנו רוצים להוסיף פה עוד thread אחד הזדוני שלנו אנחנו נראה אותו גם פה וגם במודולים שיטענו או dll של .NET ככה אנחנו נדע שהצלחנו כרגע יש פה dllים אחרים שלא קטעי קוד נוספים טוב בואו נתחיל אנחנו ניקח פרויקט מוכן כדי לא להמציא את הגלגל שנקרא PS Injections Powerful Injection נלך לגוגל יותר נכון, נלך לגיטהאב

  9. 02:27

    ונוריד את הקוד המוכן שלו. מה הוא עושה? Inject PowerShell into any process. אני עושה קוד דאונלוד זיפ, מוריד אותו, מקבל פה הודעה שזה וירוס, could not download, virus detected, התרעה של אנטיווירוס, הוא מזהה שזה קוד זדוני מבחינתו,

  10. 02:47

    למרות שזה קוד תמים, אז בואו ננתק את האנטיווירוס, נלך ל-manage settings של האנטיווירוס, וננתק real-time protection. זה האנטי-וירוס שמובנה בווינדוס, הוא ממש טוב האמת.

  11. 02:59

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

  12. 03:16

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

  13. 03:28

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

  14. 03:37

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

  15. 03:51

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

  16. 04:01

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

  17. 04:13

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

  18. 04:37

    מייבאים את המודול ומקבלים עוד פקודות לpower shell ועכשיו מריצים את הסקריפט עצמו רק כאן צריך לכתוב לאן אנחנו רוצים להזריק אנחנו יכולים להזריק את זה לכל אקזה, ל- notepad של Windows, ל- spool Service של ההדפסות.

  19. 04:55

    רק צריך להגיד לו לאיזה process ID אנחנו רוצים, 8632, ואני מזכיר לכם שכרגע אין לי פה CLR, אתם רואים? אין CLR.

  20. 05:04

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

  21. 05:26

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

  22. 05:50

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

  23. 06:03

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

  24. 06:29

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

  25. 06:57

    לגלות את השעה 256 את הערבול החד-כיווני את ה-hash של הקובץ הזה שמוזרק לתוך ספול סרוויס זה התרגיל שנתנו לי הם רצו שנעשה את זה על המכונה שלהם עשינו את זה על המכונה שלנו בוא נגלה את זה על ידי סיסמון אז אני עושה סינון לפי ה-dll שאני מחפש ולפי ה-spoolservice.exe נעשה אוקיי הנה הוא סינן לי מכל 48,000 אירועים רק את

  26. 07:29

    האירוע היחיד הזה מספר 7 אפשר לראות שסיסמון תיעד את ה-spoolservice.exe עם image load עם הזרקה של ה-dll של .NET just in time compiler אני יורד למטה והנה שם 256 הנה הערבול שלו אני לוקח אותו עושה קופי קונטרול סי הולך לכאן עושה קונטרול וי סבמיט הוא אומר תשובה לא נכונה כנראה שאצלם במכונה יש גרסה אחרת של הפאוור של אז אין בעיה בואו נרים שנייה את המכונה שלהם ונעשה את זה אני לוחץ כאן

  27. 08:03

    כלי here to spawn the target system ליצור מכונה וירטואלית הנה הוא יוצר אצלהם, בענן שלהם, מכונה וירטואלית לתרגול, ייתן לי תכף את ה-IP ואני אתחבר עם ה-IP שלהם לתוך המכונה ונעשה את התרגיל הזה ונגלה את ה-hash.

  28. 08:22

    הנה קיבלנו כתובת IP, מעתיק אותה, הולך לתוך הווינדוס, מתחבר ל-VPN לתוך הרשת הפנימית שלהם, מקבל IP ברשת הפנימית שלהם, עכשיו אני יכול ב-remote desktop, remote desktop connection, להתחבר ל-IP הפנימי

לקורס המלא: קורס SOC אונליין – מיישם הגנת סייבר

ההרצאה הקודמת: הזרקה Process Injection - חלק 1

ההרצאה הבאה: גניבת סיסמה מדיסק - עם Mimikatz - וונדוס 11

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

  • process
  • הסבר על Dependency Injection
  • התקפת SQL injection
  • הגנה מהתקפות SQL Injection

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

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