تهديدات پنهانی، قسمت اول: Rootkit

تهديدات پنهانی، قسمت اول: Rootkit

تاریخ ایجاد

IRCAR200907027

مقدمه
يك Rootkit يك سيستم نرم افزاري است كه از يك يا چندين برنامه تشكيل شده است. اين نرم افزار براي پنهان كردن اين واقعيت كه سيستم شما مورد سوء استفاده قرار گرفته است طراحي شده است. يك فرد مهاجم ممكن است از Rootkit براي جايگزين كردن فايلهاي اجرايي حياتي سيستم با فايلهاي مورد نظر خود استفاده نمايد. اين فايلها مي­توانند براي پنهان كردن پردازه ها و فايلهايي كه فرد مهاجم نصب كرده است مورد استفاده قرار گيرند. نوعا Rootkitها با گول زدن و فريب دادن بخش امنيتي سيستم عامل و مكانيزمهاي امنيتي مانند آنتي ويروسها و ابزارهاي ضد جاسوسي، وجود خود را انكار مي­كنند. در اغلب موارد اين Rootkitها تروجان نيز هستند و با فريب كاربر، وي را قانع مي­كنند كه در حال اجراي برنامه امن و قابل اعتمادي است. تكنيكهاي مورد استفاده براي انجام اين كار شامل پنهان كردن پردازه هاي در حال اجرا از ديد برنامه هاي كنترل كننده، يا پنهان كردن فايلها يا داده هاي سيستم از ديد سيستم عامل مي­باشد. Rootkitها همچنين ممكن است يك در پشتي (back door) روي سيستم قرباني نصب كنند.
Rootkitها براي انواع مختلف سيستم عاملها مانند ويندوز، لينوكس، Mac OS و Solaris توليد مي­شوند. اين برنامه هاي خرابكار اغلب بخشهايي از سيستم عامل را تغيير داده يا خود را به عنوان درايور و يا ماژولهاي هسته اي نصب مي­كنند.

1- تاريخچه
واژه Rootkit بدوا به مجموعه اي از ابزارهاي مديريتي خرابكارانه براي سيستم عامل Unix اشاره مي­كند كه بطور پنهاني مجوز دسترسي به Root سيستم را دارا هستند. اگر يك فرد مهاجم بتواند ابزارهاي استاندارد مديريتي يك سيستم را با يك Rootkit جايگزين كند، اين ابزارهاي تغيير يافته به فرد نفوذگر اجازه خواهند داد كه در حاليكه فعاليتهاي خود را از ديد مدير حقيقي پنهان مي­كند، دسترسي root را روي سيستم در دست داشته باشد. اولين rootkit شناخته شده در سال 1990 توسط Lane Davis و Steven Dake براي سيستم عامل SunOS 4.1.1 نوشته شد.
يك Rootkit نمي­تواند امتيازات و اولويتهاي دسترسي يك فرد مهاجم را پيش از نصب روي سيستم بالا ببرد. نصب نيز مستلزم اين است كه فرد نفوذگر دسترسي Root يا مدير داشته باشد. اين دسترسي مي­تواند بصورت فيزيكي و يا از طريق نفوذ در آسيب پذيريهاي امنيتي رخ دهد. برنامه نصب rootkit مي­تواند به سادگي و بدون اطلاع مدير (براي مثال از طريق يك تروجان) اجرا گردد. زماني كه اين rootkit نصب گردد، دسترسي را در سطح مدير نگه مي­دارد و حضور خود را از ديد ساير پردازه ها پنهان مي­نمايد.

2- موارد كاربرد
يك rootkit كه بطور موفقيت آميزي نصب شده باشد، به كاربران غير قابل اعتماد و شناخته نشده اجازه مي­دهد كه به عنوان مدير به سيستم دسترسي داشته باشند، و بنابراين بتوانند كنترل كامل سيستم قرباني را بدست بگيرند. بيشتر rootkitها بطور طبيعي فايلها، پردازه ها، ارتباطات شبكه، بلوكهاي حافظه، و يا وروديهاي رجيستري ويندوز را از ساير برنامه هايي كه توسط مديران براي تشخيص دسترسي هاي اولويت دار به منابع سيستم استفاده مي­شوند، پنهان مي­كنند. البته rootkitها هميشه خرابكار نيستند و مي­توانند براي مقاصد سازنده نيز مورد استفاده قرار گيرند.
بسياري از rootkit ها برنامه هاي utility را پنهان مي­كنند. اين دسته از rootkitها معمولا سعي مي­كنند كه به سيستم قرباني نفوذ كرده و در اغلب موارد يك در پشتي (back door) نيز براي نفوذهاي بعدي مهاجمان باقي مي­گذارند.
در مورد اينكه آيا rootkit جزو بدافزارها محسوب مي­شوند يا نه بحثهايي وجود دارد. كاربردهاي قانوني زيادي براي rootkit ها وجود دارد. براي مثال مجريان قانون، والدين و يا كارفرمايان مي­توانند با استفاده از اين ابزار فعاليت كارمندان يا فزرندان خود را روي سيستم خود كنترل نمايند. محصولاتي مانند eBlaster يا Spector Pro در حقيقت rootkit هايي هستند كه به منظور چنين كنترلهايي استفاده مي­شوند.
اما اغلب توجهات به rootkit ها، روي rootkit هاي خرابكار و يا غيرقانوني كه توسط مهاجمان مورد استفاده قرار مي­گيرند تمركز مي­كند. در حاليكه ممكن است يك rootkit به نحوي روي يك سيستم از طريق يك ويروس يا تروجان نصب گردد، اما لزوما خود rootkit يك بدافزار نيست.

