.yalda.
25th August 2011, 05:55 AM
برنامه هايي هستند که از نظر ساختار کاري بسيار شبيه 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 شد بهترين راه از بين بردن آن فرمت هسته و نصب مجدد سيستم عامل است.
منبع (http://www.amvaj.ir)
در دنياي هکرها دو نوع 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 شد بهترين راه از بين بردن آن فرمت هسته و نصب مجدد سيستم عامل است.
منبع (http://www.amvaj.ir)