
הטקסט המלא של הדקות הראשונות בהרצאה «הזרקה Process Injection חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם בסרטון זה אנחנו הולכים להזריק לתוך סרוויס של ווינדוס שאחראי על ההדפסות את הקוד הזדוני שלנו בואו נפתח האקר פרוצס כדי לעקוב אחרי כל התהליך אנחנו יכולים לראות פה טאסק מנאג'ר משוכלל אני מחפש פול סרוויס ולמעשה הסרוויס הזה שאחראי על הדפסות זה האקזה שלו בפרופרטיס שלו במודולס אנחנו לא רואים פה clr CLR אחראי על הרצה של קוד .NET,
כרגע לא רואים אותו, כי SPOOL SERVICE כתוב בשפת C++ ומקומפל לשפת מכונה, הוא לא משתמש ב-DOTNET ולא צריך את ה-CLR.
אחרי הזרקה אתם תראו שיופיע פה פתאום CLR של .NET, ככה נדע שבאמת הצלחנו להזריק. אז אנחנו רוצים לקחת פאוור של, את הפאוור של אקזה, כמובן שזה לא חייב להיות אקזה כזה, זה יכול להיות כל תוכנה ב-.NET, כל תוכנה ב-PowerShell, כולל קוד זדוני, ולהזריק אותו לכאן, ולהרביא אותו,
ושאף אחד לא יעלה על זה שיש קוד זדוני שרץ בתוך סרוויס של Windows. איך אנחנו הולכים לעשות את זה? על ידי יצירת Thread נוסף. Thread זה קטעי קוד שרצים בתוך התוכנה במקביל.
זאת אומרת, קובץ אקזה, הפרוצס הזה, מריץ במקביל כמה תוכנות, כמה קטעי קוד, והתווסף פה גם קטע קוד שלנו נוסף.
זה למעשה תכנות מקבילי. במקביל רצים דברים, לדוגמה, כדי שבזמן שאנחנו ממתינים לתשובה מהשרת כלשהו, תשובה ברשת, הממשק הגרפי לא יהיה תקוע.
שהממשק הגרפי ישתנה, שנוכל ללחוץ על דברים בזמן ההמתנה לתשובה מהשרת. יש דברים שקורים במקביל. נניח אתה עושה סייב בוורד, סייב לאיזשהו מסמר, בזמן שהוא הולך להרדיסק ושומר אותו, אתה יכול להמשיך לעבוד.
דברים קורים במקביל בתוך אותו פרוצס יש כמה threadים שרצים אנחנו רוצים להוסיף פה עוד thread אחד הזדוני שלנו אנחנו נראה אותו גם פה וגם במודולים שיטענו או dll של .NET ככה אנחנו נדע שהצלחנו כרגע יש פה dllים אחרים שלא קטעי קוד נוספים טוב בואו נתחיל אנחנו ניקח פרויקט מוכן כדי לא להמציא את הגלגל שנקרא PS Injections Powerful Injection נלך לגוגל יותר נכון, נלך לגיטהאב
ונוריד את הקוד המוכן שלו. מה הוא עושה? Inject PowerShell into any process. אני עושה קוד דאונלוד זיפ, מוריד אותו, מקבל פה הודעה שזה וירוס, could not download, virus detected, התרעה של אנטיווירוס, הוא מזהה שזה קוד זדוני מבחינתו,
למרות שזה קוד תמים, אז בואו ננתק את האנטיווירוס, נלך ל-manage settings של האנטיווירוס, וננתק real-time protection. זה האנטי-וירוס שמובנה בווינדוס, הוא ממש טוב האמת.
ריל-טיים פרוטקשן איז אוף. וננסה להוריד עוד פעם. הורדנו, נכנסים לדאונלורדס, מחלצים אותו, אקסטרקט אול, פותחים את קובץ הזיפ שהורדנו כרגע, נכנסים לתיקייה שלו, והנה כאן יש לנו את הסקריפט שלנו.
נפתח פאוורשל עם הרשאות של Run as Administator. כמובן שבמציאות תהיה תוכנה זדונית שתעשה הכל אוטומט, ואנחנו רוצים לדמות את ההתנהגות שלה בשלבים פשוטים.
טוב, מתחילים מזה שנריץ PowerShell עם בייפאס. מה זה בייפאס? בייפאס מאפשר לנו להריץ סקריפטים ב-PowerShell.
PS1 זה סקריפט, ברירת מחדל ש-PowerShell מאפשר להריץ רק פקודה אחת כל פעם. אז הרצתי עוד פעם PowerShell, כאילו בתוך PowerShell פתחתי PowerShell חדש, אבל הפעם עם ה-Bypass.
ועכשיו אני הולך לייבא מודול, מודול זה פקודות נוספות לתוך ה-PowerShell, לשדרג את ה-PowerShell שלי עם פקודות שכתובות כאן.
אז אני מייבא אותו. זה בא להקל על המתכנת, שלא יכתוב הכל בסלט אחד גדול, אלא יחלק את התוכנה הגדולה שלו לפקודות קטנות, למודולים קטנים.
מייבאים קודם כל את המודולים, ואז מריצים את התוכנה הראשית. כי התוכנה הראשית היא מאוד ארוכה, וכדי לתחזק אותה בקלות, יותר קל לחלק את זה לחתיכות קטנות, לפקודות קטנות לפונקציות קטנות למודולים קטנים למעשה בתוך המודול יושבות פונקציות והתוכנה הראשית מריצה את הפונקציות האלו שיהיה יותר קריא יותר קל אז אנחנו
מייבאים את המודול ומקבלים עוד פקודות לpower shell ועכשיו מריצים את הסקריפט עצמו רק כאן צריך לכתוב לאן אנחנו רוצים להזריק אנחנו יכולים להזריק את זה לכל אקזה, ל- notepad של Windows, ל- spool Service של ההדפסות.
רק צריך להגיד לו לאיזה process ID אנחנו רוצים, 8632, ואני מזכיר לכם שכרגע אין לי פה CLR, אתם רואים? אין CLR.
מרגע שאני אזריק, אתם תראו שפתאום מופיע לי CLR. אז אני לוקח את הפקודה הזאת, מכניס פה מספר process 8632, אז אני הולך להזריק את ה-powershell לתוך 8632, ואנחנו נראה אותו כאן, בואו נראה את כל זה קורה, הופה, אתם רואים מופיע סי-אל-אר, זה אומר זה הוזרק לתוך הפרינטר, לתוך השירות של המדפסות,
זה מתחבא כאן בין כל ה-DLLים האחרים ובין כל ה-threadים האחרים, תסתכלו, הנה, הוא פתח thread נפרד, דרך אגב, היתרון של הזרקת thread, הזרקת קוד זדוני לתוך תוכנה קיימת, שהיא מקבלת גם גישה לכל הזיכרון של אותה התוכנה, זאת אומרת, כל ה-threadים האלו, מה שמשותף להם, שהם שייכים לאותו פרוצס, לאותו
זיכרון. כל אחד מהם רשאי לגשת לזיכרון של כל האחרים, ואם אחד מאלו היה מחזיק איזשהם סיסמאות או מטפל בסיסמאות, כשאני בפנים, כשאני חלק מהפרוצס, אני יכול לגנוב לו את כל הסיסמאות מהזיכרון.
אנחנו נראה את זה בהמשך. אז הנה ראינו הזרקה וראינו שנוסף פה טרד. את כל זה אנחנו רואים בלייב בזכות הטאסק מנאג'ר המשוכלל פרוצס האקר, אבל אם לא היינו יושבים ומסתכלים עליו היינו יכולים גם באבנט ויואר של ווינדוס לראות את האירוע הזה בזכות סיסמון סיסמון גם מתעד את ההזרקות האלו כמובן שברירת מחדל הוא לא מותקן
צריך להתקין אותו כמו שעשינו בסרטונים קודמים למעשה כל הפרק הזה מוקדש לסיסמון טוב חברים בואו נלחץ פה כפתור ימני ונעשה פילטר על לוג של סיסמון נלך לxml ונכתוב שאילתא ידנית שאומרת לחפש גם את הספול סרוויס אקזה וגם את ה-crlgit.dll למה אני צריך את ה-crlgit הזה? כי זה מה שהם ביקשו ממני בתרגיל
לגלות את השעה 256 את הערבול החד-כיווני את ה-hash של הקובץ הזה שמוזרק לתוך ספול סרוויס זה התרגיל שנתנו לי הם רצו שנעשה את זה על המכונה שלהם עשינו את זה על המכונה שלנו בוא נגלה את זה על ידי סיסמון אז אני עושה סינון לפי ה-dll שאני מחפש ולפי ה-spoolservice.exe נעשה אוקיי הנה הוא סינן לי מכל 48,000 אירועים רק את
האירוע היחיד הזה מספר 7 אפשר לראות שסיסמון תיעד את ה-spoolservice.exe עם image load עם הזרקה של ה-dll של .NET just in time compiler אני יורד למטה והנה שם 256 הנה הערבול שלו אני לוקח אותו עושה קופי קונטרול סי הולך לכאן עושה קונטרול וי סבמיט הוא אומר תשובה לא נכונה כנראה שאצלם במכונה יש גרסה אחרת של הפאוור של אז אין בעיה בואו נרים שנייה את המכונה שלהם ונעשה את זה אני לוחץ כאן
כלי here to spawn the target system ליצור מכונה וירטואלית הנה הוא יוצר אצלהם, בענן שלהם, מכונה וירטואלית לתרגול, ייתן לי תכף את ה-IP ואני אתחבר עם ה-IP שלהם לתוך המכונה ונעשה את התרגיל הזה ונגלה את ה-hash.
הנה קיבלנו כתובת IP, מעתיק אותה, הולך לתוך הווינדוס, מתחבר ל-VPN לתוך הרשת הפנימית שלהם, מקבל IP ברשת הפנימית שלהם, עכשיו אני יכול ב-remote desktop, remote desktop connection, להתחבר ל-IP הפנימי