3- انواع Rootkit

  • Rootkit هاي دائمي
    يك Rootkit دائمي هر بار كه سيستم راه اندازي مي­شود فعال مي­گردد. از آنجايي كه چنين بدافزاري شامل كدي است كه بايد به طور خودكار در هر بار راه اندازي سيستم يا ورود كاربر اجرا گردد، بايد اين كد در يك حافظه دائمي مانند رجيستري يا سيستم فايل ذخيره شود و روشي در نظر گرفته شود كه بدون دخالت كاربر، اين كد اجرا گردد.
  • Rootkit هاي مبتني بر حافظه
    Rootkit هاي مبتني بر حافظه بدافزارهايي هستند كه كد دائمي ندارند و بعد از راه اندازي مجدد سيستم زنده نمي­مانند.
  • Rootkit هاي مد كاربر
    روشهاي زيادي وجود دارند كه Rootkit ها با استفاده از آنها از كشف شدن خود جلوگيري مي­كنند. براي مثال، يك rootkit مد كاربر ممكن است جلوي تمامي درخواستهاي ارسالي به APIهاي FindFirstFile/FindNextFile ويندوز را كه توسط ابزارهاي مرور سيستم فايل استفاده مي­شود بگيرند.
    API اصلي ويندوز بعنوان يك رابط بين كلاينتهاي مد كاربر و سرويسهاي مد هسته عمل مي­كند. Rootkit هاي مد كاربر كه پيچيده تر هستند جلوي سيستم فايل، رجيستري، و توابع شمارش پردازه هاي API اصلي را مي­گيرند. اين كار جلوي كشف آنها توسط برنامه هاي اسكن كننده را مي­گيرد.
  • Rootkit هاي مد هسته
    Rootkit هاي مد هسته حتي مي­توانند قدرتمندتر نيز باشند، چراكه نه تنها مي­توانند API اصلي را در مد هسته دستكاري كنند، بلكه همچنين مي­توانند بطور مستقيم ساختارهاي داده مد هسته را دستكاري نمايند. يك تكنيك معمول براي پنهان كردن حضور يك پردازه بدافزار اين است كه آن پردازه از فهرست پردازه هاي فعال هسته حذف گردد. از آنجاييكه API هاي مديريت پردازه، به محتويات اين فهرست اعتماد و تكيه مي­كنند، پردازه بدافزار در ابزارهاي مديريت پردازه مانند Task Manager يا Process Explorer نمايش داده نخواهد شد.

