Volatility یک نرمافزار کاربردی جهت کشف و ردگیری بدافزار در حافظه (از جمله RAM) است که یکی از روشهای فارنزیک یا جرمیابی سایبری محسوب میشود.
در این مقاله میخواهیم در رابطه با نحوه استفاده از یکی از محبوبترین نرمافزارهای آنالیز مدیریت حافظه، یعنی Volatility، صحبت کنیم. این ابزار به بررسی دامپ شدن حافظه فرار یک کامپیوتر احتمالا آلوده شده کمک میکند. با استفاده از این نرمافزار میتوان اطلاعات ارزشمند (مثل فرآیندهای در حال اجرا، آخرین فایلهای اصلاح شده یا حتی سابقه مرورگر کاربر و ...) که در حافظه کامپیوتر ذخیره شدهاند را بازیابی کرد.
در این مقاله آموزشی، پس از آموزش نصب و استفاده از Volatility، چندین فرمان نرمافزار Volatility را با در نظر گرفتن یک مثال، یعنی بدافزار Cridex، اجرا میکنیم. با سایبرنو همراه باشید.
یکی از مهمترین بخشهای تحلیل بدافزار، تحلیل حافظه دسترسی تصادفی یا همان تحلیل RAM است. این تحلیل به شما کمک میکند تا فرآیندهای بدافزاری، فعالیتهای شبکه، اتصالات باز و ... را در سیستمهای در معرض خطر و سیستمهایی که تحت نفوذ قرار گرفتهاند، شناسایی کنید.
در ادامه، در رابطه با نصب و استفاده از ابزار منبع-باز Volatility برای تحلیل حافظه فرار صحبت میکنیم. فریمورک Volatility با استفاده از زبان برنامهنویسی پایتون نوشته میشود و میتوان به راحتی از آن در سیستم عاملهای ویندوز، لینوکس، مکینتاش و اندروید، هم در سیستمهای ۳۲ بیتی و هم در سیستمهای ۶۴ بیتی، برای تحلیل RAM استفاده کرد.
از این نرمافزار برای تحلیل دامپهای کرش، دامپهای خام و دامپهای VMware & VirtualBox استفاده میشود. تکنیکهای استخراج کردن، به صورت کاملا مستقل از سیستم تحت بررسی انجام میشوند و دید کاملی نسبت به حالت زمان اجرای سیستم فراهم میآورند.
افزونه Malfind به دامپ کردن فرآیند بدافزاری و تحلیل آن، کمک میکند. یکی دیگر از پلاگینهای Volatility، افزونه cmdscan است که از آن برای نمایش آخرین فرمانهای اجرا شده روی دستگاه مورد حمله، استفاده میشود.
آخرین نسخه منتشر شده Volatility از فرمتهای حافظه زیر پشتیبانی میکند:
این نرمافزار برای سیستم عاملهای ویندوز، لینوکس و مکینتاش، موجود است. برای سیستم عاملهای ویندوز و مکینتاش، فایلهای قابل اجرای خود به خودی موجود هستند و برای نصب آن روی Ubuntu 16.04 LTS میتوانید از فرمان زیر استفاده کنید:
در این مقاله آموزشی، تحلیل جرمشناسی دامپ حافظه خام با استفاده فایل قابل اجرای خود به خودی نرمافزار Volatility انجام میشود. در فرآیند بررسی، رایج است که جرمشناس، برنامههای بدافزاری مختلفی را روی هارد دیسک مورد حمله، پیدا کند. بنابراین، تحلیل حافظه در چنین رویدادهایی، اهمیت بسیار زیادی دارد زیرا ممکن است برنامه بدافزاری یا بدافزار، همچنان روی سیستم آلوده شده، در حال اجرا باشد.
هش MD5 دامپ حافظه سیستم بدافزاری در زیر آورده شده است. این هش برای تأیید image به دست آمده پیش از شروع تحلیل جرمشناسی، محاسبه شده است.
از ابزار Volatility برای تعیین اینکه آیا کامپیوتر، آلوده شده است یا خیر، استفاده میشود. همانطور که میدانید، برنامه بدافزاری را میتوان از فرآیندهای در حال اجرا دامپ حافظه، استخراج کرد. بنابراین، پیش از هر کاری، باید فایلهایی که image حافظه دامپ شده از آنها پشتیبانی میکند، شناسایی شوند. از فرمان زیر برای شناسایی پروفایلهای image استفاده میشود:
بنابراین، فرمان imageinfo، دو پروفایل زیر را پیشنهاد میدهد:
حالا، از فرمان زیر برای به دست آوردن فهرستی از فرآیندهای در حال اجرا در دامپ حافظه استفاده میکنیم:
بخش یک:
بخش دو:
افزونه pslist ابزار Volatility، فرآیندها را در دامپ حافظه، نشان میدهد. همانطور که در خروجی بالا میبینید، تعدادی از برنامهها مثل 0KqEC12.exe و rdpclip.exe در سیستم عامل ویندوز، جدید هستند. ممکن است این برنامهها، بدافزار یا اپلیکیشنهای جدید سیستم عامل ویندوز باشند. چندین فایل iexplore.exe نیز مشکوک به بدافزار بودن هستند.
بنابراین، هدف از فرمان زیر، نمایش فرآیندها در فرمت درختی (والد/فرزند) است. با این کار، رابطه بین فرایندها با فرآیندهای والد آنها، مشخص میشود. این کار به ما کمک میکند تا فرآیندهای والد برنامه بدافزاری را شناسایی کنیم.
بخش یک:
بخش دو:
همانطور که در خروجی بالا از افزونه pstree ابزار Volatility میبینید، فرآیندها با PID ها و PPID هایشان نمایش داده شدهاند. بعضی از برنامههای بدافزاری برای بررسی بیشتر، هایلایت شدهاند. حالا، از افزونه Malfind (که برای شناسایی DLL های بدافزاری در فرآیند به کار میرود) علیه فرآیندهای هایلایت شده، اقدام میکنیم.
از فرمان زیر با سوییچ malfind برای دامپ کردن DLL های بدافزاری در دایرکتوری خروجی، استفاده میشود:
همانطور که در شکل زیر میبینید، این افزونه، هیچ بدافزاری را شناسایی نکرده است:
مجددا همان فرمان را برای PID 1788 اجرا میکنیم تا DLL فرآیند، اسخراج شود. با این حال، هیچ DLL برای افزونه یافت نمیشود.
همانطور که میبینید، فرمان زیر با PID 2104 اجرا میشود . Malfind توانسته است که DLL ها را از فرآیند، استخراج کند.
خروجی این افزونه، دامپ DLL های استخراج شده از فرآیند بدافزاری را نشان میدهد.
افزونه Malfind با PID 2240 که به نظر برای سیستم عامل ویندوز، مشکوک به نظر میرسد، اجرا میشود.
خروجی افزونه PID 2240 در شکل زیر نشان داده شده است.
خروجی نرمافزار Volatility علیه PID 2840 به صورت زیر است.
این فرآیند نیز بدافزاری به نظر میرسد زیرا از اسمی مشابه فرآیند ویندوز iexplorer استفاده میکند.
به طور مشابهی، Malfind علیه برنامه بدافزاری iexplore با PID 2364، اجرا میشود.
دامپ Malfind علیه PID 2364 در زیر نشان داده شده است.
همانطور که در شکل زیر نشان داده شده، افزونه Volatility برای دامپ کردن برنامه بدافزاری علیه PID 3728 اجرا شده است.
تصویر زیر، دامپ افزونه Malfind علیه PID 3728 را نشان میدهد.
دامپهای برنامههای بدافزاری با استفاده از ویندوز دیفندر و Malware bytes اسکن شدند.
نتیجه اسکن کردن با ویندوز دیفندر به صورت زیر است و تروجانهای Win32/EyeStye.N و Win32/EyeStye.plugin شناسایی شدند:
جزئیات تروجانها در زیر آورده شده است:
این تروجانها، ضربات کیبورد را ثبت میکنند، به فعالیتهای اینترنتی نظارت دارند و اطلاعات ورود به حسابهای کاربری را سرقت میکنند و سپس، همه این اطلاعات را به منظور سرقت از حسابهای بانکی، برای مهاجم ارسال میکنند. به علاوه، ممکن این تروجانها، بدافزارهای دیگری را دانلود کنند، امنیت مرورگر وب را کاهش میهند و از روتکیت برای مخفی کردن فعالیت بدافزاری استفاده کنند.
این بدافزارها از تزریق کد برای مخفی ماندن و حذف نشدن توسط آنتی ویروسها، استفاده میکنند. وقتی EyeStye.N اجرا میشود، کد را درون فرآیندهایی مثل cmd.exe و explorer.exe تزریق میکند.
آنالیز ما نشان میدهد که برنامه بدافزاری، به درون برنامه explore.exe که برنامه والد iexplorer.exe است، تزریق شده است.
تصویر زیر نشان میدهد که MalwareBytes نیز DLL های بدافزاری را شناسایی کرده و آنها را Trojan.Grabber نامیده است.
cmdscan یکی دیگر از افزونههای Volatility است که سابقه فرمانهای اجرا شده روی ماشین را نشان میدهد. نتیجه فرمان زیر، سابقه فرمانهای اجرا شده در سیستم آلوده شده را نشان میدهد.
E:\>"E:\Volatility_2.4.win.standalone\Volatility-2.4.standalone.exe" --profile=Win7SP0x86 cmdscan -f memdump3.raw
خروجی cmdscan نشان میدهد که مهاجم، چندین فرمان را روی خط فرمان اجرا کرده تا برنامههای بدافزاری iexplorer.exe و iexplore.exe اجرا شوند. دیگر فرمان مشکوک در خروجی بالا، فرمان _lt112.spn است. این فرمان در منابع آنلاین جستجو مشخص شد که با برنامهای نرمافزاری، ارتباط دارد.
پس از جستجوی فرمان _lt112.spn به وبسایتهای زیر میرسیم:
https://malwr.com/analysis/ODMwYzM1NGViZDkwNDc4YTllYWU4ZTVlMTE1YzJmNGQ/
همانطور که میدانید، میتوان اتصال شبکه را در آنالیز حافظه پیدا کرد. بنابراین، پلاگین netscan علیه image حافظه اجرا شد و نتایج، نشان میدهد که برنامه بدافزاری iexplorer چندین اتصال را در ماشین قربانی، باز کرده است.
بخش یک:
بخش دو:
بخش ۳:
بنابراین، تحلیل حافظه نشان میدهد که کامپیوتر، با بدافزاری مورد حمله قرار گرفته است که explorer.exe و iexplorer.exe را روی ماشین قربانی، پیاده میکند. به علاوه، این تحلیل نشان میدهد که برنامه بدافزاری iexplorer.exe به پورت ۸۰ کامپیوتر قربانی، وصل میشود.
اولین فرمانی که باید برای تحلیل حافظه فرار انجام شود، imageinfo است که به شما کمک میکند تا اطلاعات بیشتری در رابطه با دامپ حافظه به دست بیاورید.
$ Volatility -f cridex.vmem imageinfo
در این فرمان، f- فایل دامپ را تعیین میکند و imageinfo نیز نشاندهنده افزونه Volatility است که میخواهید از آن استفاده کنید. این فرمان باید منجر به نتیجه زیر شود:
حالا، سیستم عامل کامپیوتری را که دچار دامپ حافظه شده است، داریم (WinXPSP2x86) و میتوانیم بررسی را شروع کنیم. برای شروع میتوانیم پروفایل سیستم عامل (profile=WinXPSP2x86--) را در Volatility وارد کرده و ببینیم که که چه اتفاقی در کامپیوتر قربانی رخ داده است.
حالا، با استفاده از افزونه pslist میتوانیم ببینیم که کدام فرآیندها در حال اجرا بودهاند.
به جای افزونه pslist میتوان از pstree برای نمایش فرآیندها و فرآیندهای والد آنها استفاده کرد.
در نگاه اول، متوجه میشویم که فرآیندی غیرمعمولی به نام reader_sl.exe که فرآیند والدی (PPID) آن explorer.exe بوده، یکی از آخرین فرآیندهای اجرا شده روی کامپیوتر بوده است.
پیش از بررسی دقیقتر این دو فرایند، آخرین فرمان را اجرا میکنیم. psxview، فرآیندهایی را که در هنگام اجرا روی کامپیوتر، تلاش کردهاند که خودشان را مخفی کنند، فهرست میکند و بنابراین، افزونه بسیار مفیدی است.
به غیر از مثالی که در اینجا بررسی میکنیم، هیچ فرآیندی، در اینجا مخفی شده نیست. در صورتی که فرآیندی قصد داشت که خودش را مخفی کند، در دو ستون اول رو به روی آن، عبارت False نمایش داده میشد (pslist و psscan).
بعد از دیدن فرآیندهای در حال اجرا، بهتر است که سوکتهای در حال اجرا و اتصالات باز کامپیوتر را بررسی کنیم. برای این کار از سه پلاگین connscan، netscan و sockets استفاده میکنیم.
افزونه connscan، کانکشهای TCP را بررسی میکند، افزونه sockets فهرستی از سوکتهای باز را پرینت میگیرد و نهایتا، افزونه netscan (که به دلیل پروفایل مورد استفاده در مثال ما، نمیتوان از آن استفاده کرد) یک Vista image (یا یک نسخه جدیدتر) را از نظر اتصالات و سوکتها، اسکن میکند.
در مثال ما، دو اتصال TCP توسط فرایند PID 1484 مورد استفاده قرار گرفتهاند (با بررسی خروجیهای سابقه خط فرمان ما میتوان به راحتی، PID 1484 را به فرآیند explorer.exe مرتبط دانست). میتوانیم ببینیم که یکی از این اتصالات TCP که از پورت ۱۰۳۸ استفاده میکند، همچنان باز است و با آدرس IP 41.168.5.140 ارتباط دارد.
حالا، با استفاده از افزونههای cmdscan ،consoles و cmdline، آخرین فرمانهای اجرا شده را بررسی میکنیم.
دو پلاگین اول، یعنی consoles (که سابقه خط فرمان را از طریق اسکن _CONSOLE_INFORMATION استخراج میکند) و cmdscan (که سابقه فرمان را از طریق اسکن _CONSOLE_HISTORY استخراج میکند)، هیچ اطلاعاتی در بافر نداشتند.
با این حال، افزونه cmdline، که آرگومانهای خط فرمان فرآیند را نشان میدهد، اطلاعات جالبی به ما داد. در واقع، اکنون مسیر کامل فرآیندهای راهاندازی شده PID 1418 و PID 1640 را داریم. فرآیند Reader_sl.exe، مشکوک و مشکوکتر میشود.
تا اینجا، میدانیم که این فرآیند که توسط یک فرایند مرورگر، راهاندازی میشود، قرار است که یک اپلیکیشن ادوبی ریدر کلاسیک باشد اما یک اتصال در حال اجرا بین یک آدرس IP خارجی توسط همین فرآیند، مورد استفاده قرار گرفته است.
برای اینکه زود نتیجهگیری نکنیم، با تعیین p 1640– (PID آن) و dump-dir– (دایرکتوری که میخواهیم این دامپها را از آنجا استخراج کنیم) تحلیلهایی با procdump و memdump نیز انجام میدهیم.
فایل اول، یعنی executable.1640.exe از بازیابی فایل قابل اجرای Reader_sl.exe به دست میآید و دامپ استخراج شده 1640.dmp، نشاندهنده حافظه قابل آدرسدهی فرآیند است.
سپس، میتوان با استفاده از فرمان strings در لینوکس، یک آنالیز ساده روی این فایلها انجام داد. از آنجایی که دامپها حاوی اطلاعات زیادی هستند، این آنالیز کمی زمانبر است و باید صبور باشید. در مثال ما، به دنبال رابطهای بین بخشی از اطلاعات بازیابی شده از دامپ (به ویژه ارتباط tcp با آدرس آیپی 41.168.5.1.140) و فرآیند 1640 هستیم.
از فرمان grep همراه با C #NUMBER– خطهای قبلی و بعدی را پیدا کنید و به درک بیشتری نسبت به اطلاعات پیدا شده برسید. در اینجا به وضوح میتوانیم ببنیم که فایل قابل اجرای Reader_sl.exe با استفاده از درخواستهای POST با آدرس IP 41.168.5.1.140 ارتباط دارد و احتمالا، اطلاعات را از کامپیوتر قربانی برای این آدرس میفرستد.
اگر به اندازه کافی صبور باشیم و دامپ در حال استخراج را با استفاده از فرمان strings بخوانیم، میتوانیم دامنههای جالب زیر را پیدا کنیم:
...
*hsbc.co.uk*
*ablv.com*
*accessbankplc.com*
*alphabank.com.cy*
*baltikums.com*
*baltikums.eu*
*banesco.com.pa*
*bankaustria.at*
*banknet.lv*
*bankofcyprus.com*
*bobibanking.com*
*butterfieldonline.ky*
*cimbanque.net*
*cs.directnet.com*
*directnet.com*
*danskebanka.lv*
*ebank.laiki.com*
*ebank.rcbcy.com*
*ebemo.bemobank.com*
*e-norvik.lv*
*eurobankefg.com*
*eurobankefg.com.cy*
*ekp.lv*
*fbmedirect.com*
*hblibank.com*
*hellenicnetbanking.com*
*hiponet.lv*
*hkbea*
*ibanka.seb.lv*
*ib.baltikums.com*
*geonline.lv*
*ib.dnb.lv*
*bib.lv*
*ib.snoras.com*
*i-linija.lt*
*loyalbank.com*
*marfinbank.com.cy*
*multinetbank.eu*
*nordea.com*
*secure.ltbbank.com*
*secure.ltblv.com*
*swedbank.lv*
*norvik.lv*
*online.alphabank.com.cy*
*online.citadele.lv*
*online.lkb.lv*
...
این دامنهها، مربوط به وبسایتهای بانکها هستند. با نگاه به حافظه فرآیند، دلایل بیشتری برای مشکوک شدن به فایل Reader_sl.exe پیدا میکنیم. حالا میخواهیم بررسی کنیم که آیا این فایل قابلاجرا، فایلی بدافزاری است یا خیر.
در این مرحله میتوانیم از دو روش مختلف زیر در رابطه با این موضوع، تحقیق کنیم:
حالا میخواهیم گزینه دوم را امتحان کرده و فایل را با استفاده از ابزار VirusTotal، که احتمالا مشهورترین وبسایت تحلیل وبسایتها و فایلهای بدافزاری است، تحلیل کنیم.
همانطور که نتایج تحلیل نشان میدهد، این سرویس جعبه شن، فایل قابل اجرای مورد نظر ما را به عنوان فایلی بدافزاری شناسایی کرده است.
حالا وقت این است که بررسیها و یافتههای خودمان در رابطه با دامپ مورد بررسی را جمعبندی کنیم:
در صورتی که دامپ cridex.vmem از کامپیوتر کاربر استخراج شود، میتوانیم نتیجهگیری کنیم که کامپیوتر توسط یک تروجان مورد حمله قرار گرفته است.
تصور کنید که این تروجان در کامپیوتر یکی از کارکنان یک شرکت بزرگ، پیدا شده است. شما به عنوان یک متخصص جرمشناسی باید بتوانید دامپ حافظه فرار را تحلیل کرده و فایل قابل اجرای بدافزاری را پیدا کنید.
با این حال، ممکن است که این فایل قابل اجرا، از طریق یک کمپین فیشینگ برای تمامی کارکنان شرکت ارسال شده باشد و بنابراین، لازم است که شما IOC ها (Indicators of Compromise) را بدانید تا بتوانید این تروجان Cridex را تا جای ممکن تأیید کنید تا تیم SOC دیگر کامپیوترهای احتمالا آلوده شده را شناسایی کند.
اولین IOC شناسایی شده در دامپ، آدرس C&C IP 41.168.5.140 بود. برای اینکه بررسی کنیم که آیا آدرسهای IP دیگری استفاده شدهاند یا خیر، میتوانیم برای مثال، الگوی /zb/v_01_a/in/ را در فایل دامپ فرآیند، جستجو کنیم. این الگو، مسیر کوئری شده توسط بدافزار است (41.168.5.140:8080/zb/v_01_a/in/).
ما IOC دیگری نیز پیدا کردیم: 188.40.0.138. حالا میخواهیم با استفاده از یک DNS پسیو، بررسی کنیم که آیا این IP ها با هاستنیمهای محتمل مرتبط هستند یا خیر. در این مورد، از یک سرویس DNS پسیو عمومی به نام Mnemotic استفاده میکنیم:
در این مرحله، باید ادامه دهیم و هر هاستنیم محتمل را بررسی کنیم تا ببینیم که آیا میتوان آنها را به تروجان ربط داد یا خیر (آیا زمان ثبت DNS با زمان آلوده شدن کامپیوتر یکی است؟ آیا این وبسایت، وبسایتی رسمی و قانونی است؟ و ...). سپس، این IOC ها را به تیم SOC میدهیم تا این آلودگی تروجانی در زیرساختهای شرکت را با استفاده از قوانین شناسایی SEIM، به طور دقیقتر، شناسایی کند.
اگر این بدافزار Cridex توسط تیم SOC در دیگر دستگاههای متصل به شبکه سازمان یافت شود، باید از آنتی ویروسی که بتواند آن را شناسایی و حذف کند (استفاده از آنتیویروسهایی که بتوانند فایل قابل اجرای بدافزاری را شناسایی کنند) استفاده کنید و سپس، بررسی کنید که آیا این تروجان، پایدار است یا خیر.
در واقع، اکثر بدافزارها، تلاش میکنند تا خودشان را به صورت خودکار در هر استارتآپ سیستم، اجرا کنند. بنابراین، حذف آنها دشوار است. برای اینکه ببینیم که آیا Cridex نیز اینگونه است یا خیر، باید تمامی ورودیهای رجیستری مورد استفاده در طول استارتآپ سیستم را بررسی کنیم.
این کلیدهای رجیستری در مسیر زیر قرار دارند:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run, RunOnce, RunOnceEx
سپس، میتوانیم از نرمافزار Volatility برای گشتن درون hive ها و پرینت گرفتن محتوای کلیدهای رجیستری، استفاده کنیم.
پلاگین hivelist امکان پرینت گرفتن لیستی از hive های رجیستری را فرآهم میورد و پلاگین printkey به ما کمک میکند تا محتوای کلیدهای رجیستری، subkey های آن و مقادیرش را ببینیم. حالا از فرمان –K برای رفتن به مسیر کلید رجیستری که دنبال آن هستیم، استفاده میکنیم:
همانطور که میبینید، تنها hive که اخیرا اصلاح شده، hive زیر است:
registry “\Device\HarddiskVolume1\Documents and Settings\Robert\NTUSER.DAT”.
حالا میتوانیم تأیید کنیم که فایل قابل اجرای KB00207877 با تروجان ما، ارتباط دارد:
از آنجایی که این فایل قابل اجرا در دامپ حافظه تروجان قابل اجرای ما یافت شد، اکنون مطمئن هستیم که Cridex، کلید رجیستری استارتآپ کامپیوتر قربانی را تغییر داده تا خودش را درون سیستم، حفظ کند. برای پاکسازی کامل کامپیوتر آلوده شده، باید فایل قابل اجرای KB00207877 حذف شود.
امیدواریم که از این تحلیل لذت برده باشید. در زیر، خلاصهای از فرمانهای Volatility مورد استفاده در تحلیل این دامپ، آورده شده است: