נושא הסתרת הקבצים מעורר עניין לא רק אצל ילדים סקרנים שרוצים לשמור את ספריית הסרטים שלהם בסוד מההורים, אלא גם חוקרי אבטחת מידע, כותבי סוסים טרויאנים ואנשי פורנזיקס. אדגים 3 שיטות כיצד להחביא קבצים מהמשתמשים ומהסורקים של AV, וגם אסביר למה WMIC זה חשוב.
אתם יודעים למה אני לא אוהב את Windows? האמת שבעצמי לא ידעתי לתת תשובה מעמיקה תקופה דיי ארוכה, אבל תמיד ידעתי את זה מאז שעשיתי פירמוט בפעם השלישים בשנה (עוד בתקופת Win98). רק לאחר שיצא לי לעבוד עם המבנה הפנימי של Windows בתחום האבטחה, הבנתי מה הפריע לי כל השנים האלה! הסיבוכיות של המערכת! זה נשמע מוזר, אבל ואני לא מדבר על הידידותיות למשתמש, אלא הארכיטקטורה הפנימית וה- Feature creep. מערכת זו היא דוגמה טובה לעקרון TIMTOWTDI המוכר מ- Perl. לכל חלק במערכת אפשר לגשת במספר דרכים שונות ולפעמים משונות. זה יוצר חוסר אחידות, ולפי דעתי אחת הסיבות למה Windows כ"כ פרוצה – כי כשיש עשר דרכים לעשות אותו הדבר, קשה להגן על כולן.
הנה דוגמה. בשלושת השיטות במאמר זה אשתמש בגישה לקבצים באמצעות ה- UNC. ב- Windows אפשר לגשת לקבצים בשיטה מימי ה- DOS, כלומר הדרך הסטנדרטית (c:\temp\somefile) ואפשר באמצעות נתיב מיוחד שמתחיל ב- \\. חלק מהפקודות ב- Windows יודעות לעבוד עם ה- UNC, חלק לא, וחלק רק עם נתיבים מסוימים ב- UNC. בקיצור, חוסר אחידות ובלאגן.
1. Alternate Data Stream
נתחיל מחימום קל. ADS הוא פיצ'ר של NTFS, שאמור להיות מוכר לכל מי שעסק בסיסטם, התעניין במערכות קבצים והמבנה הפנימי של Windows, או אבטחת מידע באופן כללי. הפיצ'ר מאפשר לשייך יותר מ- data stream אחד לרשומה במערכת קבצים. כלומר, לשם קובץ מסוים ניתן לקשר יותר מאוסף מידע אחד.
נניח שקיים קובץ תמונה: c:\temp\hello.jpg
ניתן לקשר אליו תוכן נוסף, כך שיהיה זמין בנתיב מיוחד הבא, לדוגמה: c:\temp\hello.jpg:world
זה data stream בשם "world" בתוך הקובץ "hello.jpg". כעת אפשר לכתוב ולקרוא מה- data stream הזה. בעצם, בפתיחת הקובץ ב- NTFS, תמיד פונים ל- data stream הראשון (הדיפולטי), אלא אם כן מצוין אחרת. במקרה זה, הראשון הוא התמונה עצמה.
ניואנס אחד – רק תוכנות שמימשו טיפול ב- ADS יכולות לגשת ל- ADS. אם ננסה לקרוא קובץ בשם "hello.jpg:world" בתוכנה שאינה תומכת ב- ADS, זה ייכשל, מכיוון שהיא תנסה למצוא אותו על הדיסק, וקובץ בשם זה לא קיים. כלומר, העבודה עם ADS אפשרית או באמצעות כלים שתומכים בו, או באמצעות שימוש ב- Win32 API בקוד שלכם.
היופי ש- Windows Explorer אינו מודע לקיומו של ADS ואינו מציג אותו כלל. אם ניצור מספר data streams בקובץ מסוים עם מידע בגודל כלשהו, הסייר של וינדוס יתייחס רק ל- stream הדיפולטי (הראשון), יציג את הגודל שלו כגודל של הקובץ, ויפתח רק אותו בפתיחת הקובץ. רק תאריך שינוי הקובץ יתעדכן, אבל מי בודק תאריך שינוי באמת?
אדגים כיצד להסתיר ולהריץ קובץ הרצה בתוך ADS של קובץ JPG. השלבים הם:
- יצירת ADS חדש עם התוכן של קובץ malware.exe בתוך קובץ hello.jpg;
- הרצת הקובץ עם הפקודה wmic process call create.
הדגל R בפקודה dir מציג ADS.
הבטחתי להסביר על WMIC, או Windows Management Instrumentation. כדי להריץ קובץ, בד"כ אפשר להשתמש בפקודה start. אבל מכיוון שהפקודה הזו לא יודעת לעבוד עם ADS, היא פשוט לא תמצא את הקובץ. לעומת זאת, wmic כן יודע לטפל ב- ADS, ולכן נשתמש בו.
יתרונות:
- מוסתר מפני המשתמש;
- קל מאוד למימוש ואינו דורש הרשאות מיוחדות.
חסרונות:
- מי שמחפש – ימצא, במיוחד האנטיוירוסים.
מסקנות:
- משעשע, אך כבר אינו יעיל בהסתרת פוגענים, כי האנטיוירוסים סורקים data streams. יכול להיות שימושי בהסתרת ספריית סרטים אישית.
2. Device files
נמשיך בספרינט. הידעתם שב- Windows יש קבצים מיוחדים המקושרים לדרייברים מסויימים? כן כן, דומה לתיקיית dev/ במערכות ממשפחת Unix. זה הוא פיצ'ר שהגיע עוד מ- DOS וקיים עד עכשיו, לא ברור מאיזו סיבה. בניגוד למערכות ממשפחת יוניקס, במערכת הפעלה Windows קבצים אלה לא יושבים בתיקיה ייעודית. מדובר במילים שמורות במערכת שאי אפשר ליצור קבצים עם שם דומה על הדיסק בדרכים קונבנציונליות.
לדוגמה, CON מייצג את console, בדומה ל- dev/tty/ במשפחת יוניקס. אפשר לקרוא ולכתוב לקובץ זה דרך STDIN ו- STDOUT. שליחת מחרוזת תגרום להדפסתה על המסך.
עוד קבצים מיוחדים מהסוג הזה: AUX, NUL, COMx, LPTx.
מה אפשר לעשות עם זה, אתם שואלים? אמנם פיצ'ר זה לא יאפשר להסתיר קבצים זדוניים מהמשתמש, אבל יאפשר לשמר אותם על הדיסק ללא יכולת מחיקה או שינוי בשיטה הרגילה. כל זה תודות למבנה העקום של Windows.
כפי שכתבתי קודם, שמות של קבצים וירטואליים אלה שמורים. אי אפשר ליצור קובץ על הדיסק עם שם כזה. תנסו עכשיו ליצור קובץ בשם CON (שימו לב – ללא extension)… השיטה ליצירת קבצים אלה היא דרך UNC, וזו גם הדרך למחוק אותם.
העתקת סוס טרויאני לקובץ בשם CON:
הרצת הקובץ זדוני:
למחוק את הקובץ המיוחד אפשר באותה הדרך כפי שיצרנו, דרך UNC:
del \\.\c:\temp\CON
הפעם שוב היה צורך ב- WMIC, למרות שלא מדובר ב- ADS. וזו הסיבה:
הפקודה start לא מזהה את סוג הקובץ, וזה לא אמור להיות לפי extension, מכיוון שב- ADS ה- extension בכלל לא רלוונטי.
יתרונות:
- אי אפשר למחוק דרך Windows Explorer או שורת פקודה ללא שימוש ב- UNC;
- קל מאוד למימוש ואינו דורש הרשאות מיוחדות.
חסרונות:
- נראה חשוד;
- האנטיוירוסים יודעים לטפל בזה.
מסקנות:
- לא יעיל. האנטיוירוסים ניגשים גם דרך UNC ומוחקים את הקובץ. יכול להיות שימושי כדי לעצבן את החברים שלא מבינים במחשבים.
3. Volume Shadow Copy
נסיים בתרגילי כוח. VSS, או Volume Shadow Service, הנו שירות ב- Windows המבצע שמירה של בלוקים על הדיסק להעתק שנקרא VSC, או Volume Shadow Copy. זה אותו ההעתק שמופיע באשף שחזור המערכת למצב קודם, או בחירת גרסה קודמת של הקובץ. ה- VSC נמצא במקום שמור על הדיסק, שלא ניתן לראות אותו ב- Windows Explorer ללא יצירת קיצור דרך, אבל אפשר לגשת אליו – ניחשתם נכון – דרך UNC.
כדי לעבוד עם VSS נדרשות הרשאות אדמין. לאחר השגת הרשאות אלו על המערכת (עניין שטותי באמת) ושתילה של הקובץ הזדוני, אפשר ליצור VSC ואז למחוק את הקובץ. לאחר מכן, אפשר להריץ אותו ישירות מה- VSC. כך הקובץ לא יישאר בצורה גלויה על הדיסק והאנטיוירוסים לא יגלו אותו, מכיוון שהם לא סורקים VSC. בנוסף, ה- VSC הוא לקריאה בלבד, כך שגם אם תתבצע סריקה, אין דרך למחוק קובץ בודד, אלא רק ע"י מחיקה של כל ה- VSC בו הוא נמצא.
איך אפשר ליצור Volume Shadow Copy? במידה ומדובר בגרסת Windows למחשב אישי ולא לשרתים, אין דרך מהקופסה ליצור VSC משורת הפקודה, אלא רק דרך GUI (אמנם אפשר להציג VSC קיימים עם הפקודה vssadmin). אל דאגה, מרק באגט וטים טומס כבר חשבו על זה וכתבו כלי שנקרא vssown. הכלי סה"כ משתמש ב- API של Windows כדי לשלוט על VSS.
כעת, ניצור VSC חדש על כל הכונן C, כך שיכיל גם את הקובץ שנמצא בתיקיה c:\temp.
כעת אפשר למחוק את הקובץ המקורי ולהריץ את ההעתק שלו ישירות מה- VSC.
הגיוני שהאנטיוירוס היה אמור לזהות את הקובץ עם real time protection כשהוא מופעל מה- VSC, אבל בבדיקה עם וירוס eicar, אנטיוירוס Avira לא זיהה שום דבר.
וכן, גם פה יש צורך להשתמש ב- WMIC, כי הוא יודע לעבוד עם UNC.
יתרונות:
- מוסתר מפני המשתמש;
- מוסתר וחסוי מפני האנטיוירוסים בסריקת הקבצים על הדיסק;
- נראה שלא כל האנטיוירוסים מגלים את הקובץ בהגנת זמן אמת כשמופעל ישירות מה- VSC.
חסרונות:
- דורש הרשאות אדמין;
- ההעתק נדרס אחרי כמה זמן אם מופעל גיבוי אוטומטי של המערכת.
מסקנות:
- מאוד יעיל בהסתרת הקבצים. שימוש נוסף – הוצאת קבצים מוגנים לקריאה בזמן ריצת המערכת, כמו NTDS.DIT (הבסיס נתונים של Active Directory).
לסיכום
נראה כי כל שיטה בפני עצמה אינה שימושית נגד האנטיוירוסים. שתי השיטות הראשונות אינן יעילות, והשיטה השלישית דורשת הרשאות אדמין, כך שאם כבר הושגו הרשאות מהסוג הזה, אז גם ככה יש שליטה מלאה על המערכת.
עם זאת, במידה והמטרה היא גנבת מידע, או הסתרת פוגענים עד להודעה חדשה, נראה שיש שימוש בשיטות אלה. במיוחד שאפשר לעשות שילוב ביניהן.
6 ביוני 2014 בשעה 17:11
מעולה
11 בנובמבר 2014 בשעה 23:00
אשמח אם לא תשתמש באנימציות gif בתמונות שבהדגמות, זה מציק בעין (קשה לקרוא ולראות מה עשית, עדיף להגדיל את החלון ולצלם אותו גדול או לשים אותו פה נגלל)
תודה
18 בנובמבר 2014 בשעה 18:24
צודק, באמת קצת קשה לעקוב. איחדתי לתמונה אחת. תודה על ההערה!
9 ביוני 2024 בשעה 06:06
kraken13.at – kraken onion, kraken тор