تجزيه و تحليل Malware (قسمت دوم)

اجازه بدهيد يک آناليز را با يکديگر دنبال کنيم. پيش از هر چيز، ما يک محيط آزمايشگاهي را با استفاده از ماشين هاي مجازي راه اندازي مي کنيم. اين ماشين ها، يک ماشين ويندوزXP که نقش ماشين قرباني را برعهده دارد و يک ماشين لينوکس که ما از آن براي بررسي ترافيک شبکه استفاده خواهيم کرد و بعنوان يک سرور راه دور و يک ابزار ديگر بر روي شبکه عمل خواهد نمود را در بر مي گيرند.
شنبه، 19 آذر 1390
تخمین زمان مطالعه:
موارد بیشتر برای شما
تجزيه و تحليل Malware (قسمت دوم)

تجزيه و تحليل Malware (قسمت دوم)
تجزيه و تحليل Malware (قسمت دوم)


 





 

آناليز رفتاري
 

اجازه بدهيد يک آناليز را با يکديگر دنبال کنيم. پيش از هر چيز، ما يک محيط آزمايشگاهي را با استفاده از ماشين هاي مجازي راه اندازي مي کنيم. اين ماشين ها، يک ماشين ويندوزXP که نقش ماشين قرباني را برعهده دارد و يک ماشين لينوکس که ما از آن براي بررسي ترافيک شبکه استفاده خواهيم کرد و بعنوان يک سرور راه دور و يک ابزار ديگر بر روي شبکه عمل خواهد نمود را در بر مي گيرند.
پس از راه اندازي آزمايشگاه، بايد تعيين کنيم که ماشين WinXP عمومي ما پيش از آلوده شدن چه وضعيتي دارد. براي انجام اين کار، ما قسمت هايي از مجموعه Sysinternals را اجرا خواهيم کرد که توسط مايکروسافت ارائه مي شود. ما از دو ابزار Process Monitor و Process Explorer استفاده خواهيم کرد. اين ابزارها به ما امکان مي دهند تا يک آگاهي کلي درباره آنچه در حال حاضر بر روي سيستم در حال اجرا مي باشد را بدست آوريم.
ما همچنين از ابزاري با نام Regshot براي تهيه يک تصوير مبنا از رجيستري استفاده خواهيم نمود. به منظور تعيين اين موضوع که Malware تلاش مي کند چه کاري را بر روي شبکه انجام دهد، ما از TCP View استفاده خواهيم کرد.
اين ابزار به ما نشان مي دهد که چه اتصالاتي از به کامپيوتر ما برقرار شده اند. پس از آنکه يک شناخت مناسب از ماشين مجازي خود را بدست آورديم، آن را آلوده کرده و سپس براي مشاهده تأثيرات آلودگي از Process Explorer، Monitor و TCP View استفاده خواهيم نمود. ما در عين حال يک تصوير ديگر از رجيستري را با استفاده از Regshot تهيه مي کنيم تا مشخص نماييم که کدام کليدها توسط Malware تغيير کرده اند. ما با اجراي اين ابزارها مي توانيم چند نکته را مشخص کنيم. بيش از هر چيز، اجراي Process Explorer به ما امکان مي دهد تا کشف نماييم که Malware يک پردازش با نام tnnbtib.exe را آغاز کرده است (شکل 1). سپس، با استفاده از Regshot مي توانيم تعيين کنيم که Malware مورد نظر يک فايل جديد (يک کپي از خودش) را نيز تحت آدرس c:/windows ايجاد کرده و در عين حال کليدهاي جديدي را به رجيستري اضافه نموده که براي اجراي فايل مذکور در هنگام راه اندازي سيستم، به آن اشاره مي کنند. (شکل 2)
با استفاده از TCPView، ما مي توانيم ببينيم که Malware تلاش مي کند تا يک DNS resolution به يک کانال IRC و يک سرور وب را انجام دهد. اين يک نقطه شروع بسيار خوب است، ولي ما را به سمت پرسش هاي بيشتري هدايت مي کنند، مانند اينکه Malware در کانال IRC چه کاري انجام مي دهد و يا چرا تلاش مي کند با يک سرور وب ارتباط برقرار نمايد؟ براي بررسي اين موضوعات و يافتن اطلاعات بيشتر، ما تصميم گرفتيم تا Snort را بر روي ماشين مجازي لينوکسي که قبلاً راه اندازي کرده بوديم، اجرا نماييم.
ما ماشين مجازي مذکور را به اين دليل راه اندازي کرديم که در اختيار داشتن ماشيني که بتواند سرورها و فرامين سرپرستي را از آن اجرا کنيد، هميشه يک نکته مثبت به حساب مي آيد. اين وضعيت به شما امکان مي دهد تا مشخص نمايد که اگر Malware تلاش مي کند با يک سرور راه دور ارتباط برقرار نمايد، چه کاري انجام خواهد داد.
شما مجبور نيستيد از لينوکس استفاده کنيد، با اين حال ما متوجه شده ايم که اجراي ابزارهاي Open Source بسيار کم هزينه تر خواهد بود و در عين حال، ابزارهاي بيشتري بر روي لينوکس قابل دسترسي هستند.
ما ابتدا Snort را بر روي ماشين مجازي لينوکس خود اجرا کرديم تا به نظارت بر ترافيک شبکه توليد شده توسط Malware بپردازيم. براي اجراي Snort، مي توانيد از فرمان زير استفاده کنيد:

