تبیان، دستیار زندگی
RootKitها برنامه هایی هستند كه از نظر ساختار كاری بسیار شبیه Trojan ها و Backdoor ها هستند ولی با این تفاوت كه شناسایی RootKit بسیار مشكلتر از درب های پشتی است زیرا RootKit ها علاوه بر اینكه به عنوان یك برنامه كاربردی خارجی...
بازدید :
زمان تقریبی مطالعه :


RootKit چیست؟

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 شد بهترین راه از بین بردن آن فرمت هسته و نصب مجدد سیستم عامل است.

برگرفته از سایت iritn