- RootkitRevealer מזהה פערים בין ממשקי API של Windows לבין נתונים גולמיים כדי לחשוף בעיות נסתרות.
- מפרש תוצאות: מטא-נתונים של NTFS, סוגי אי-התאמה ברישום ובמערכת הקבצים.
- השתמש באפשרויות -a -c -m -r ובאפשרויות ההפעלה מרחוק עם PsExec; זה דורש מינימום תוצאות חיוביות שגויות כאשר המערכת במצב סרק.
- מניעה ותגובה: אתחול מאובטח/TPM, סריקות לא מקוונות, כלי אנטי-רוטקיט ושחזור מבוקר.

RootkitRevealer הוא אחד מאותם כלי עזר אגדיים שכל איש מקצוע בתחום Windows צריך להכיר; הוא נוצר על ידי צוות Sysinternals בראשותו של מארק רוסינוביץ', ולמרות שהוא צץ לפני שנים, הוא נותר כלי עזר להבנת כיצד לזהות את הפערים הנגרמים על ידי רוטקיטים בין מה שהמערכת מציגה למה שנמצא בפועל בדיסק.
בניגוד לסורקים אחרים, הוא אינו מחפש חתימות או דפוסים: הוא משווה תצוגה ברמה גבוהה של ממשק ה-API של Windows עם קריאה גולמית ברמה נמוכה של הדיסק והרישום. רעיון פשוט לכאורה זה מגלה מתי תוכנות זדוניות מנסה להסתיר קבצים, מפתחות או ערכים על ידי מניפולציה של קריאות מערכת.
מה זה RootkitRevealer ועל אילו מערכות הוא פועל?
זהו כלי מתקדם לגילוי סימנים של רוטקיטים הן במצב משתמש והן במצב ליבה . הוא פותח במקור עבור Windows XP ו-Windows Server 2003 (32 סיביות) והוא רשום בדרך כלל כחינם, באנגלית, וגודלו כ-231 KiB; רשימות רבות ציינו גם את תאימותו ל-Windows NT/2000/XP/Vista באותה תקופה.
עם הזמן, גרסת שורת הפקודה הטהורה שלה בוטלה מכיוון שכמה מחברי תוכנות זדוניות החלו לנטר את שם קובץ ההפעלה; כדי להימנע מכך, התוכנית מופעלת כשירות מעותק בעל שם אקראי של עצמה, מה שמקשה על הזיהוי לפי שם ומסבך את אספקת ממשק קונסולה 100%.
מהי רוטקיט? מושגים מרכזיים
המונח rootkit מתייחס לטכניקות ולמנגנונים המאפשרים לתוכנות זדוניות (וירוסים, סוסים טרויאניים, תוכנות ריגול וכו') להסתתר מהמשתמש ומכלי אבטחה . נבדלות מספר משפחות של תוכנות זדוניות: מתמשכות (שורדות אתחול מחדש), תושבות זיכרון (נעלמות לאחר אתחול מחדש), מצב משתמש ומצב ליבה, בין גרסאות מודרניות אחרות.
ערכת רוט במצב משתמש יכולה ליירט פונקציות כמו FindFirstFile/FindNextFile, או פונקציות המונה המקוריות של המערכת, כדי לסנן ערכים שיחשפו קבצים, תהליכים או מפתחות רישום שהשתנו . זה מונע מ-Explorer, משורת הפקודה או מעורכי הרישום לראות מה באמת קיים.
ערכות רוט במצב ליבה הולכות רחוק יותר: בנוסף ליירוט ה-API המקורי, הן יכולות לתמרן ישירות את מבני הליבה, למשל על ידי הסרת התהליך שלהן מרשימת התהליכים הפעילים כך שהוא לא יופיע במנהל המשימות או בסייר התהליכים למרות שהוא פועל.
ישנם מערכות היברידיות (חלקן מבוססות משתמש וחלקן מבוססות ליבה), קושחה (BIOS/UEFI ורכיבים אחרים), אתחול או ערכת אתחול (MBR/UEFI), וירטואליות (הממקמות את מערכת ההפעלה עצמה בתוך מכונה וירטואלית), ומטעיני אתחול מבוססי זיכרון (לא מתמידים). האחרונים יכולים להיות חמקמקים במיוחד, בעוד שקושחה ומטעיני אתחול ממשיכים להתקיים גם לאחר התקנה מחדש נקייה של מערכת הפעלה.
איך RootkitRevealer עובד
RKR משווה בין שתי תמונות מצב: תצוגה ברמה גבוהה של ממשק ה-API של Windows וקריאה גולמית ברמה נמוכה של קבצי אמצעי האחסון ותת-העץ של הרישום (כוורות). אם ערכת רוט מבצעת שינוי בקריאות ברמה גבוהה כדי להסתיר משהו, שינוי זה מתגלה מכיוון שמה שנמצא בדיסק וברישום אינו תואם את מה שה-API אומר שנמצא שם, מה שיוצר פערים הניתנים לאבחון.
תיאורטית, ערכת רוט יכולה גם לנסות להסתתר מפני RootkitRevealer על ידי יירוט קריאות הגולמיות שלה וכתיבה מחדש של הנתונים תוך כדי תנועה. כדי להשיג זאת, היא תזדקק לידע מעמיק בפורמטים של NTFS, FAT ו-Registry, ולהיות מסוגלת לשנות מבנים מבלי לגרום לחוסר עקביות או תופעות לוואי ברורות - הישג טכני מורכב ביותר שנצפה לעיתים רחוקות. למרות זאת, אין "גלאי אוניברסלי" חסין מטעויות: אפילו אתחול מסביבה חיצונית (לדוגמה, שימוש בהפצות לינוקס הטובות ביותר ) עלול להיפגע על ידי ארטיפקטים מתוחכמים ועמידים במיוחד . בפועל, הגישה החזקה ביותר היא לשלב ניתוח מקוון עם אימות לא מקוון בסביבות מהימנות.
דרישות, נהלים מומלצים וביצוע
כדי להפעיל סריקה זו, החשבון זקוק להרשאות "גיבוי קבצים וספריות", "טעינת מנהלי התקנים" ו"תחזוקת אמצעי אחסון" (אלה מוענקות כברירת מחדל למנהלי מערכת ב-Windows XP ואילך). כדי למזער תוצאות חיוביות שגויות, מומלץ להפעיל את הסריקה כאשר המערכת במצב מנוחה וללא יישומים פתוחים.
בהפעלה ידנית, פשוט לחצו על כפתור הסריקה. במהלך התהליך, התוכנית תספק עדכוני התקדמות ותפרט כל אי התאמה. ישנן שתי אפשרויות רלוונטיות: "הסתר קבצי מטא-נתונים של NTFS" (מופעלת כברירת מחדל, כדי להימנע מהצגת מטא-נתונים סטנדרטיים המוסתרים על ידי NTFS) ו"יומן סריקה" (מופעלת כברירת מחדל; ביטול הבחירה בו ידלוג על סריקת הרישום של Windows ).
עבור אוטומציה, הוא תומך בפרמטרים המאפשרים לך להתחיל, להתחבר ולצאת ללא התערבות: rootkitrevealer outputfile]. האפשרות -a מתחיל ומסתיים באופן אוטומטי; -c הפלט את התוצאה בפורמט CSV; -m מציג מטא-נתונים של NTFS; ו -r מבטל סריקת רישום. קובץ הפלט חייב להיות ב- נפח מקומי נגיש.
ביצוע מרחוק אפשרי עם PsExec. לדוגמה: psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log. עם -c, ההתקדמות אינה מוצגת וחוסר התאמות מודפס בקובץ CSV, מה שמקל על הייבוא בבסיסי נתונים או בסקריפטים.
פירוש התוצאות ופערים אופייניים
פערים מסוג "מוסתר מ-API של Windows" הם הנפוצים ביותר כאשר ערכת רוט מסתירה ערכים. אם לא הפעלת את תצוגת המטא-נתונים של NTFS, תראה הבדלים מכיוון ש-NTFS מסתיר את הקבצים הפנימיים שלו, כגון $MFT או $Secure , מה-API . חלק מתוכנות האנטי-וירוס גם מאחסנות נתונים בזרמים חלופיים ומסתירות אותם, מה שגורם לשגיאות דומות.
אלו הן חלק מהמטא-דאטה הסטנדרטיות המוגדרות ב-NTFS (Windows Server 2003): $AttrDef, $BadClus, $BadClus:$Bad, $BitMap, $Boot, $LogFile, $Mft, $MftMirr, $Secure, $UpCase, $Volume, $Extend, $Extend\$Reparse, $Extend\$ObjId, $Extend\$UsnJrnl, $Extend\$UsnJrnl:$Max, $Extend\$Quota.
RKR מקשר בין שלושה מקורות במערכת הקבצים: ממשק ה-API של Windows, טבלת הקבצים הראשית (MFT) ואינדקסים של ספריות בדיסק. שילובים כגון "גלוי ב-API אך לא באינדקס או ב-MFT", "גלוי ב-MFT אך לא ב-API" וכו', עשויים להופיע, במיוחד אם קובץ נוצר או נמחק במהלך הניתוח ויוצר חלון של חוסר עקביות זמני.
דוגמה ליצירה במהלך סריקה: C:\newfile.txt, בגודל 8 בתים, עם ההודעה "גלוי ב-API, אך לא באינדקס או ב-MFT". מקרים אלה אינם בהכרח מצביעים על רוטקיטים, אלא על שינויים בו זמנית בזמן שנבדק.
אם מופיעה ההודעה "הגישה נדחתה", משהו לא בסדר: RootkitRevealer משתמש במנגנונים כדי לגשת לכל קובץ, ספרייה או מפתח, כך שהודעה זו לא אמורה להופיע בתנאי ריצה רגילים.
ברישום, ישנן מספר פערים מעניינים: "אורך ה-API של Windows אינו עולה בקנה אחד עם הנתונים הגולמיים" (ניסיון אפשרי להסתיר את התוכן בפועל), "אי-התאמה בסוג" (לדוגמה, REG_SZ מפורסם אך הוא אמור להיות REG_BINARY), "שם המפתח מכיל ערכי NULL מוטמעים" (טכניקה ידועה המנצלת את ההבדל בין מחרוזות המסתיימות ב-NULL לבין מחרוזות עם ספירות). במקרה האחרון, כלי השירות RegDelNull של Sysinternals מסייע בניקוי מפתחות עם ערכי NULL מוטמעים.
"אי התאמה בנתונים" יכולה להתרחש אם ערך משתנה במהלך הסריקה (למשל, זמני פעולה של SQL Server כגון HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc). עליך לאמת שהערך שייך ל רכיבים לגיטימיים שמעדכנים נתונים בזמן אמת.
מקרה לדוגמה היה ערכת השורש HackerDefender: השירותים והמנהלי התקנים שלה היו בלתי נראים לממשק ה-API של Windows, אך היו נוכחים בקריאה הגולמית של כוורת הרישום; אותו הדבר היה נכון לגבי הקבצים שלה, שאותם זיהה הניתוח הישיר של מערכת הקבצים בדיסק.
שגיאות ובעיות נפוצות עם rootkitrevealer.exe בסביבות פורנזיות
ערכות זיהוי פלילי מסוימות (למשל, WinTaylor) מפרטות שגיאות אופייניות הקשורות ל- rootkitrevealer.exe , כגון: "לא יישום Win32 חוקי", "לא נמצא", "שגיאת יישום" או "בעיית אתחול". הודעות אלו מופיעות בדרך כלל במהלך התקנת המערכת, אתחול או כיבוי, או עקב התנגשויות עם יישומים מקומיים אחרים.
הסיבות הנפוצות ביותר כוללות קבצים פגומים או חסרים, ערכי רישום לא חוקיים, זיהומים של תוכנות זדוניות, הסרות לא שלמות או התנגשויות עם תוכנות אחרות. המקור יכול להיות ערך רישום פגום, מחיקה בשוגג על ידי כלי אחר, הורדה כושלת או זיהום קודם ששינה את הקובץ הבינארי.
כקוריוז לגבי המלאי, חלק מהרישומים מתעדים את קובץ ההפעלה בגודל משוער של 334.720 בתים ו- גיבובים כגון SHA‑1 ו-MD5 (לדוגמה, SHA‑1) d39e8a3fe92adc7d7fbc5293edf8a7b965484a59, MD5 ee738fe9bcdd605821002cec8c7206db) ו-CRC32 98b1af0b; הם מתייחסים גם ל- גרסה 2.1 באפליקציית המכולה שלה וקטגוריה "ערכת כלים פורנזית/מערכת הפעלה".
שיטות לגילוי ותגובה של Rootkit
זיהוי ערכת רוטקיט אינו תמיד דבר של מה בכך. מעבר לכלים ספציפיים, טכניקות כמו ניתוח חתימות של איומים ידועים, השוואה קרה של מבנים, חיפושי זיכרון אחר ווים ושינויים, וסקירת קבצי זיכרון לאחר קריסות משולבות כדי לזהות מודולים חשודים . מקובל גם להסתמך על מערכות מניעת חדירות (IPS) כדי להגן על הרשת ולהפחית וקטורי הדבקה.
בין כלי השירות המתמחים: GMER (לזיהוי תהליכים נסתרים ושינויים בליבת המערכת), Kaspersky TDSSKiller (במיוחד לזיהוי ערכות אתחול וערכות רוט בליבת המערכת), Malwarebytes Anti-Rootkit, Microsoft Defender Offline (לסריקה לפני הפעלת Windows) ו-RogueKiller. הפעלת כלי השירות הללו מדיסק און קי אמין שניתן לאתחל ממנו או במצב בטוח מפחיתה את משטח ההתקפה.
עבור איומי אתחול או קושחה, מומלץ להשתמש במדיית הצלה כגון Kaspersky Rescue Disk, לשחזר את ה-MBR באמצעות bootrec /fixmbr במידת הצורך ובמקרים חמורים, יש לעדכן/להעביר את ה-BIOS/UEFI לגרסה נקייה מהיצרן כדי למגר את התמדה ברמה נמוכה.
ניטור עם Sysinternals הוא בעל ערך רב: Process Monitor (ProcMon) לפעילות תהליכים וקבצים, Autoruns לבדיקת מה נטען בעת האתחול, ו- RootkitRevealer לפערים ברמה גבוהה/נמוכה. פלטפורמות SIEM כמו Wazuh וטלמטריה בסביבות ארגוניות יכולות לחשוף התנהגויות רשת בלתי צפויות או שינויים בשלמות.
אם אושרה הדבקה, הרצף הסביר הוא: ניתוק המכונה מהרשת, סריקה מסביבה חיצונית, הערכת תקינות האתחול/קושחה, ואם אין ערבויות, גיבוי נתונים, ניקוי מלא של הדיסק (כלים כגון DBAN) והתקנה מחדש ממדיה מאומתת, ולאחר מכן הפעלת אמצעים כגון אתחול מאובטח ו-TPM.
מניעה: הגנה סבירה מפני רוטקיטים
מניעה היא המפתח. שמרו על המערכת שלכם מעודכנת, התקינו תיקונים לתוכנות של צד שלישי, הימנעו מקבצי הרצה ממקורות מפוקפקים, ואל תשתמשו בקראקים או ב-keygens: הם וקטור מועדף לאריזת תוכנות rootkit , כמו למשל שחרור וטעינת תוכנות .
השבת הפעלה אוטומטית של USB, סרוק כוננים חיצוניים לפני פתיחתם, ובסביבות ארגוניות, הגבל או חסום פורטים והפעל חומות אש במידת הצורך. עבוד עם חשבונות משתמשים ללא הרשאות, יישם את עקרון ההרשאות הנמוכות ביותר ודרוש אישורי מנהל עבור שינויים קריטיים, תוך הפחתת הסבירות להסלמות שקטות.
בחומרה תואמת, הפעל את Secure Boot ו-TPM מ-UEFI כדי להגן על שרשרת האתחול ואטימת המפתחות. שמור על גיבויים לא מקוונים או בלתי ניתנים לשינוי באופן קבוע והשתמש בתמונות מצב/נקודות שחזור כדי לקצר את זמן ההתאוששות אם משהו משתבש.
כיצד מותקנים רוטקיטים: דרופרים, טוענים ווקטורים
תוקפים בדרך כלל מפיצים רוטקיטים כאיומים משולבים: "dropper" (מעביר את החבילה) ו-"loader" (מטען) שמנצל פגיעויות (כגון overflows buffer) כדי להטמיע את השתל במקום שאסור לו. זה מוסווה כאימיילים של פישינג , מתקינים מזויפים או עדכונים הונאה.
וקטורים קלאסיים כוללים חטיפת לקוחות העברת הודעות כדי להפיץ קישורים זדוניים, גרימת תוכנות טרויאניות בפורטלי הורדה, שימוש בתוכנות זדוניות אחרות כנשאות, והטמעה במסמכי תוכן עשיר (למשל, קבצי PDF מסוימים) שכאשר הם נפתחים, מפעילים אוטומטית את הפונקציה 'dropper'.
סימני תקיפה ורמזים לגילוי
המטרה של רוטקיט היא להישאר בלתי מזוהה. למרות זאת, ייתכן שתבחינו בשינויי תצורה ללא התערבות המשתמש, הפרעות רשת חריגות עקב תעבורה נסתרת, תהליכים לא ידועים, שירותים שלא ניתן לסגור וכלי אבטחה מושבתים ללא הסבר.
רמז נוסף הוא המידע הסותר בין כלי עזר המפרטים קבצים, תהליכים או מפתחות רישום באמצעות נתיבים שונים (קריאה באמצעות API לעומת קריאה גולמית). כאן באה לידי ביטוי גישות כמו RootkitRevealer: אותו אובייקט ש"נמצא" על הדיסק אך "לא נמצא" לפי ה-API מצביע על מניפולציה.
סוגים עיקריים של רוטקיטים
מצב משתמש: אלה פועלים ברמת התהליך והספרייה. הם יציבים יותר וקלים יותר לזיהוי, למרות שהם יכולים להסתיר קבצים, תהליכים ומפתחות. דוגמה היסטורית קלאסית היא HackerDefender.
מצב ליבה: וירוסים אלה שוכנים בליבת הווירוסים, עם שליטה מלאה וחשאיות רבה; קשה להשמיד אותם ונוטים לגרום לחוסר יציבות אם הם מתוכננים בצורה גרועה. דוגמאות למשפחה זו: TDL/Alureon באבולוציה שלה.
היברידיות: משלבות רכיבי משתמש ורכיבי ליבה כדי לאזן בין הסתרה ליציבות, וכתוצאה מכך הן פופולריות בקרב תוקפים בשל הרבגוניות המעשית שלהן.
קושחה/ערכות אתחול: אלו מדביקות את ה-BIOS/UEFI או את סקטור האתחול (MBR/UEFI) כדי להיטען לפני מערכת ההפעלה. טכנולוגיות כמו אתחול מאובטח הפכו ערכות אתחול קלאסיות רבות למיושנות, אך צצו שתלי UEFI מודרניים.
וירטואלי ומבוססי זיכרון: VMBRs טוענים היפר-ויזור מתחת למערכת ההפעלה ומווירטואליזים אותו; VMBRs מבוססי זיכרון נמצאים רק ב-RAM ונעלמים לאחר אתחול מחדש, שימושי מאוד לפעולות זמניות.
דוגמאות וכרונולוגיה מודגשת
ערכות הרוטקיט הראשונות עבור SunOS פותחו בשנות ה-90; בשנת 1999, גרג הוגלונד תיאר את NTRootkit (Windows, מצב ליבה), ובשנת 2003 הופיע HackerDefender (Windows 2000/XP, מצב משתמש), מה שהוביל ל"משיכת חבל" עם כלים כמו RootkitRevealer.
בשנת 2004, מה שמכונה "ווטרגייט היווני" השתמש בערכת רוט כדי לפרוץ ליותר מ-100 טלפונים ברשת GSM; בשנת 2005 התגלה ש- Sony BMG כללה ערכת רוט נגד פיראטיות בכמה תקליטורים, מה שעורר מחלוקת ביטחונית ענקית.
מאז 2008, ערכות אתחול כמו TDL (TDL-1 עד TDL-4) התפתחו; בשנת 2009, "מאקיאוולי" הוכיח שגם macOS (אז Mac OS X) לא היה חסין; בשנת 2010, Stuxnet השתמשה ברכיבי רוטקיט כדי לחבל במערכות תעשייתיות איראניות.
בשנת 2012 הופיעה Flame , נוזקה מודולרית מסיבית ; בשנת 2018, LoJax הפכה לערכת השורשים הראשונה של UEFI שזוהתה בטבע; ובשנת 2019, Scranos שילבה גניבת אישורים ויצירת הכנסות נסתרות עם חוות קליקים באמצעות דפדפנים שנפגעו על ידי מספר רב של משתמשים.
משאבים וקריאה מומלצת
החקירה של מארק רוסינוביץ' על מקרה סוני והמאמר שלו "Unearthing Rootkits" ב-Windows IT Pro עוזרים להבין את התופעה והטכניקה שמאחורי RKR; הספר "Rootkits: Subverting the Windows Kernel" מאת גרג הוגלונד וג'יימי באטלר הוא החיבור המעמיק ביותר בנושא.
ארכיון פראק, "אמנות המחקר וההגנה על וירוסי מחשב" מאת פיטר סור, "תוכנות זדוניות: לחימה בקוד זדוני" מאת אד סקאודיס ולני זלצר, וסדרת "התוכנות הפנימיות של Windows" (מהדורה רביעית ואילך) הם חומרים חיוניים לכל מי שרוצה להתעמק בארכיטקטורה ובאמצעי נגד רציניים.
RootkitRevealer במערכת האקולוגית של Sysinternals
RKR מתקיים במקביל עם כלי עזר אחרים של Sysinternals שימושיים במחקר: AccessChk ו-AccessEnum (הרשאות אפקטיביות), Autoruns (כל מה שמתחיל במערכת), Process Explorer (מי פתח מה ועם איזה DLL), PsExec/PsTools (הפעלה וניהול מרחוק), PsLogList ו-PsLoggedOn (אירועים והפעלות), Sigcheck (חתימות דיגיטליות), SDelete (מחיקה מאובטחת), ShareEnum (משאבים משותפים) ו- Sysmon (טלמטריה מתקדמת ביומן האירועים).
נפוץ למצוא אזכורים ל-"Download 1.71" במאגרים היסטוריים, כמו גם ל-"Run now" דרך Sysinternals Live. למרות שהפרויקט ותיק, הגישה שלו - השוואה בין גישות ברמה גבוהה לגישות ברמה נמוכה - נותרה המפתח לציד rootkit.
RootkitRevealer הוא, מעל לכל, שיעור בהנדסה הגנתית: אם משהו משפיע על מה שה-API מחזיר, צריך להסתכל מתחת ולהשוות אותו למה שקיים בפועל בדיסק וברישום; בעזרת שיטות עבודה מומלצות, כלים מתאימים ואימות לא מקוון בעת הצורך, ניתן לחשוף מה מנסה להסתתר במקום שאנחנו חושבים שאף אחד לא יחפש.