RootKitها برنامه هایی هستند که از نظر ساختار کاری بسیار شبیه Trojan  ها و Backdoor  ها هستند ولی با این تفاوت که شناسایی RootKit  بسیار مشکلتر از درب های پشتی است زیرا RootKit  ها علاوه بر اینکه به عنوان یک برنامه کاربردی خارجی مثل شنونده Netcat  و ابزارهای درب پشتی مثل Sub7  بر روی سیستم اجرا می شوند بلکه جایگزین برنامه های اجرایی مهم سیستم عامل و در گاهی مواقع جایگزین خود هسته کرنل می شوند و به هکرها این اجازه را می دهند که از طریق درب پشتی و پنهان شدن در عمق سیستم عامل به آن نفوذ کنند و مدت زیادی با خیال راحت با نصب ردیابها ( Sniffer  ) و دیگر برنامه های مانیتورینگ بر روی سیستم اطلاعاتی را که نیاز دارند بدست آورند. در دنیای هکرها دو نوع RootKit  اصلی وجود دارد که هر کدام تعریف جداگانه ای دارند.

1- RootKit  سنتی:

RootKit  های سنتی با شناسایی اولین RootKit  بسیار قدرتمند در اویل سال  1990  در طول یک دهه گسترش پیدا کردند و تا آنجا پیش رفتند که امروزه انواع مختلفی از RootKit  های سنتی وجود دارند که به طور عملی خودشان نصب شده و به هکرها اجازه می دهند که به سرعت سیستم قربانی را فتح کنند. RootKit  های سنتی برای سیستم عامل های مختلف نوشته شده اند ولی به طور سنتی بر روی سیستم های یونیکس مثلHP-UX - AIX - Linux - Solaris - SunOS  و از این قبیل تمرکز کرده اند. ولی برای ویندوزهای سرور مثل NT/2000  نیز RootKit  هایی نوشته شده اند که جایگزین کتابخانه های پیوند پویا ( DLL  ) شده و یا سیستم را تغییر می دهند ولی تعداد زیادی از RootKit  ها برای سیستم های یونیکس نوشته شده اند.

RootKit  ها اجازه دسترسی Root  یا Administrator  را به ما نمی دهند و ما هنگامی قادر به نصب آْنها بر روی یک سیستم هستیم که دسترسی ریشه ای و مدیر یک سیستم را توسط روش های دیگری مثل سرریز بافر ... به دست آورده باشیم. بنابراین یک RootKit  یک سری ابزارهایی است که با پیاده سازی یک درب پشتی ( Backdoor  ) و پنهان کردن مدارک استفاده از سیستم و ردپاها به هکر اجازه نگهداری دسترسی سطح ریشه را می دهد. ساختار کار تروجن ها به این صورت است که فایلی را در داخل هسته سیستم مثل پوشه System32  اضافه می کند و این فایل تمامی پسوردهای قربانی را Log  کرده و برای هکر می فرستد و یا با باز کردن پورتی اجازه ورود هکر را از طریق پورت باز شده می دهد ولی RootKit  های سنتی به جای اینکه فایلی در هسته سیستم قربانی اضافه کنند، سرویسها و فایل های اصلی و مهم سیستم عامل قربانی را با یک نسخه تغییر یافته آن که عملیاتی مخرب انجام می دهد جایگزین می کنند. برای مثال RootKit  های معروف در سیستم های یونیکس برنامه /bin/loginرا که یکی از اساسی ترین ابزارهای امنیتی در Unix  است را با یک نسخه تغییر یافته که شامل یک کلمه عبور درب پشتی برای دسترسی سطح ریشه می باشد عوض می کنند. سیستم های یونیکس از برنامه /bin/login  برای جمع آوری و تست UserID  های کلمات عبور استفاده می کند. /bin/login  شناسه کاربری و پسورد تایپ شده توسط کاربر را با فایل پسوردها مقایسه می کند تا تعیین کند که پسورد داده شده توسط کاربر صحیح است یا خیر. اگر پسورد داده شده درست باشد روتین /bin/loginبه آن User  اجازه ورود به سیستم را می دهد. خب با این توضیحی که دادیم فرض کنید که یک RootKit  این برنامه را با برنامه نوشته شده خود عوض کند. اگر هکر از پسورد ریشه درب پشتی استفاده کند، برنامه /bin/login  تغییر یافته و اجازه دسترسی به سیستم را می دهد. حتی اگر مدیر سیستم پسورد ریشه اصلی را عوض کند، هکر هنوز می تواند با استفاده از کلمه عبور ریشه درب پشتی به سیستم وارد شود. بنابراین یک روتین RootKit ، /bin/login  یک درب پشتی است زیرا می تواند برای دور زدن کنترل های امنیتی نرمال سیستم مورد استفاده قرار گیرد. علاوه بر آن یک اسب تروا هم هست زیرا فقط چهره آن یک برنامه نرمال و زیبای Login  است ولی در اصل یک Backdoor  است. اکثر RootKit  ها سرویس ها و برنامه هایی مثل DU - Find - Ifconfig - Login - ls - Netstat - ps  را با RootKit  خود جابه جا می کنند. هر یک از این برنامه های سیستمی با یک اسب تروای منحصر به فرد جایگزین می شود که عملکرد آنها شبیه به برنامه عادی است. همه این برنامه های Unix  مانند چشم و گوش های مدیران سیستم می باشد که تعیین می کنند چه فایل ها و سرویس هایی در حال اجرا هستند. هکرها با پوشاندن چشم و گوشهای مدیران سیستم که توسط RootKit  انجام می شود می توانند به صورت موثری حضورشان را در یک سیستم مخفی نگه دارند. linux RootKit 5 ( lrk5  ) و Tornkit  دو نمونه از RootKit  های سنتی هستند که برای سیستم های Linux  و Solaris  نوشته شده اند و در سایت آشیانه می توانید این RootKit  ها را پیدا کنید. این RootKit  ها به محض نصب شدن در سیستم قربانی خود را با سرویس های حیاتی و مهم سیستم عامل که در بالا ذکر شد جایگزین می کنند.

