روت کیت (Rootkit) یک برنامه یا بیشتر اوقات مجموعهای از ابزارهای نرم افزاری مخرب است که به یک نفوذگر امکان دسترسی از راه دور و کنترل سیستم هدف را میدهد. به کلام سادهتر روت کیتها (Rootkit) ابزارهایی هستند که پس از دسترسی گرفتن با یوزر Root، بر روی سیستم هدف، این دسترسی را حفظ میکنند.
روتکیتها از لحاظ ساختاری بسیار شبیه به بکدورها (Backdoor) هستند اما بسیار پیشرفتهتر از بکدورها میباشند. نکته قابل ذکر دیگر این است که روتکیتها به صورت مخفی فعالیت میکنند و در بسیاری اوقات، ادمین سیستم متوجه حضور روت کیت بر روی سیستم نمیشود. در گذشته از روت کیتها برای مقاصد درست و به منظور اتصال به سیستم کاربر به منظور پشتیبانی از راه دور استفاده میشد اما اکنون نفوذگران با استفاده از روت کیتها، سطح دسترسی بالای خود را از سیستم، به منظور اتصالهای بعدی و سو استفادهها، حفظ می کنند.
روتکیتها میتوانند به روشهای مختلفی بر روی سیستم نصب شوند از جمله حملات فیشینگ یا تاکتیکهای مهندسی اجتماعی به منظور فریب کاربران در دادن اجازه فعالیت روت کیت بر روی سیستم هایشان. پس از نصب، روت کیت یک دسترسی از راه دور به نفوذگر میدهد تا تقریبا بر تمام قسمتهای سیستم عامل دسترسی داشته باشد و آن را کنترل کند. برنامههای آنتی ویروس قدیمیتر اغلب برای شناسایی روت کیتها تلاش میکردند، اما بیشتر برنامههای ضد ویروس امروز توانایی اسکن و حذف روت کیتهای مخفی شده در یک سیستم را دارند. البته ذکر این نکته نیز واجب است که روت کیتهای خصوصی نیز وجود دارند که خود را از دید آنتی ویروسها مخفی میکنند.
انواع روتکیت
بهطور کلی و در دنیای نفوذگران دو نوع روت کیت وجود دارد:
- روت کیت سنتی: این روت کیتها بعد از نصب فایلهای سیستم عامل سیستم هدف را با فایلهای خود جایگزین می کنند مانند فایلهای netstat، ls و … نمونههایی از روت کیت سنتی عبارتند از: Tronxit , Linux rootkit5
- روت کیت کرنل: این روت کیتها بعد از نصب، کرنل سیستم عامل سیستم هدف را با کرنل خود جابجا میکنند. نمونههایی از روت کیت کرنل برای سیستم لینوکس Knrak و Adore، برای سیستم ویندوز Win-He4hook، Vanquish و …
تفاوت اساسی این دو نوع روت کیت در این است که در روت کیت سنتی، اگر ادمین با nmap سیستم خود را اسکن کند، پورت باز را میفهمد و متوجه حضور روت کیت بر روی سیستم میشود اما با روت کیت کرنل وقتی اسکن هم کند، چون کرنل سیستم عامل جدا شده، نمیتواند متوجه حضور روت کیت روی سیستم شود.
تشخیص روت کیت بسیار دشوار است و به صورت واقع بینانه هیچ کالای تجاری برای تشخیص ۱۰۰% آنها وجود ندارد. اما با این حال، چندین روش برای تشخیص و پیدا کردن روت کیت وجود دارد. یکی از این روشها که بسیار میتواند کارآمد باشد، روش مبتنی بر رفتار است. به عنوان مثال، رفتارهای عجیب بر روی سیستم و یا تغییرات غیر منتظره بر روی سرویسهای سیستم.
تفاوت روتکیت و بکدور
بالاتر ذکر کردیم که روت کیت ساختاری شبیه به بکدورها دارد، حال تفاوت های این دو را ذکر می کنیم:
- بکدورها با هر یوزری می توانند اجرا شوند اما ورت کیت ها فقط با یوزر روت می توانند اجرا شوند.
- بکدورها بعد از ری استارت سیستم از بین می روند اما روت کیت ها بعد از ری استارت هم کار می کنند.
- بکدورها با هر یوزری می توانند نصب شوند و دسترسی همان یوزر را هم می دهند اما روت کیت ها فقط با یوزر روت نصب می شوند و دسترسی یوزر روت را هم می دهند.
- به منظور اتصال، به بکدور ها از طریق تلنت متصل می شویم اما به روت کیت ها از طریق SSH متصل می شویم.
مهمترین راه دفاع در برابر روت کیت ها، محافظت از یوزر روت می باشد. همانطور که در بالا ذکر شد روت کیت ها فقط با یوزر روت نصب می شوند و دسترسی روت را به ما می دهند. حال اگر ما بتوانیم از این یوزر محافظت کنیم و آسیب های جدید سیستم عامل مان را شناسایی و آنها را ازبین ببریم، می توانیم تا حدود زیادی از نصب روت کیت در سیستم جلوگیری کنیم.
حال اگر هکر توانست نفوذ کند و روت کیت را نصب کند چه کنیم؟ یکی از راه ها استفاده از دستور Echo استف تعداد بسیار کمی از روت کیت ها دستور Echo را که برای لیست کردن محتویات یک دایرکتوری می باشد، تروا می کنند و اکثر روت کیت ها بر روی تروا کردن ls تمرکز کرده اند. با این دستور می توان اگر چیزی مخفی در دایرکتوری باشد را دید. اما بعلت اینکه وقت زیادی صرف می شود، زیاد موثر نیست.
بهترین راه : امروزه ابزارهای مختلفی برای آنالیز برنامه Rootkit/bin/login وجود دارد که مشخص می کند آیا روت کیت شناخته شده ای نصب شده است یا نه. برنامه ی Chrootkit ابزار جالبی در این زمینه است.
البته ذکر این نکته واجب است که اگر سیستم عامل شما به روت کیت آلوده شد، بهترین کار برای از بین بردن آن فرمت هسته و نصب مجدد سیستم عامل است.