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 نيز عرضه ميكنند. - نصب فايروال
فايروالها ممكن است بتوانند با مسدود كردن ترافيك خرابكار قبل از ورود آن به كامپيوتر شما و نيز با محدود كردن ترافيك ارسالي توسط شما، از برخي انواع مشكلات جلوگيري نمايند. برخي سيستم عاملها خود داراي يك فايروال هستند، ولي شما بايد اطمينان حاصل كنيد كه اين فايروال فعال است. - استفاده از كلمات عبور مناسب
كلمات عبوري را انتخاب كنيد كه افراد مهاجم نتوانند به آساني آن را حدس بزنند. از كلمات عبور مختلف براي حسابهاي كاربري متفاوت خود استفاده كنيد. و در نهايت اينكه ترجيحا به سيستم خود اجازه ندهيد كه كلمات عبور شما را به خاطر بسپارد. - به روز نگه داشتن نرم افزارها
اصلاحيه هاي نرم افزاري را نصب كنيد. به اين ترتيب افراد مهاجم نميتوانند از آسيب پذيريهاي شناخته شده روي سيستم شما سوء استفاده نمايند. بسياري از سيستم عاملها به طور خودكار عمليات به روز رساني را انجام ميدهند. اگر سيستم عامل شما نيز چنين امكاني دارد، حتما آن را فعال نماييد. - پيروي از توصيه هاي امنيتي
جوانب احتياط را در هنگام استفاده از ايميل و مرورگرهاي وب رعايت كنيد و خطر فعاليتهاي خرابكارانه را بر روي سيستم خود را كاهش دهيد.
- 7