2- RootKit  سطح هسته :

این نوع از RootKit  ها نسبت به نوع سنتی بسیار حرفه ای تر هستند و از نظر سطح پنهان سازی بسیار پا را فراتر از نوع سنتی گذاشته اند زیرا این RootKit  ها در سطح ریشه پیاده سازی می شوند و این کار شناسایی و کنترل کردن آنها را بسیار مشکل تر کرده است. RootKit  های سطح هسته به ما کنترل کاملی از سیستم اصلی و یک امکان قدرتمند برای جایگیری می دهد. یک هکر با ایجاد تغییرات اساسی در خود هسته، می تواند سیستم را در سطحی بسیار اساسی کنترل کرده و قدرت زیادی برای دسترسی به درب پشتی و پنهان شدن در ماشین را به دست آورد. خود هسته در حالی که یک کرنل زیبا و کارآمد به نظر می رسد تبدیل به یک اسب تروا می شود و در حقیقت Kernel  فاسد می شود ولی صاحب سیستم از این موضوع بی خبر می ماند. درحالی که یک RootKit  سنتی جایگزین برنامه های سیستمی حیاتی مثل برنامه های ifconfig - ls  ... می شود ، یک RootKit  سطح هسته در حقیقت جایگزین هسته می شود و یا آن را تغییر می دهد. تمامی فایل ها - دستورها - پردازشها و فعالیت های شبکه ای در سیستم آلوده به RootKit  هسته پنهان می شوند و تمامی اعمال به سود هکر ضبط می شود. اغلب RootKit  های سطح ریشه توسطLKM  ها پیاده سازی می شوند. نصب RootKit  های سطح هسته ای که توسطLKM  ها پیاده سازی شده باشد، بسیار راحت است. برای مثال برای نصبKnrak Rootkit  که برای هسته لینوکس نوشته شده است، یک هکر که با Account  سطح ریشه یا همان Root  به آن سیستم وصل است تنها کافی است insmod knark.o, را تایپ کند و ماژول نصب می شود و منتظر دستورات هکر می ماند و حتی نیازی به بوت کردن دوباره سیستم هم ندارد. RootKit  های سطح هسته برای ویندوز NT  هم وجود دارند که یک Patch  را بر روی خود هسته اجرایی ویندوز NT  بدون استفاده ازLKM  ها اعمال می کند. چند تا از معروف ترین RootKit  های سطح هسته Knrak  و Adore  برای سیستم های لینوکس ، Plasmoid  برای سیستم های Solaris  و RootKit  سطح هسته ویندوز NT  برای سیستم های سرور ویندوز نام دارند که همگی در لینک RootKit  در سایت آشیانه برای اعضای سایت قرار داده شده اند.

