Rootkit

רוטקיט (באנגלית: Rootkit) הוא אוסף של תוכנות מחשב, בדרך-כלל זדוניות, שנועדו לקבל שליטה על מחשב או על חלקים ממערכת ההפעלה שלו מבלי שתוכנות או משתמשים אחרים ידעו מכך.

פירוש השם Rootkit הוא הלחם בסיסים של המילים Root (מילה המציינת משתמש בעל הרשאות ניהול מערכת במערכות הפעלה כגון לינוקס) ו-Kit (עֶרְכָּה).

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

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

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

פעולות שיבוש אלה עשויות להתבצע במספר רמות:

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

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

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

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

אופן המימוש של רוטקיט מסוג זה הוא ביצוע Hook-ים בתווך שבין קריאות ה-API ברמת ה-User mode לקריאות המקבילות ברמת ה-Kernel mode. לרוב, מתבצע Hook זה ברמת ה-Service Description Table.

 Library level - שכבת הספרייה, User mode 
במקרה זה, מדובר בטלאי שנועד להחליף את קריאות מערכת ההפעלה, בקריאות חלופיות, השייכות לרוטקיט עצמו. קריאה חלופית זו, תסתיר את זהותו ומיקומו של הרוטקיט. פעולה זו מתבצעת לרוב על ידי שינויים במרחב הזיכרון של תהליך מסוים במערכת ההפעלה, המבצעים Hook-ים על קריאות ה-API של התהליך. פעולה זו מתבצעת לרוב על ידי Import Table Hooking או על ידי Detour.

קיימים מספר הבדלים משמעותיים בין פיתוח הרוטקיט ברמת הליבה לפיתוח ברמת הספרייה:

 מימוש פעולות הרוטקיט ברמת ה-User mode פשוט באופן משמעותי מאשר פיתוח קוד ברמת הליבה.
 ביצוע Hook ברמת הספרייה משפיע על התהליך בו הוא התבצע בלבד, לעומת Hook ברמת הליבה המשפיע בצורה רחבה על כל המערכת.
 פעולות מסוג זה ברמת ה-User mode נחשבות חשודות, ונתפסות לרוב על ידי תוכנות אנטי וירוס ו-Anti-Spyware. זאת לעומת פעולות מסוג זה ברמת הליבה, אשר לרוב אינן מנוטרות, ויכולות להתבצע ללא הפרעה.

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

 בדיקת קבצים מקומיים והשוואת אלגוריתם גיבוב בטוח (SHA-1) שלהם עם אלה הנמצאים במסד הנתונים המקוון.
 בדיקת הרשאות.
 חיפוש אחר קבצים מוסתרים.
 איתור מחרוזות חשודות.
 חיפוש ביטויים רגולרים בתוך מידע טקסטואלי.
 חיפוש מידע בתהליכי מערכת.
"הריגת" קבצים חשודים.

 מערכות גילוי והתראה 

 Rkhunter
 Chkrootkit

 WindowsSCOPE
RootkitRevealer
 Sophos Anti-Rootkit
 GMER
 F-Secure

 ראו גם 

דלת אחורית
בדיקת חדירות

 קישורים חיצוניים 

מידע אודות Rootkit, אתר Rootkitanalytics (אנגלית)
מאמר אודות רוטקיטים מסורתיים, אתר Informit (אנגלית)
מאמר בנושא Kernel-Mode Rootkits, אתר DigitalWhisper (עברית)
מה זה Rootkit? איך נמנעים ואיך מחסלים? - אתר Pcmagazine (עברית)


 הערות שוליים 

קטגוריה:תוכנות זדוניות