Rootkit
יש לשכתב ערך זה. הסיבה היא: שגוי במידה רבה.
| ||
יש לשכתב ערך זה. הסיבה היא: שגוי במידה רבה. |
Rootkit הוא כינוי לתוכנה המאפשרת גישה מתמשכת ובעלת הרשאות למחשב, ובו בעת מסתירה את נוכחותה על ידי שינוי פעולות תקינות של מערכת ההפעלה או של תוכנה אחרת הפועלת על המחשב. בדרך כלל, האקר מתקין rootkit על מחשב לאחר שהשיג גישה בעלת הרשאות משתמש, אם בעזרת ניצול חולשה ידועה במערכת, או השגת סיסמה מתאימה. לאחר התקנתה, ה-rootkit מאפשרת לתוקף להסוות את החדירה ולהשיג הרשאות תוך כדי עקיפת תהליכי אימות וזיהוי רגילים. למרות שתוכנות אלה משמשות למגוון רחב של מטרות הן צברו מוניטין רע של נוזקות (Malware), המפקיעות משאבי מחשב וגונבות סיסמאות ללא ידיעת מפעילי המערכת. תוכנות אלו מסוגלות לתקוף קושחה, מערכת לניהול מכונות וירטואליות וליבה של מערכת הפעלה.
המונח "Rootkit" הוא הלחם של המילה root, הרשאת הניהול הגבוהה ביותר במערכות הפעלה מסוג יוניקס, והמילה kit (בעברית: ערכה) אשר מתייחסת לאוסף רכיבי התוכנה אשר מרכיבים את הכלי.
סוגי ה-Rootkit-ים
על מנת להסוות את הימצאותו, מבצע ה-Rootkit מספר פעולות כדי לשבש את הקריאות לפונקציות מערכת ההפעלה המאפשרות ניטור ותחזוקה. פעולות עליהן נהוג להשפיע הינן גישה לקבצים על הכונן הקשיח והימצאות של תהליכונים (Threads) המבוצעים על ידי המעבד.
פעולות שיבוש אלה עשויות להתבצע במספר רמות:
Virtualised - השכבה הווירטואלית
סוג זה נחשב לרמה הנמוכה ביותר שקיימת כיום. סוג זה מתאר Rootkit שמשנה את רצף הפעולות והתוכנות שעולות באתחול המחשב, תוך החלפת טעינת מערכת ההפעלה הקיימת, במערכת הפעלה וירטואלית משלו. מערכת הפעלה מדומה זו מאפשרת לRootkit להשתלט על כל רכיבי החומרה וכמובן התוכנה במחשב.
באופן זה, משמש ה-Rootkit כחוצץ בין מערכת ההפעלה לבין העולם האמיתי. מערכת ההפעלה לא מקבלת מידע אמין לגבי המידע הנמצא על הכונן הקשיח, וזאת באופן שלא מאפשר לה לדעת על כך.
Kernel Level - שכבת הליבה, הגרעין
בסוג זה, מוחלפת ליבת מערכת ההפעלה בליבה חלופית המאפשרת פתיחת פרצה במערכת ההפעלה לשימוש עתידי של הפורץ. שיטה זו מושגת בדרך כלל על ידי הוספת קוד חדש שיטען ביחד עם ליבת מערכת ההפעלה הקיימת, סוג זה יכול להחבא בין מנהל ההתקנים של מערכת ההפעלה, או בכל תהליך או רכיב שעולה בעת אתחול מערכת ההפעלה.
על מנת לממש סוג כזה של Rootkit, יש לכתוב Driver, דבר הכרוך בסיבוך רב, ומועד להימצאות באגים רבים. חשוב לציין שבאג המתרחש ברמת ה-Kernel גורם לרוב ל-Blue Screen ולקריסה מיידית של המחשב. לכן, סוג זה של Rootkit ייתכן ויגרום לאי יציבות של מערכת ההפעלה, אי יציבות שיכולה להתבטא בקריסת מערכת ההפעלה.
אופן המימוש של Rootkit מסוג זה הינו ביצוע Hook-ים בתווך שבין קריאות ה-API ברמת ה-User mode לקריאות המקבילות ברמת ה-Kernel mode. לרוב, מתבצע Hook זה ברמת ה-Service Description Table
Library level - שכבת הספרייה, User mode
במקרה זה, מדובר בטלאי שנועד להחליף את קריאות מערכת ההפעלה, בקריאות חלופיות, השייכות ל-Rootkit עצמו. קריאה חלופית זו, תסתיר את זהותו ומיקומו של ה-Rootkit. פעולה זו מתבצעת לרוב על ידי שינויים במרחב הזיכרון של תהליך מסוים במערכת ההפעלה, המבצעים Hook-ים על קריאות ה-API של התהליך. פעולה זו מתבצעת לרוב על ידי Import Table Hooking או על ידי Detour.
קיימים מספר הבדלים משמעותיים בין פיתוח ה-Rootkit ברמת ה-Kernel לפיתוח ברמת ה-Library:
- מימוש פעולות ה-Rootkit ברמת ה-User mode הינו פשוט באופן משמעותי מאשר פיתוח קוד ברמת ה-Kernel.
- ביצוע Hook ברמת ה-Library משפיע על התהליך בו הוא התבצע בלבד, לעומת Hook ברמת ה-Kernel המשפיע בצורה רחבה על כל המערכת.
- פעולות מסוג זה ברמת ה-User mode נחשבות חשודות, ונתפסות לרוב על ידי תוכנות אנטי וירוס ו-Anti-Spyware. זאת לעומת פעולות מסוג זה ברמת ה-Kernel, אשר לרוב אינן מנוטרות, ויכולות להתבצע ללא הפרעה.
השימוש ב-Rootkit
בדרך כלל יעשה השימוש בRootkit לצורכי השתלטות עוינת על מחשב והחזקת השליטה בו לאורך זמן, אם לשם הסתרת רכיבי ריגול ושימוש במחשב כזומבי, ואם לשם הסתרת פרצות במערכת ההפעלה. אולם גם קיימים שימושים אחרים כגון הגנה על זכויות יוצרים[1]. דוגמה הפוכה, הינה שימוש ב Rootkit כדי לעקוף הגנות DRM.
שיטות גילוי וזיהוי Rootkit
ישנן תוכנות המשוות בין הפלט של קריאה לפונקציות של התוכנה לבין הפלט של הקריאה לפונקציות של ליבת מערכת ההפעלה. השוואה בין הפלטים יכולה לרמוז על שיבוש של פונקציה או מספר פונקציות על ידי ה Rootkit. דוגמה לתוכנה שעובדת בשיטה כזו היא RootkitRevealer של Sysinternals.
יש תוכנות אשר מנסות לזהות שינוים בפונקציות של המערכת ובודקות האם הפונקציות האלה שוכתבו על ידי קוד זדוני שמנסה לשבש את פעולתם. דוגמה לתוכנה כזו היא BlackLight של חברת F-secure.
כמו כן קיימות תוכנות אשר מנסות לזהות שינויים בקובצי מערכת רגישים תוך שימוש ב "טביעות-אצבע" (Fingerprints) של הקבצים וחישוב ערכי פונקציית הגיבוב (Hash) של כל קובץ. דוגמה לתוכנה כזו היא Tripwire אשר נפוצה במערכת יוניקס ולינוקס.