تجزيه و تحليل Malware (قسمت دوم)

Snort- vd|tee/tmp/sniffit.log
 

سپس، ما Malware را اجرا کرده و به نظارت بر ترافيک خواهيم پرداخت. حالا مي توانيم تلاش هاي DNS به يک کانال IRC و يک سرور وب را مشاهده نماييم. (شکل 3)
قدم بعدي ما اين خواهد بود که ماشين ويندوز را براي هدايت اين ورودي هاي DNS به ماشين لينوکس پيکربندي کنيم. ما اين کار را با پيکربندي فايل ميزبان بر روي ويندوز براي هدايت به ماشين لينوکس انجام مي دهيم. سپس ما يک سرور IRC را بر روي ماشين لينوکس راه اندازي مي کنيم که بر روي درگاه 6666 اجرا مي شود. اين به Malware امکان مي دهد تا به کانال خودش ملحق گردد. Malware اين کار را با برقراري ارتباط از طريق يک نام مستعار (nickname) تصادفي انجام مي دهد.
پس از پيوستن به کانال IRC، Malware تلاش مي کند تا با يک سايت وب ارتباط برقرار نمايد. با اين کنجکاوي که Malware در سايت مربوطه چه کاري انجام خواهد داد، ما NetCat را با فرمان زير اجرا کرديم تا به کنترل (Listening) درگاه 80 بپردازد.

تجزيه و تحليل Malware (قسمت دوم)

1-n-80nc-p
 

NetCat يک ابزار عالي براي مشاهده ترافيکي است که از يک درگاه عبور مي کند. بهره گيري از اين ابزار بسيار سريع تر از راه اندازي يک سرور وب بوده و مي تواند براي هر درگاهي نظير telnet و يا http نيز مورد استفاده قرار گيرد. NetCat از اين جنبه محدود است که بسته ها را خواهد پذيرفت. اما از آنجايي که يک سرور وب نيست، نمي داند که چطور بايد پاسخ دهد و در نتيجه آنها را انباشته مي کند.
ما توانستيم تعيين کنيم که Malware يک سنجش دايرکتوري را به محض اتصال با درگاه مورد نظر خود آغاز مي نمايد. در اين نقطه، به نظر مي رسيد که ما ايده خوبي از کاري که Malware انجام مي دهد را در اختيار داريم، با اين حال مي خواستيم يک قدم جلوتر رفته و به آناليز کد بپردازيم.
تا اينجا ما مشخص کرده ايم که Malware يک فايل با نام buntib.exe را در دايرکتوري ويندوز ايجاد نموده است. Malware در عين حال کليدهايي را براي اجراي اين فايل در هنگام بوت، به رجيستري اضافه کرده است.
سپس، Malware تلاش مي کند تا يک کانال IRC را بيابد. پس از اتصال به کانال IRC با يک اسم مستعار تصادفي، Malware تلاش مي کند تا به يک سايت وب دسترسي پيدا کرده و يک سنجش دايرکتوري را انجام دهد. قدم بعدي ما، کاوش در کد و بدست آوردن يک شناخت عميق تر از Malware خواهد بود.