راه های مقابله با RootKit  های سنتی و RootKit  های سطح هسته مهمترین راه دفاع در برابر RootKit  ها اجازه ندادن به هکرها در دسترسی به حساب مدیر است. همانطور که در بالا ذکر شد یک هکر برای نصب یک RootKit  باید دسترسی سطح ریشه داشته باشد و اگر ما بتوانیم همیشه راه های نفوذ و آسیب های جدید سیستم عاملمان را شناسایی و آنها را از بین ببریم شانس دستیابی هکر به حساب ریشه سیستم خود را تقریباً به صفر رسانده ایم. در مرحله بعد اگر فرض کنیم که با بی احتیاطی ما ، هکری توانست بر روی سیستم ما RootKit  نصب کند، یکی از راه های تست این که سیستم ما RootKit  شده است یا خیر استفاده از دستورEcho  است. تعداد بسیار کمی از RootKit  ها ، دستور echo  را که برای لیست کردن محتویات یک دایرکتوری می باشد تروا می کنند و اکثر RootKit  ها بر روی تروا کردن ls  تمرکز کرده اند. به همین دلیل echo  یک لیست قانونی از محتویات یک دایرکتوری را برمی گرداند و اگر نتیجه ای که echo  بر می گرداند با چیزی که دستور ls  برای دایرکتوری داده شده نشان می دهد متفاوت باشد ممکن است چیزی در آن دایرکتوری پنهان شده باشد که این نتیجه را می رساند که سیستم شما RootKit  شده است. ولی در کل این روش زیاد موثر نیست چون جستجوی تمام سیستم فایل برای یافتن هر اختلافی بین فایل های لیست شده در خروجی Echo  و ls  وقت زیادی را صرف می کند. امروزه ابزارهای مختلفی برای آنالیز برنامه Rootkit/bin/login  وجود دارد که مشخص می کنند آیا RootKit  شناخته شده ای نصب شده است یا خیر. این ابزارها وقتی که بر روی سیستم نصب می شوند به صورت دوره ای فایل های مهم بر روی سیستم را مثل /bin/login  چک می کنند تا از وجود RootKit  باخبر شوند که برنامه ChRootkit  ابزاری جالب در این زمینه است ولی درکل بهترین راه دفاع در برابر RootKit  ها استفاده از تکنولوژی اثر انگشت دیجیتالی قوی می باشد تا به صورت دوره ای درستی فایل های سیستم بحرانی را تحقیق نماید. MD5  ( یک تابع درهم ساز یک طرفه ) یک الگوریتم بسیار مناسب برای محاسبه این نوع اثر انگشتهای قوی می باشد. با محاسبه یک اثر انگشت Encrypt  شده قوی برای فایل های سیستمی مهم یک هکر قادر نخواهد بود که فایلی را تغییر داده و با همان اثر انگشت وارد شود.TripWire  یک ابزار قوی برای تست صحت است که در سایت آشیانه برای دانلود قرار داده شده است. TripWire  درهم سازی MD5  ای از فایل های بحرانی مثل/etc/passwd/bin/login - ls - ps  و ... ساخته و به صورت دوره ای این درهم سازی را با یک پایگاه داده ای امن مقایسه می کند. در صورت تغییر در MD5  یک سرویس سریع به مدیر سیستم اطلاع می دهد. همچنین در RootKit  های سطح هسته Scan  پورت ها در شبکه که با استفاده از ابزارهایی مثل Nmap  صورت گیرد پورت های شنونده را به مدیر امنیتی سیستم نشان خواهد داد. به همین دلیل پویش دوره ای سیستم در طول شبکه برای پیدا کردن رد RootKit  بسیار مفید است.

در آخر ذکر این نکته لازم است که اگر سیستم شما با تمام این ملاحظات آلوده به RootKit  شد بهترین راه از بین بردن آن فرمت هسته و نصب مجدد سیستم عامل است.