با تحلیلی ترین مموری فارنزیک بدافزار ZeusBot با ما همراه باشید...

*هشدار: قبل از شروع به مطالعه، قهوه خود را آماده کنید!مقدمهدر این نوشته رفتار مموری بدافزار ZeusBot با استفاده از ابزار Volatility بررسی شده است. ابتدا بهتر است خلاصه ای بر این بدافزار ذکر شود. بدافزارZeus، بدافزاری از خانواده تروجان‌ها است که در نسخه‌های مختلف سیستم عامل ویندوز اجرا می‌گردد. با وجود اینکه این بدافزار دارای قابلیت‌های بسیار زیادی می‌باشد، ولی معمولاً برای سرقت اطلاعات مربوط به بانک‌ها مورد استفاده قرار می‌گیرد. از این بدافزار برای نصب باج‌افزار CryptoLocker نیز استفاده شده است.این بدافزار معمولاً با استفاده از تکنیک‌های فیشینگ و یا دانلود از منابع نامطئن سیستم‌های هدف را آلوده می‌کند. بعدها بدافزار Gameover Zeus نیز که از همین خانواده است، مطرح گردید که از ساختار ارتباطی P2P استفاده می‌کند. از آنجا که این بدافزار به سختی قابل شناسایی است، به همین دلیل بزرگ‌ترین شبکه bot در اینترنت را تشکیل داده است.همانطور که در توضیحات به آن اشاره شد، این بدافزار از ساختار P2Pبرای ارتباطات خود استفاده کرده و رفتار Botnet دارد. ابتدا از لینک زیر میتوان فایل zeus.vmem را دانلود کرد. http://malwarecookbook.googlecode.com/svn-history/r26/trunk/17/1/zeus.vmem.zipتحلیل اولیهزمانی که از Volatility v2 استفاده می شود، در گام نخست باید پروفایل مموری بدست آید. بدین منظور ابتدا با استفاده از دستور imageinfo اطلاعات بیشتر از آن بدست آماده است.vol.py -f zeus.vmem imageinfoimageinfoبعد از بدست آوردن پروفایل، پروسس های اجرایی برروی سرور با استفاده از دستور pslist بررسی می شوند. همانطور که مشاهده می شود، در نگاه اول مورد خاصی از Parent-Childe، تعداد و نام مشکوک مشاهده نمی شود. vol.py -f zeus.vmem --profile=WinXPSP2x86 pslistpslistباتوجه به اینکه میدانیم این بدافزار ارتباطات مشکوک دارد، در نتیجه از پلاگین connscan استفاده کرده تا ارتباطات شبکه ای آن مشخص شود. همانطور که مشخص است، پروسس 856 به آدرس 193.104.41.75:80 متصل شده است. vol.py -f zeus.vmem --profile=WinXPSP2x86 connscanconnscanبه منظور بررسی بیشتر، آدرس فوق در Virus Total بررسی می شود.همانطور که مشهود است تعداد 62/70 آنتی ویروس مختلف، این آدرس را متعلق به بدافزار Zeus و مخرب میدانند. 193.104.41.75حال به بررسی بیشتر پروسس 856 پرداخته می شود. همانطور که از دستور pslist مشخص شد، 856 مربوط به svchost.exe بوده که از طریق services.exe اجرا شده است. تا اینجا همچنان مورد مشکوکی نیست. به منظور بررسی Parent-Child پروسس ها از دستور psscan استفاده شده و با خروجی گرفتن Dot به صورت گرافیکی به بررسی مابقی پروسس ها پرداخته می شود. vol.py -f zeus.vmem --profile=WinXPSP2x86 psscan --output=dot --output-file=zeus.dotdot -Tps zeus.dot -o zeus.pspsscanدر خروجی گرافیکی پروسس ها، موردی جهت شناسایی رفتار مشکوک مشاهده نمی شود. Parent-Child-Dotباتوجه به اینکه پروسس 856 سر نخ ما در این بررسی است، CommandLineهای مرتبط با این پروسس بررسی شده که مورد مشکوکی مشاهده نمی شود. vol.py -f zeus.vmem --profile=WinXPSP2x86 cmdline -p 856cmdlineهمچنین با استفاده از dlllist، تمامی آرگومان های فراخوانی شده توسط این پروسس مشاهده می شود. همانطور که مشخص است مسیر مشکوکی در بین آنها یافت نشده است. vol.py -f zeus.vmem --profile=WinXPSP2x86 dlllist -p 856dlllistشناسایی بدافزارتا به اینجا، تنها سرنخ موجود پروسس svchost.exe بوده که رفتار مشکوکی از نظر ساختار پروسس ها، دستورات و روند اجرایی ندارد. زمانی که در بررسی های اولیه موردی مشاهده نمی شود، به بررسی خود پروسس می پردازیم که ممکن است این پروسس آلوده شده باشد. از جمله رایج ترین حملات در این زمینه Process Hollowing می باشد.با این حال، با استفاده از پلاگین malfind، جهت شناسایی رفتار مخرب این پروسس، روند فانرنزیک ادامه داده شده است. جهت تحلیل malfind باید این نکته خاطر نشان شود، مواردی مشکوک بوده که در هدر آنها MZ مشاهده و در بخش Vad Tag، مقدار PAGE_EXECUTE_READWRITE مشاهده شود. به صورت معمول، پروسس های ویندوز به صورت PAGE_EXECUTE_WRITE اجرا می شوند و در صورت مشاهده آن، مشخص است که این پروسس آلوده شده است. خروجی malfind نشان میدهد پروسس 856 آلوده شده است. vol.py -f zeus.vmem --profile=WinXPSP2x86 malfind -p 856malfindجهت بررسی بیشتر باید ابتدا پروسس از مموری Dump گرفته شده و سپس با استفاده از Sandbox بیشتر بررسی شود. vol.py -f zeus.vmem --profile=WinXPSP2x86 procdump -p 856 -D zeusprocdumpجهت تحلیل بیشتر، فایل در Virus Total قرار داده شده است. همانطور که مشخص است رفتار این پروسس به صورت Process Injection, Create New Process و Spawn Process می باشد که فرضیه Process Hollowing را قوی تر میکند.VirusTotal-svchost.exeهمچنین در تحلیل آن مشخص شد برخی از رجیستری ها نیز تغییر پیدا کرده اند. Registry Modifiedبه منظور مشاهده Hiveهای مموری، پلاگین hivelist استفاده می شود.vol.py -f zeus.vmem --profile=WinXPSP2x86 hivelisthivelistسپس با پلاگین dumpregistry، این موارد استخراج می شود. vol.py -f zeus.vmem --profile=WinXPSP2x86 dumpregistry -D zeusdumpregistryیکی از کارهای بدافزارها، همیشگی کردن دسترسی خود می باشد. حال باتوجه به اینکه Hiveهای رجیستری استخراج شده اند، برخی از مسیرهای مهم مانند Winlogon بررسی می شود. اگر بعد افزار در این مسیر تغییری ایجاد کرده باشد، سبب می شود تا دسترسی خود را دائمی کرده و با هر دفعه بالا آمدن سیستم، اجرا شود. با استفاده از دستور Strings میتوان Hiveهایی که مقدار winlogon دارند را مشاهده کرد. strings -f -a -el * | grep -i winlogonstringsسپس با استفاده از ابزار Registry Explorer، مقدار رجیستری بررسی می شود. همانطور که مشاهده می شود در قسمت Userinit، پروسس sdra64.exe مشاهده شده که نشان دهنده رفتار مخرب و Persistence توسط این بدافزار می باشد.registry explorerبه منظور بررسی بیشتر برخی از مسیرهای رایج رجیستری نیز بررسی شود تا رفتار مشکوک مشاهده شود. مسیر زیر در صورتی که تغییر کند، سبب می شود بدافزار بتواند، دانلودهای خود را مخفی کند. همانطور که مشاهده می شود این مسیرتغییر پیدا کرده است. vol.py -f zeus.vmem printkey -K &quotMicrosoft\Windows\CurrentVersion\Internet Settings\Cache\Paths&quotInternet Explorerهمچنین مسیر نتورک نیز تغییر پیدا کرده است. vol.py -f zeus.vmem printkey -K &quotMicrosoft\Windows NT\CurrentVersion\Network&quotnetworkشناسایی پروسس های آلودهبا توجه به موارد پیدا شده در رجیستری، نیاز است وابستگی های پروسس مانند Handles بررسی شود. این بررسی باعث می شود تا در صورتیکه اگر پروسس دیگری آلوده شده باشد، شناسایی شود. جهت بررسی ابتدا Mutantهای پروسس 856 بررسی شود. Mutex Object باعث می شود تا از دسترسی چندین Threads به یک Object به اشتراک گذاری شده، ممانعت شود. همانطور که مشخص است پس از بررسی موارد مجاز، در سایت fortiguard مشاهده شد _AVIRA_2018 غیر مجاز بوده و برروی مموری لود شده است. vol.py -f zeus.vmem --profile=WinXPSP2x86 handles -p 856 -t mutantMutantحال بررسی می شود آیا پروسس دیگری نیز آلوده شده است یا خیر. همانطور که مشاهده می شود، از طریق پروسس 856، پروسس های 608، 632 و 936 آلوده شده اند.vol.py -f zeus.vmem --profile=WinXPSP2x86 handles -p 856 -t Processprocessبرای اطمینان از پلاگین malfind مجدد استفاده شده تا موارد مشکوک شناسایی شود. مشاهده می شود پروسس های 936و 632آلوده شده اند(Code Injection). vol.py -f zeus.vmem --profile=WinXPSP2x86 malfind -p 936,608,632936632بدین منظور، با استفاده از Base Address، بخش های VAD با استفاده از vaddump بررسی می شود. vol.py -f zeus.vmem --profile=WinXPSP2x86 vaddump -b 0x8d0000 -D zeusvaddumpبا استفاده از دستور file، مشاهده می شود، svchost فایل اجرایی بوده و باید در Sandbox بیشتر بررسی شود. file zeus/winlogon.exe.66f0978.0x008d0000-0x0090ffff.dmp file zeus/svchost.exe.63c5560.0x008d0000-0x008f5fff.dmp filesبررسی API Hookingبا توجه به اینکه خروجی handles نشان میداد،سه پروسس آلوده شده اند، سناریو API Hooking برررسی می شود. در سناریو API Hooking، مهاجم API Callهای ویندوز را تغییر میدهد. همانطور که مشاهده می شود، تابع ntdll.dll!NTCreateThread در آدرس 0x7c90d7d2 بوده که به آدرس 0xb73b47، تغییر(JMP) و Hook داشته است. vol.py -f zeus.vmem --profile=WinXPSP2x86 apihooks -p 936,856,632apihook-856apihook-936بررسی IDTیکی از جداول مهم کرنل IDT بوده که مسئول Interrupt و Exceptionها در CPU و هدف بسیاری از Rootkitها می باشد. در این جدول تمامی خروجی ها باید به سمت ntoskrnl.exe اشاره کرده و مواردی که UNKNOWN باشند، نشان دهنده آلوده شدن جدول IDTمی باشد. vol.py -f zeus.vmem --profile=WinXPSP2x86 idt | grep -iv ntoskrnl.exeidtبررسی Userassistدر گام آخر، به بررسی userassist پرداخته می شود. userassist جدول برنامه های اجرایی ویندوز را نشان می دهد. همانطور که مشاهده می شود، در Desktop فایلی با نام Zeus_binary_*.exe قرار داده شده است. vol.py -f zeus.vmem --profile=WinXPSP2x86 userassistuserassistجمع بندیدر این نوشته به بررسی رفتار بدافزار ZeusBot در مموری پرداخته شد. همانطور که مشاهده شد این بدافزار رفتارهای مخربی را در سطح مموری داشته است. از این نوشته میتوان سرنخ روند بررسی بدافزارهای بیشتری را بدست آورد. همچنین جهت بررسی بیشتر پیشنهاد می شود Process Hollowing نیز بررسی شود.