آناليز کد
 

به منظور انجام يک آناليز کد بر روي Malware، ما ابتدا بايد تفاوت ميان دو روش استاتيک و ديناميک آناليز را بشناسيم.
در آناليز استاتيک کد، کد نمايش داده مي شود اما فايل اجرا نخواهد شد. IDA Pro يک ابزار بسيار خوب براي انجام اين کار است. روش مذکور به اين دليل مفيد است که در حال اجرا نبوده و شما مي توانيد به قسمتهايي مختلف کد (به همان صورتي که هست) پرش نماييد. بدون آنکه منابعي را اشغال کرده و يا Malware را اجرا نماييد. در هنگام اجراي آناليز استاتيک کد، ما بايد يک اشکال را در نظر داشته باشيم. از آنجايي که کد در حال اجرا نمي باشد، بعضي از فراخواني هاي (Calls) آن به کتابخانه هاي خارجي قابل دسترس نخواهند بود. اين موضوع در مورد آدرس هاي حافظه مجازي که بايد فراخواني شوند نيز صادق است.
ابزارهاي آناليز ديناميک کد نظير OllyDbg، عملاً به کد در حال اجرا نفوذ مي کنند. اين وضعيت به شما امکان مي دهد تا هر چيزي که توسط کد فراخواني مي شود نظير کتابخانه هاي لينک ديناميک (DLL) را مشاهده نماييد. ما ترجيح مي دهيم که در صورت امکان حتماً از ابزارهاي آناليز ديناميک استفاده کنيم، زيرا Malware غالباً از Packer ها و کد Polymorphic براي پنهان نمودن کد اصلي خود استفاده مي کند.
Malware به منظور اجراي کد، بايستي ابتدا آن را در داخل حافظه باز کند. ابزارهاي آناليز ديناميک در هنگام سروکار داشتن با کدي که بصورت ديناميک در حافظه بارگذاري مي گردد، بسيار بهتر خواهند بود.
اين روش به شناخت روش هاي مختلفي که نويسندگان Malwareها براي دفاع در برابر مهندسي معکوس که خود از آنها استفاده مي کنند، کمک خواهد کرد. اين روش ها شامل Packer ها و کدهاي polymorphic هستند. Packer ها، فايل را به يک اندازه کوچک تر فشرده سازي مي نمايند. يکي از تأثيرات جانبي مثبت روش مذکور براي نويسندگان Malware ها اين است که خواندن کد اصلي دشوارتر مي گردد. UPX مثال بسيار خوبي در اين زمينه است. در واقع، UPX در بين نويسندگان Malware بسيار متداول است. کد polymorphic، کدي است که در حين اجراي خود تغيير مي کند.
اين قابليت مي تواند کار را براي مهندسي معکوس استاتيک بسيار دشوار نمايد، زيرا کدي که شما در يک آناليز کننده استاتيک به آن نگاه مي کنيد الزاماً کدي نيست که در هنگام اجراي عملي برنامه ظاهر خواهد شد.
براي ادامه آناليز خود، اولين کاري که بايد انجام دهيم اين است که Bintext را اجرا نموده و به جستجوي رشته هايي بپردازيم که در تشخيص برنامه به ما کمک خواهند کرد. مثال هايي از اين موارد عبارتند ازOpen، Connect، Close و...

تجزيه و تحليل Malware (قسمت دوم)

Bintext
 

