
הטקסט המלא של הדקות הראשונות בהרצאה «הזרקה Process Injection חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בסרטון זה אנחנו נראה איך להזריק קוד זדוני לתוך תוכנה רגילה, קובץ אקזה כלשהו שמובנה בווינדוס. אנחנו נזריק לתוכו את הקוד הזדוני שלנו, וכך נוכל להרביא אותו מטאסק מנאג'ר, ולא יראו אותו כי הוא יהיה חלק מתוכנה לגיטימית.
אנחנו גם נראה איך אפשר לעלות על זה ואיפה זה מתועד. בואו נתחיל מזה שנוריד תוכנת פרוצס האקר, ונראה את ה-Task Manager המשוכלל שלנו, ודרכו נעקוב אחרי ה"בפנוכו" של קבצי אקזיט הרגילים.
ניכנס לתוך מכונה וירטואלית, נכתוב Process Hacker Downloads, נלחץ על ה-Recommended Link, על הקישור המומלץ, יש פה דאונלואוד, שימו לב, הם שינו שם ל-System Informer, כנראה מישהו קנה אותם ורצה דרכם לפרסם את עצמו, כולם קוראים לזה Process Hacker, נעשה נקס נקס נקס, פיניש.
אז עכשיו זה נקרא System Informer ובמציאות כולם קוראים לזה Process Hacker, שזה Task Manager משוכלל. ומה אנחנו רואים כאן? אנחנו רואים את כל הטאסקים שרצים, את כל הפרוצסים שעובדים, זה אומר תוכנות שכרגע עובדות, רצות על המעבד, לכל תוכנה יש מספר Process ID,
מספר תהליך, למעשה תוכנה מועתקת מ-hard disk לזיכרון ואז היא מורצת חוץ מזה יש לנו פה סרוויסים תוכנות שרצות ברקע כולל דרייברים שימו לב זה יותר משוכלל מכלי המובנה בווינדוס פה אני יכול ממש לראות גם את הדרייברים וגם בטולס אני יכול ליצור סרוויס חדש ממש לעשות קריאט סרוויס
לתת לו שם כלשהו aaa להגיד לו מתי הוא יעלה באיזה שלב של הבוט הוא יעלה האם זה ממש בהתחלה כשהמחשב נדלק או אחרי שכבר כל התוכנות עלו וגם אני יכול לעשות לו הפניה פה לקובץ אקזה שזה האקזה שיופעל.
למעשה אפשר ליצור סרוויס חדש מכאן. יש לנו גם פה נטוורק שאנחנו רואים בדיוק איזה תוכנה פתחה איזה פורט לאיזה יעד באיזה פרוטוקול מה המצב של הסשן שלו שזה שיחה מסודרת.
אתם רואים אדג' פה פתח מלא חיבורים כי פתוח לי פה האתר ולאתר הזה יש כל מיני פרסומות כל פרסומת מובילה ליעד אחר. למעשה, אתר אינטרנט זה אוסף של כמה מקורות, לא תמיד, אבל ברוב המקרים, בגלל זה יש לי פה הרבה יעדים.
0.0.0 זה אומר שהוא מחכה לחיבור. המחשב שלי מאזין בפורטים האלו, אתם רואים? לוקל פורטס ורימורט פורטס. אז זה השיחות הקיימות מהדפדפן החוצה, זה מה שהמחשב שלי מוכן לקבל.
דיסקים, מי פונה לדיסק וכמה? פיירוול, אני פה רואה מה הוא חסם, הפיירוול של ווינדוס, איזה תקשורת יוצאת החוצה דרך הפיירוול של ווינדרוס, יש פה ניטור של פיירוול בלייב ו-Device Manager, כל הדרייברים, כל העדכינים שיש לי. כלי ממש משוכלל ביחס ל-Task Manager, קיים כבר מעל 20 שנה ומה שרצינו לראות כאן זה האם הקוד
שלנו, האם התוכנה שלנו היא Managed או לא Managed. מה זה Managed? זה אומר שהיא כתובה בשפת .NET, בואו נריץ לדוגמה PowerShell, פרצתי פה PowerShell, אני שם אותו ברקע למטה, אני יכול לסנן כאן, בשביל לא לראות את הכל אני יכול לכתוב PowerShell ואז הוא נותן לי רק את התהליך היחיד הזה, כדי שאני לא אחפש
לבד. וב-PowerShell הזה, בפרופרטיס שלו, אני יכול לראות כל מיני מאפיינים, זה לדוגמה מספר תהליך 2492. דרך אגב, אם אני אסגור אותו, אתם רואים הוא נהיה אדום ומת, אם אני אפתח אותו מההתחלה הוא יקבל מספר תהליך שונה.
זאת אומרת אותה תוכנה כל פעם שהיא מועתקת לזיכרון ועולה מעבד נותן לה מספר חדש 9872 והיא מתחילה לקבל זמן מעבד אתם יכולים לראות שזה המקור power של אקזה וזה מספר הפרוצס שלו מספר התהליך שמקבל זיכרון ואנחנו יכולים לראות כמה זמן זה כבר בזיכרון רץ מה שמעניין אותי מכל זה זה איזה מודולים איזה dllים power של טען יש פה במודולס אנחנו רואים שהתוכנה הזאת
וככה פועלות רוב התוכנות, הן טוענות DLL'ים עם קוד נוסף. עכשיו, ה-DLL הזה, משתמשים בו הרבה תוכנות אחרות, זה לא רק PowerShell. לדוגמה, זה אחראי על הצפנה, קריפטוגרפיק.
זה אחראי על גרפיקה, לצייר חלונות ולצייר כל מיני דברים. זה, אמסי, אתם רואים אמסי DLL? הוא אחראי על אנטי-וירוס, אנטי-מיילוור סקן, על סריקה של וירוסים בתוך הפקודות שאני מפעיל.
אז אנחנו רואים פה את ה-power shell, כולל ה-DLLים שהוא טוען לי זיכרון, וכאן אנחנו גם יכולים לראות לאיזה כתובת בתוך הזיכרון שלו, בתוך התוכנה שלו, בתוך הפרוצס שלו, הוא טען לכתובת כזאת וכזאת.
מה שמעניין אותי להראות לכם שיש כאן CLR. CLR אחראי לקחת פקודות של power shell ובזמן אמת לתרגם אותן לשפת מכונה. זאת אומרת, power shell ו.NET, אתם רואים .NET runtime, גאסט אין טיים קומפיילר הוא אחראי לקחת את הפקודות שאנחנו כותבים ולהפוך אותן לשפת מכונה זאת אומרת שאם אני אכתוב עכשיו get child item זה למעשה תראה לי
את כל הילדים שיש בתיקייה הזאת תראה לי את כל הקבצים שיש בתיקייה הזאת זה כמו לעשות דיר ברגע שאני מריץ את הפקודה הזאת היא הופכת משפת .NET לשפת מכונה כי המחשב מבין רק שפת מכונה ומי שעושה את זה זה קומפיילר CLR עכשיו עכשיו אנחנו יכולים גם לעמוד על ה-power-share ולראות שכתוב כאן process is managed.dotnet כאילו התהליך הזה מנוהל על ידי ה-dotnet
למעשה ה-CLR הזה טעון בזיכרון ככה אנחנו יודעים שהקוד הזה כתוב בשפת .NET שזה יכול להיות C-Sharp ושפות אחרות בוא נראה משהו אחר שהוא לא .NET לדוגמה ספול סרוויס מה זה ספול סרוויס הוא אחראי על הדפסות תסתכלו טוב טוב אין פה .NET ואין פה managed, ובפרופרטיס שלו, במודולים, אם נעשה CLR, אנחנו לא נראה אותו כי הוא לא חלק מזה.
למה? כי spool service, השירות הזה, נכתב לא בשפת .NET, לא בפלטפורמה של .NET, הוא כתוב ב-C++. כשכותבים פקודות ב-C++, איך שמסיימים לכתוב את התוכנה, עושים קומפילציה, הופכים אותה לשפת מכונה, את ה-exe שלה, ואז את הפקודות בשפת
מכונה מביאים ללקוח סופי,