4- تشخيص Rootkit
تشخيص يك rootkit در بيان بسيار ساده تر از عمل است. در حقيقت بر خلاف ويروسها و ابزارهاي جاسوسي، هيچ برنامه يا نرم افزاري تا كنون توليد نشده است كه بتواند تمامي rootkit ها را پيدا و حذف نمايد.
راههاي مختلفي براي اسكن حافظه يا بخش فايلهاي سيستمي در مورد وجود rootkit موجود است، ولي اغلب آنها داراي ابزار خودكار نيستند و ابزارهايي كه وجود دارند نيز اغلب براي تشخيص و حذف يك نوع rootkit خاص ساخته شده اند. يك روش ديگر اين است كه به دنبال رفتارهاي غير منطقي و عجيب روي سيستم كامپيوتري بگرديم. اگر چيز مشكوك و غير معمولي مشاهده گردد، شايد بتوان گفت كه سيستم شما قرباني يك rootkit شده است.
فايلهاي باينري Rootkit ها در اغلب موارد –حداقل تا زمانيكه توسط كاربر اجرا شده و خود را پنهان نمايند- توسط برنامه هاي آنتي ويروس مبتني بر امضا يا مبتني بر heuristic قابل تشخيص هستند. يك سري محدوديتهاي ذاتي در مورد هر برنامه اي كه كه بخواهد rootkit ها را تشخيص دهد و در عين حال روي سيستمي كه مشكوك به وجود rootkit است قرار داشته باشد وجود دارد. Rootkit ها برنامه هايي هستند كه بسياري از ابزارها و كتابخانه هاي سيستم هسته را كه تمام برنامه هاي سيستم به آنها بستگي دارند تغيير مي­دهند. برخي rootkit ها سعي مي­كنند كه سيستم عامل حاضر را از طريق ماژولهاي قابل بارگذاري روي لينوكس (و برخي ديگر از انواع يونيكس)، و نيز از طريق درايورهاي مجازي قطعه هاي خارجي روي پلت فورمهاي ويندوز تغيير دهند. مشكل اساسي در مورد تشخيص rootkit اين است كه اگر سيستم عامل حاضر تغيير يافته باشد، ديگر قابل اعتماد نخواهد بود. در نتيجه ادعاهاي سيستم عامل در مورد تغييرات بدون مجوز در خود سيستم عامل يا اجزاي آن معتبر نخواهد بود. بعبارت ديگر، فعاليتهايي مانند درخواست فهرست پردازه هاي در حال اجرا يا درخواست فهرست تمام فايلهاي موجود در يك دايركتوري، لزوما به نتيجه اي منطبق با چيزي كه طراحان آن منظور داشته اند نخواهد رسيد. فقط آن دسته از تشخيص دهنده هاي rootkit ها كه روي سيستمهاي live اجرا مي­شوند كار مي­كنند، چرا كه rootkit ها هنوز آنقدر گسترش نيافته اند كه خود را از اين تشخيص دهنده ها پنهان نمايند.
بهترين و قابل اعتمادترين روش براي تشخيص rootkit در سطح سيستم عامل اين است كه كامپيوتر را خاموش كرده، و سپس با بالا آمدن مجدد آن از روي يك CD-ROM يا درايو USB قابل اعتماد، حافظه آن را بررسي نماييد. يك rootkit كه در حال اجرا نباشد نمي­تواند وجود خود را پنهان نمايد، و بيشتر برنامه هاي آنتي ويروس rootkit ها را شناسايي خواهند كرد. Rootkit هاي در حال اجرا سعي مي­كنند از خود به وسيله كنترل پردازه هاي در حال اجرا و مسدود كردن فعاليت آنها تا زمان پايان يافتن عمليات اسكن، محافظت نمايند.
در نهايت بسياري از متخصصين امنيت توصيه مي­كنند كه يك بازسازي كامل در مورد سيستمي كه توسط rootkit مورد سوء استفاده قرار گرفته است بايد انجام داد. دليل اين مساله اين است كه حتي اگر شما فايلها يا پردازه هاي مرتبط با rootkit را كشف كنيد، بدست آوردن اطمينان 100 درصد از اين موضوع كه تمامي اجزاي rootkit را حذف كرده ايد بسيار مشكل است. تنها در حالتي مي­توانيد با خيال راحت به كار خود بپردازيد كه كل سيستم را پاك كرده و از اول شروع كرده باشيد.

5- براي محافظت از خود چه كاري مي­توانيد انجام دهيد؟
اگر شما عادات خوب امنيتي را به كار بگيريد، خطر سوء استفاده از كامپيوتر خود را كاهش مي­دهيد:

  • استفاده از آنتي ويروس
    نرم افزار آنتي ويروس بيشتر انواع ويروسها را شناسايي كرده و شما را در برابر آنها محافظت مي­كند، بنابراين ممكن است شما بتوانيد اين ويروس را قبل از اينكه ضربه اي به شما بزند تشخيص داده و از سيستم خود پاك كنيد. از آنجايي كه افراد مهاجم بطور مداوم در حال نوشتن ويروسهاي جديد هستند، بايد هميشه تعريف ويروسها را در آنتي ويروس خود به روز نگه داريد. برخي از توليد كنندگان آنتي ويروس نرم افزارهاي ضد rootkit نيز عرضه مي­كنند.
  • نصب فايروال
    فايروالها ممكن است بتوانند با مسدود كردن ترافيك خرابكار قبل از ورود آن به كامپيوتر شما و نيز با محدود كردن ترافيك ارسالي توسط شما، از برخي انواع مشكلات جلوگيري نمايند. برخي سيستم عاملها خود داراي يك فايروال هستند، ولي شما بايد اطمينان حاصل كنيد كه اين فايروال فعال است.
  • استفاده از كلمات عبور مناسب
    كلمات عبوري را انتخاب كنيد كه افراد مهاجم نتوانند به آساني آن را حدس بزنند. از كلمات عبور مختلف براي حسابهاي كاربري متفاوت خود استفاده كنيد. و در نهايت اينكه ترجيحا به سيستم خود اجازه ندهيد كه كلمات عبور شما را به خاطر بسپارد.
  • به روز نگه داشتن نرم افزارها
    اصلاحيه هاي نرم افزاري را نصب كنيد. به اين ترتيب افراد مهاجم نمي­توانند از آسيب پذيريهاي شناخته شده روي سيستم شما سوء استفاده نمايند. بسياري از سيستم عاملها به طور خودكار عمليات به روز رساني را انجام مي­دهند. اگر سيستم عامل شما نيز چنين امكاني دارد، حتما آن را فعال نماييد.
  • پيروي از توصيه هاي امنيتي
    جوانب احتياط را در هنگام استفاده از ايميل و مرورگرهاي وب رعايت كنيد و خطر فعاليتهاي خرابكارانه را بر روي سيستم خود را كاهش دهيد.
برچسب‌ها