
הטקסט המלא של הדקות הראשונות בהרצאה «גילוי של הזרקת דוט-נט זדוני לזיכרון» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה הזו אנחנו נתפוס תוכנת דוטנט זדונית, נאתר אותה ברמת הקרנל, נראה את הפקודות שהיא מריצה, ונתפוס אותה בלוג שעובר למערכת ניטור מרכזית, ל-SIM שלנו.
זאת אומרת, אנחנו נראה איך הכל מתבצע שלב אחר שלב. בגדול יש שתי אסטרטגיות לתוכנות זדוניות, אחת שנקראת Living off the land, לחיות מתוך האדמה, בתוך הדברים שיש במחשב של הקורבן זאת אומרת לא מתקינים שום דבר חדש משתמשים לדוגמה בפאור של הקיים בווינדוס שכבר מותקן מראש שם והתוקף לוקח את הפאור
של הקיים ומריץ בפנים פקודות זדוניות שלו היתרון של הגישה הזאת שקשה יותר לאתר אותה יש פחות אינדיקציות לחדירה כי אין שום קובץ שהוא שם בדיסק הוא משתמש רק בדברים שגם ככה קיימים ולכן לאנטיווירוס יותר קשה לתפוס כי אנטיווירוס כאילו זורק את הדיסק ורואה שהכל שם תקין הוא לא יודע שמתבצעים דברים בזיכרון של המחשב בשביל לתפוס
התקפות כאלו living off the land צריך לעקוב אחר זיכרון של המחשב וזה הרבה הרבה יותר מסובך ואפשר להתחמק יותר בקלות אבל אנחנו פה מוגבלים ליכולות ולתוכנות שמותקנות במחשב של הקורבן.
יש אסטרטגיה אחרת שנקראת Bring Your Own Land. תביא את האדמה שלך, תביא את התוכנה שלך, את האקזה שלך. למעשה, התוקף מעתיק למחשב היעד, לקורבן, את האקזה שלו, את התוכנה שלו, עם יכולות מאוד מאוד גבוהות.
אז היתרון זה יכולות גבוהות, החיסרון, שיותר קל לאתר את זה, יותר IOC אינדיקציות לחדירה בכל מקרה אתם תראו בעולם של דוטנט ופאור של הרבה פעמים מנצלים את ה-living of the land את הפאור של הקיים להריץ בו פקודות היום אנחנו נראה איך אפשר לתפוס כזה דבר שעובד רק בזיכרון וזאת בעיה מאוד מאוד רצינית יש המון המון המון הגנות
שאפשר לעשות בזיכרון וקשה מאוד לתפוס את זה אז מה אנחנו עושים אנחנו נבדוק ברמת הקרנל, ברמת מערכת ההפעלה כי בסוף בסוף לא משנה מה עושה התוכנה היא מבקשת מקרנל לבצע את הפעולות ואם אנחנו נעקוב אחרי הקרנל אנחנו נתפוס את הפקודות הזדוניות של התוכנה בואו נראה איך עושים את זה קודם כל איך אפשר לדעת שיש תוכנה שהיא .NET לפי טעינה של ה-DLLים כמו
CLR-DLL, כמו CLR-GIT, Just-In-Time-DLL ה-DLL-ים האלו זה למעשה ה-DL-ים ש-dotnet צריכה בשביל לעבוד, ואנחנו יכולים לעקוב אחרי ה-DL-ים האלו, גם MS-Core DLL, וכך לדעת שהתוכנה עובדת על בסיס-dotnet, ולא נניח C++ רגיל.
איך אנחנו עוקבים אחרי זה? סתם, אפילו הסיסמון הרגיל יודע לעקוב אחרי ה-DL-ים, ראינו את זה בהרצאות קודמות, וראינו איך אפשר לראות שפתאום DLL נטען לזיכרון.
אנחנו נשתמש בתוכנה שנקראת Seedbelts כמו חגורות והיא לדוגמה שולפת את כל הטוקנים, את כל ההרשרות שיש לנו על מערכת ההפעלה. עכשיו נלמד איך תופסים התנהגות כזאת ברמת הקרנל.
אז קודם כל לגבי הסיסמון, סיסמון גם עוקב אחרי ETW והוא מזהה שיש לנו טעינה של DLL, יכלנו גם בלי סיסמון לעקוב אחרי הקרנל. פה יש לנו דוגמה שאירוע מספר 7 בסיסמון אומר ש mscore.dll נטען על ידי תוכנת sitbelt.
הבעיה של כל הסיסמון הזה שהוא מזהה טעינה של dll אבל הוא לא יודע האם זה זדוני או לא. זה שהתוכנה הטעינה clr של .NET 4 זה לא אומר שהיא זדונית כי היום המון המון תוכנות כתובות על .NET.
צריך להסתכל בפנוכו איזה פקודות התוכנה מנסה לבצע ואת זה סיסמון כבר לא יודע לעשות. ולכן אנחנו יורדים לרמה של ETW בעצמנו, למערכת ניטור של Windows, בלי העזרה שלו, ומתחילים לעקוב אחרי האירועים של Provider, של ספק .NET Runtime, מה קורה ב- .NET בזמן אמת, הספק הזה מביא מידע מתוך הקרנל, אנחנו גם אומרים לו שאנחנו
מעוניינים רק באירועים ספציפיים, ב-Kewords ספציפיים, שלא נהיה מפוצצים באירועים מיותרים, ורושמים הכל לתוך הקובץ. ברגע שמערכת הזאת מתחילה לעקוב אחרי האירועים, אנחנו מפעילים את התוכנת seedbelt.exe token privileges ששולפת את כל הטוקנים, את כל ההרשאות שיש ליוזר במערכת ההפעלה,
ואנחנו אמורים לזהות את זה כאן, בתוך הקובץ. שימו לב, אנחנו פה רואים ממש מה היא מנסה לעשות. בנוטפט זה לא נראה יפה, אבל הדגש כאן על המידע הגולמי שאנחנו מקבלים ומעבירים למערכת סים המרכזית שיודעת לנטר את זה.
אז תראו, אנחנו ממש רואים פה לוקה פריבילג'ס ניים, אנחנו רואים פה טוקנים שהיא מנסה לאסוף, תכף נראה את זה באמצעיות, ובסוף בסוף יש לנו תרגיל על החלק השחור הזה,