خبرهای مهم:

تاریخ امروز برابر است با [ یکشنبه ۲۶ آذر ۱۳۹۶ ]

Rootkit ها مختص به یک سیستم عامل و پلتفرم خاص نیستند، در واقع یک اصطلاح می باشد که به دسته خاصی از بدافزارها اشاره می شود. روت کیت هایی برای MS Windows ، Linux ، Cisco IOS و … نوشته شده و می توان نوشت. مایکروسافت درباره روت کیت چنین می گوید که نویسندگان بدافزارها برای پنهان کردن بدافزار از روت کیت ها استفاده می کنند، حال روت کیت بدافزار است یا بخشی از بدافزار و تعریف و تعابیر دیگر از این واژه ، خود را درگیر این قبیل مباحث نخواهیم کرد.

 

 

Rootkit را می توان به دو بخش root و kit تقسیم کرد تا بهتر به مفهوم آن آشنا شد. سیستم عامل ویندوز به طورکلی به دو سطح تقسیم می شود یعنی Ring0 و Ring3 (به هر سطح Ring گوییم). Ring0 دارای بالاترین سطح دسترسی می باشد که به آن Kernel-mode نیز گفته می شود و همچنین Ring3 دارای کمترین سطح دسترسی که به آن نیز User-mode گوییم.

هر سطح دارای ساختار و ویژگی خاص خود می باشد بنابراین در مبحث دیباگینگ نیز تفاوت هایی وجود دارد. WinDBG دیباگر مایکروسافتی است که می توان در هر دوسطح عمل دیباگ را انجام دهیم ولی نکته قابل توجه کارایی آن است که در Ring3 دیباگر هایی مانند OllyDBG ، ImmunityDBG و… کارایی بهتری را دارا هستند. با توجه به ویژگی های WinDBG ، در دیباگ سطح هسته از آن استفاده می کنیم. راه های دیباگ در windbg را می توان در تصویر زیر مشاهده نمود:

 

برای دیباگ کرنل به دو صورت Remote و یا Local می توانیم عمل نماییم. Local Debug در سطح هسته بدین معنی است که خود سیستم مان را دیباگ نماییم که در این حالت دارای محدودیت هایی خواهیم بود و کارهایی مانند: توقف در اجرا، قرار دادن نقاط توقف در روند اجرا و امثالهم را نمی توان انجام داد. برای این حالت علاوه بر WinDBG ممکن است به ابزار LiveKD [1] نیاز شود. در حالت Remote که در واقع بحث اصلی مان خواهد بود، علاوه بر روش های مختلف موجود که محبوبترین آن Serial است با استفاده از ابزار Virtual KD [2] نیز میتوانید دیباگ را انجام دهید. روش Serial دارای سرعت پایین تری نسبت به Virtual KD می باشد. در حالت Serial سرعتی که داریم bps 115200 است ولی در Virtual KD حداکثر سرعت در Virtual Box نیز ۴۵۰ KB/s و برای VMware حداکثر ۱۵۰ KB/s است. بعد از نصب و راه اندازی Virtual KD در ماشین مجازی براحتی میتوان با استفاده از WinDBG و یا IDA به آن متصل شد و دیباگینگ را انجام دهیم.

حال نحوه ارتباط بصورت Serial را خواهیم گفت، ابتدا تنظیمات مرتبط با VM ایجاد شده در Virtual Box را بصورت زیر ست می کنیم:

 

 

بعد از آن در ویندوز VM با استفاده از کامند msconfig در run ویندوز، سربرگ BOOT.INI و انتخاب Advanced Options … تنظیمات را بصورت تصویر زیر ست می کنیم :

 

 

سپس ویندوز را ریستارت کرده و حالت دیباگ ویندوز را انتخاب می کنیم.

 

 

حال در دیباگرمان از منوی File -> Kernel Debug یعنی تصویر زیر ، با استفاده از تنظیمات اعمال شده به ویندوز مان متصل شده و آن را به مد دیباگ می آوریم.

 

 

در تصویر بالا سربرگ Local برای حالت Local Debug است که قبلا توضیح داده شده است. نکته حائز اهمیت در دیباگ دریافت Symbol ها از سرور مایکروسافت است که نیاز مبرم به آنها خواهیم داشت. برای دانلود symbol ها مورد نیاز با استفاده از منوی File -> Symbol file path … در دیباگر مقدار زیر را ست می کنیم:

 

یا می توان از کامند زیر استفاده نمود :

 

در صورت نیاز به سرور مایکروسافت متصل شده و Symbol ها را دانلود و در مسیر مشخص شده ذخیره می کند. بعد از اتصال و اجرا روند بارگزاری ویندوز می توانیم با زدن Ctrl+Break روند اجرا را متوقف نماییم:

 

خوب حال بر روند اجرا تسلط کامل داریم و می توانیم براحتی هرکاری که نیازمان است اعم از بررسی ساختارها، توقف روند اجرا، تریس یک روت کیت و … را انجام دهیم.

روت کیت های سطح هسته همان درایور ها می باشند که دارای پسوند *.sys هستند. این نوع فایل ها از ساختار PE پیروی می کنند. پس می توان از تکنیک PE Infection نیز استفاده نمود که روت کیت TDL3 بدین صورت عمل نموده است. PE Infection بحث مفصلی است که در این شماره پست مجالی برای شرح این مبحث وجود ندارد. هنگامیکه پروسه ای در UMode می خواهد حافظه را allocate/deallocate کند ، پروسه و تریدی را اجرا نماید و … روند اجرای توابع از سطح کاربر به توابع کرنل ختم می شود. در تصویر زیر ارتباط Ring 3 را با Ring0 نشان می دهد:

 

 

روت کیت های سطح کاربر با هوک هایی مانند IAT خود را مخفی می کنند بعنوان مثال با هوک تابع ZwQueryDirectoryFile() فایل های خود را پنهان می کنند. در شماره ۲ مجله درباره هوک ها حرف هایی گفته شد. وقتی روت کیت سطح هسته برروی سیستمی نصب گردد می تواند ساختارهای کرنل را تغییر دهد مانند : لیست پروسه ها، توکن ها، جداول مهم مانند SSDT,IDT و …

ادامه بحث که درباره مفاهیم و ساختار ویندوز خواهد بود در بخش بعدی به آن خواهیم پرداخت.

نویسنده: حمید رضایی
دانلود فایل

:: نظرات

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد.

*