علیرضا تقی خانی
علیرضا تقی خانی
خواندن ۷ دقیقه·۲ سال پیش

با تحلیلی ترین مموری فارنزیک بدافزار 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 imageinfo
imageinfo
imageinfo

بعد از بدست آوردن پروفایل، پروسس های اجرایی برروی سرور با استفاده از دستور pslist بررسی می شوند. همانطور که مشاهده می شود، در نگاه اول مورد خاصی از Parent-Childe، تعداد و نام مشکوک مشاهده نمی شود.

vol.py -f zeus.vmem --profile=WinXPSP2x86 pslist
pslist
pslist

باتوجه به اینکه میدانیم این بدافزار ارتباطات مشکوک دارد، در نتیجه از پلاگین connscan استفاده کرده تا ارتباطات شبکه ای آن مشخص شود. همانطور که مشخص است، پروسس 856 به آدرس 193.104.41.75:80 متصل شده است.

vol.py -f zeus.vmem --profile=WinXPSP2x86 connscan
connscan
connscan

به منظور بررسی بیشتر، آدرس فوق در Virus Total بررسی می شود.همانطور که مشهود است تعداد 62/70 آنتی ویروس مختلف، این آدرس را متعلق به بدافزار Zeus و مخرب میدانند.

193.104.41.75
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.dot
dot -Tps zeus.dot -o zeus.ps
psscan
psscan

در خروجی گرافیکی پروسس ها، موردی جهت شناسایی رفتار مشکوک مشاهده نمی شود.

Parent-Child-Dot
Parent-Child-Dot

باتوجه به اینکه پروسس 856 سر نخ ما در این بررسی است، CommandLineهای مرتبط با این پروسس بررسی شده که مورد مشکوکی مشاهده نمی شود.

vol.py -f zeus.vmem --profile=WinXPSP2x86 cmdline -p 856
cmdline
cmdline

همچنین با استفاده از dlllist، تمامی آرگومان های فراخوانی شده توسط این پروسس مشاهده می شود. همانطور که مشخص است مسیر مشکوکی در بین آنها یافت نشده است.

vol.py -f zeus.vmem --profile=WinXPSP2x86 dlllist -p 856
dlllist
dlllist

شناسایی بدافزار

تا به اینجا، تنها سرنخ موجود پروسس 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 856
malfind
malfind

جهت بررسی بیشتر باید ابتدا پروسس از مموری Dump گرفته شده و سپس با استفاده از Sandbox بیشتر بررسی شود.

vol.py -f zeus.vmem --profile=WinXPSP2x86 procdump -p 856 -D zeus
procdump
procdump

جهت تحلیل بیشتر، فایل در Virus Total قرار داده شده است. همانطور که مشخص است رفتار این پروسس به صورت Process Injection, Create New Process و Spawn Process می باشد که فرضیه Process Hollowing را قوی تر میکند.

VirusTotal-svchost.exe
VirusTotal-svchost.exe

همچنین در تحلیل آن مشخص شد برخی از رجیستری ها نیز تغییر پیدا کرده اند.

Registry Modified
Registry Modified


به منظور مشاهده Hiveهای مموری، پلاگین hivelist استفاده می شود.

vol.py -f zeus.vmem --profile=WinXPSP2x86 hivelist
hivelist
hivelist

سپس با پلاگین dumpregistry، این موارد استخراج می شود.

vol.py -f zeus.vmem --profile=WinXPSP2x86 dumpregistry -D zeus
dumpregistry
dumpregistry

یکی از کارهای بدافزارها، همیشگی کردن دسترسی خود می باشد. حال باتوجه به اینکه Hiveهای رجیستری استخراج شده اند، برخی از مسیرهای مهم مانند Winlogon بررسی می شود. اگر بعد افزار در این مسیر تغییری ایجاد کرده باشد، سبب می شود تا دسترسی خود را دائمی کرده و با هر دفعه بالا آمدن سیستم، اجرا شود.

با استفاده از دستور Strings میتوان Hiveهایی که مقدار winlogon دارند را مشاهده کرد.

strings -f -a -el * | grep -i winlogon
strings
strings

سپس با استفاده از ابزار Registry Explorer، مقدار رجیستری بررسی می شود. همانطور که مشاهده می شود در قسمت Userinit، پروسس sdra64.exe مشاهده شده که نشان دهنده رفتار مخرب و Persistence توسط این بدافزار می باشد.

registry explorer
registry explorer

به منظور بررسی بیشتر برخی از مسیرهای رایج رجیستری نیز بررسی شود تا رفتار مشکوک مشاهده شود. مسیر زیر در صورتی که تغییر کند، سبب می شود بدافزار بتواند، دانلودهای خود را مخفی کند. همانطور که مشاهده می شود این مسیرتغییر پیدا کرده است.

vol.py -f zeus.vmem printkey -K &quotMicrosoft\Windows\CurrentVersion\Internet Settings\Cache\Paths&quot
Internet Explorer
Internet Explorer

همچنین مسیر نتورک نیز تغییر پیدا کرده است.

vol.py -f zeus.vmem printkey -K &quotMicrosoft\Windows NT\CurrentVersion\Network&quot
network
network

شناسایی پروسس های آلوده

با توجه به موارد پیدا شده در رجیستری، نیاز است وابستگی های پروسس مانند Handles بررسی شود. این بررسی باعث می شود تا در صورتیکه اگر پروسس دیگری آلوده شده باشد، شناسایی شود.

جهت بررسی ابتدا Mutantهای پروسس 856 بررسی شود. Mutex Object باعث می شود تا از دسترسی چندین Threads به یک Object به اشتراک گذاری شده، ممانعت شود. همانطور که مشخص است پس از بررسی موارد مجاز، در سایت fortiguard مشاهده شد _AVIRA_2018 غیر مجاز بوده و برروی مموری لود شده است.

vol.py -f zeus.vmem --profile=WinXPSP2x86 handles -p 856 -t mutant
Mutant
Mutant

حال بررسی می شود آیا پروسس دیگری نیز آلوده شده است یا خیر. همانطور که مشاهده می شود، از طریق پروسس 856، پروسس های 608، 632 و 936 آلوده شده اند.

vol.py -f zeus.vmem --profile=WinXPSP2x86 handles -p 856 -t Process
process
process

برای اطمینان از پلاگین malfind مجدد استفاده شده تا موارد مشکوک شناسایی شود. مشاهده می شود پروسس های 936و 632آلوده شده اند(Code Injection).

vol.py -f zeus.vmem --profile=WinXPSP2x86 malfind -p 936,608,632
936
936
632
632

بدین منظور، با استفاده از Base Address، بخش های VAD با استفاده از vaddump بررسی می شود.

vol.py -f zeus.vmem --profile=WinXPSP2x86 vaddump -b 0x8d0000 -D zeus
vaddump
vaddump

با استفاده از دستور file، مشاهده می شود، svchost فایل اجرایی بوده و باید در Sandbox بیشتر بررسی شود.

file zeus/winlogon.exe.66f0978.0x008d0000-0x0090ffff.dmp
file zeus/svchost.exe.63c5560.0x008d0000-0x008f5fff.dmp
files
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,632
apihook-856
apihook-856
apihook-936
apihook-936

بررسی IDT

یکی از جداول مهم کرنل IDT بوده که مسئول Interrupt و Exceptionها در CPU و هدف بسیاری از Rootkitها می باشد. در این جدول تمامی خروجی ها باید به سمت ntoskrnl.exe اشاره کرده و مواردی که UNKNOWN باشند، نشان دهنده آلوده شدن جدول IDTمی باشد.

vol.py -f zeus.vmem --profile=WinXPSP2x86 idt | grep -iv ntoskrnl.exe
idt
idt

بررسی Userassist

در گام آخر، به بررسی userassist پرداخته می شود. userassist جدول برنامه های اجرایی ویندوز را نشان می دهد. همانطور که مشاهده می شود، در Desktop فایلی با نام Zeus_binary_*.exe قرار داده شده است.

vol.py -f zeus.vmem --profile=WinXPSP2x86 userassist
userassist
userassist

جمع بندی

در این نوشته به بررسی رفتار بدافزار ZeusBot در مموری پرداخته شد. همانطور که مشاهده شد این بدافزار رفتارهای مخربی را در سطح مموری داشته است. از این نوشته میتوان سرنخ روند بررسی بدافزارهای بیشتری را بدست آورد. همچنین جهت بررسی بیشتر پیشنهاد می شود Process Hollowing نیز بررسی شود.

بدافزار
شاید از این پست‌ها خوشتان بیاید