در مثال ما، اکثر رشته ها ناخوانا هستند. ما عبارات UPX را مشاهده کرديم. UPX يک نوع بسيار متداول از Packer ها است. اين نرم افزار، کد بسته بندي شده را در حافظه استخراج نموده و آن را طوري اجرا مي کند که انگار هرگز بسته بندي نشده بوده است. اگر بتوانيد Packer (مثلاً UPX) راتشخيص دهيد. غالباً مي توانيد نرم افزار مربوطه را بدست آورده و براي استخراج کد تلاش نماييد. با اين حال، روش مذکور در اغلب موارد بر روي Malware عملي نخواهد بود.
راه هاي متعدد ديگري براي مشاهده کد وجود دارند، شما مي توانيدPeID را اجرا کنيد تا ببينيد که آيا کد را تشخيص مي دهد يا خير و يا اينکه از يک ديباگر ديناميک براي اين منظور استفاده نماييد. ما در اينجا از OllyDBG استفاده کرده (شکل5) و دستورالعملها را در محل هايي از کد اجرايي که قبلاً به حافظه Unpack شده اند، يافته ايم.
با تنظيم يک نقطه شکست در اينجا، ما مي توانيم برنامه را تا نقطه شکست اجرا کرده، به کد راه يافته و برنامه ديباگ شده را از حافظه به ديسک تخليه نماييم. OllyDbg گزينه اي براي ويرايش هدرها و يا گرفتن پيش فرض هايي که DllyDbg مشخص کرده است را در اختيار شما قرار مي دهد. در مورد بعضي از Packer ها، شما بايد هدرها را بازنويسي کنيد. در اين مورد بخصوص، ما از پيش فرض هاي OllyDbg استفاده کرديم. پس از ذخيره سازي کد Unpack شده بصورت محلي، مي توانيم آن را باز کنيم. با نفوذ عميق تر به کد، مي توانيم رشته هاي معيني نظير Pass- accepted (که به ما مي گويد يک سيستم Authentication وجود دارد)و فراميني نظير !@Upgradeو !@login را تشخيص دهيم با برگشتن به سروري IRC خود بر روي لينوکس، مي توانيم از طريق ارسال فراميني نظير !@login و همچنين کد کلمه عبور، با برنامه به تعامل بپردازيم. ما کلمه عبور را با وارد کردن يک نمونه اشتباه بدست آورديم. براي اين منظور، ما يک فراخواني strcmp را با يک نقطه شکست تنظيم نموده و هنگامي که کلمه عبور نادرست با نمونه صحيح مقايسه شد، توانستيم هر دو کلمه عبور را در پشته مشاهده کنيم.

تجزيه و تحليل Malware (قسمت دوم)

تجزيه و تحليل Malware (قسمت دوم)

جمع بندي
 

پس از نگاه کردن به اين Malware، ما هيچ روشي براي تکثير نظير يک Worm را در آن پيدا نکرديم. اين کد در عين حال حاوي هيچ برنامه مفيدي نظير يک اسب تروا نبود.
بنابراين، مي توانيم نتيجه بگيريم که Malware مورد نظر يک ويروس است، زيرا براي گسترش آلودگي به مداخله کاربر نياز دارد. هنگامي که اين Malware يک کامپيوتر را آلوده مي کند فايلي را در آدرس c:\windows قرار داده و کليدهايي را براي اجراي يک پردازش در هنگام بوت به رجيستري اضافه مي نمايد.
اين ويروس با استفاده از UPX بسته بندي شده بود. در عين حال، ويروس مورد نظر ما به IRC متصل شده و تلاش مي کند تا با يک سرور وب ارتباط برقرار نمايد. اين ويروس فراميني را مي پذيرد که به Authentication نياز دارند. به احتمال زياد، نويسنده ويروس مورد نظر ما آن را طراحي کرده است تا بخشي از يک botnet باشد، زيرا به يک کاربر دور امکان مي دهد تا فراميني را برروي IRC اجرا کند.
در طول پيمايش سايت وب، اين Malware احتمالاً قرار بود يک فايل را تخريب نمايد. احتمالاً چيزي که مهاجم مي خواست با بهره گيري از منابع محلي آن را کرک نمايد.
آخرين چيزي که يک شرکت مي خواهد، مهاجمي است که بتواند ماشين هايش را کنترل نمايد. اين Malware ماشين آلوده شده را به يک botnet اضافه کرده و به مهاجم امکان مي دهد تا فايل ها را از يک سايت وب دريافت نمايد.
اگر اين Malware يک روش تکثير شبيه به يک Worm داشت، مي توانستيم تعيين کنيم که ساير ماشينهاي موجود نيز بايستي مورد بازرسي قرار گيرد.
اين يک مثال خوب از اين واقعيت است که چرا تيم هاي امنيتي بايد کاري بيشتر از تکيه محض به مجموعه Anti- Malware خود را براي پاکسازي آلودگي ها انجام دهند. آنها بايد تأثير Malware بر سازمان خود را شناخته و درک نمايند.
منبع:بزرگراه رايانه 127




 



ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط