Mohammad Reza Mousavinasr
Mohammad Reza Mousavinasr
خواندن ۷ دقیقه·۵ سال پیش

تحلیل حافظه با استفاده از Volatility

تحلیل حافظه که تو این نوشته، منظورم Memory Forensics هست، یکی از پیشرفته ترین و سخت ترین قسمت های تحلیل امنیت و فارنسیکه چون واقعاْ نیاز به دانش های متفاوت از جمله امنیت، شبکه و ساختار سیستم و حافظه داره. تو این نوشته تصمیم گرفتم یه مقدار در مورد تحلیل حافظه و ابزار خیلی قوی و جالب Volatility بنویسم. البته که این تحلیل خیلی مقدماتیه و تحلیل های خیلی پیشرفته تری میشه باهاش انجام داد.


تحلیل حافظه چیه؟

واسه اینکه بفهمیم چه اتفاقاتی برای یه سیستم آلوده به بدافزار در یک زمان خاص افتاده، یا واسه پیدا کردن یک سری ادله امنیتی و بررسی یه سری وقایع خاص که خیلی وقتا لاگی ازشون نمونده و خیلی موارد دیگه نیازه تا روی حافظه موقت (Volatile) تحلیل صورت بگیره تا ببنیم چیا توش هست. در کل حافظه، خیلی چیز جالبیه، می شه توش چیزایی پیدا کرد که هیچ جای دیگه نمیشه پیدا کرد.

ابزار Volatility چیه؟

یه فریم ورک متن باز جالب که واسه تحلیل حافظه نوشته شده. این ابزار را با استفاده از پایتون نوشتن و کلی ماژول خیلی خوب واسه کارای تحلیل حافظه داره.

این ابزار را می تونید از لینک زیر دانلود کنید.

https://github.com/volatilityfoundation/volatility

واسه اینکه باهاش کار کنید خودش یه سری image هم واسه نمونه گذاشته که ما هم تو این نوشته از یکیشون به اسم Cridex استفاده می کنیم و تحلیل حافظه انجام میدیم.

این نمونه ها را میشه از اینجا دانلود کرد.

https://github.com/volatilityfoundation/volatility/wiki/Memory-Samples

تحلیل بدافزار Cridex

اولین کاری که با یه image توی تحلیل باید انجام بدیم اینه که ببینیم مربوط به چه سیستمیه و اطلاعات کلی ازش بدست بیاریم.

ابزار Volatility یه پلاگین به اسم imageinfo داره که میشه باهاش این اطلاعات را در آورد. با f- هم بهش میگیم از چه dumpی این اطلاعات را میخوایم

volatility -f cridex.vmem imageinfo

بعد از اجرای دستور بالا نتیجه اش اینطوری میشه

imageinfo
imageinfo

از نتیجه بالا معلوم شد که سیستم یه WinXPSP2x86 است. خب حالا می تونیم از پروفایل سیستم عامل مربوط به این سیستم استفاده کنیم و شروع کنیم به تحلیل اون سیستم. واسه این کار از Profile=WinXPSP2x86-- استفاده کنیم و بهش بگیم که سیستم عاملش WinXPSP2x86

حالا بریم سراغ اینکه ببینیم چه پراسس هایی اون موقعی که از دامپ (dump) گرفتن داشتن اجرا میشدن. واسه این کار میشه از پلاگین pslist استفاده کرد.

volatility -f cridex.vmem --profile=WinXPSP2x86 pslist

نتیجه اجرای دستور بالا اینطوری میشه

اجرای pslist
اجرای pslist

البته بجای pslist میشه از pstree هم استفاده کرد. که نتیجه اش اینطوری میشه

نتیجه pstree
نتیجه pstree

تو لیست بالا یه پراسس به اسم reader_sl.exe هست که یه مقدار عجیب به نظر میرسه. PPID اش هم ۱۴۸۴ که همون PID مربوط explorer.exe است.

قبل از اینکه بریم سراغ تحلیل عمیق تر این دو تا پراسس میشه از پلاگین خیلی مفید psxview هم استفاده کرد. این پلاگین لیست پراسس هایی که حین اجرا مخفی شدن را هم نشون میده.

اجرای psxview
اجرای psxview

خب با توجه به اینکه دو تا ستون pslist و psscan مقدار False نداریم، این نشون میده پراسس مخفی نداریم.

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

  • connscan
  • netscan
  • sockets

پلاگین connscan یه اسکنر که واسه نمایش کانکشن های TCP استفاده می شه. بعد اجراش روی image نتیجه اش اینطوری میشه:

اجرای connscan
اجرای connscan

پلاگین sockets واسه نمایش سوکت های باز استفاده می شه. بعد اجراش روی image نتیجه اش اینطوری میشه:

اجرای socket
اجرای socket

پلاگین netscan هم که توی این مثال نمیشه استفاده اش کرد برای نمایش کانکشن ها و سوکت های باز سیستم عامل های vista و بعد از اون استفاده میشه

با یه نگاه به خروجی پلاگین connscan میشه فهمید، ۲ تا کانکشن از نوع TCP هست که از پراسس شماره ۱۴۸۴ داره ازشون استفاده می کنه که خب این PID متعلق به explorer.exe است. از بین این دوتا کانکشن یکیشون هنوز بازه. چطور فهمیدیم؟ از خروجی پلاگین sockets. اونی که روی پورت ۱۰۳۸ است هنوز توی لیست sockets هست و با ۴۱.۱۶۸.۵.۱۴۰ روی پورت ۸۰۸۰ ارتباط می زنه.

  • واسه اینکه بفهمیم اون موقع چه دستوراتی زده شده میشه از سه تا پلاگین زیر استفاده کرد.
  • cmdscan
  • consoles
  • cmdline

دوتا پلاگین اول یعنی cmdscan که تاریخچه دستورات زده شده را از طریق اسکن کردن واسه _COMMAND_HISTORY میکشه بیرون و consoles که همین کار را با اسکن کردن واسه _CONSOLE_INFORMATION می کنه خروجی نشون نداشتن. ولی cmdline که آرگومان های خط فرمان پراسس ها رو نشون میده، خروجی زیر را نشون داد.

خروجی cmdline
خروجی cmdline

الان مسیر کامل پراسس هایی که از طریق پراسس های ۱۴۸۴ و ۱۶۴۰ اجرا شدن را داریم. ۱۶۴۰ هم مربوط به همون reader_sl.exe است. توی خروجی cmdline وقتی نگاه می کنیم (مسیرش را ببینید) میبینیم این پراسس که بوسیله explorer.exe ران شده بوده، قرار بوده یه adobe reader ساده باشه ولی الان داره به بیرون کانکشن میزنه و یه سری کارا می کنه.

از اونجایی که این پراسس داره مشکوک میزنه بهتره ازش یه خروجی اجرایی (exe) بگیریم و بعد بریم واسه تحلیل بیشترش با استفاده از پلاگین های procdump و memdump .

خروجی procdump
خروجی procdump

با p- شماره پراسس (PID) و با dump-dir-- هم مسیر خروجی را بهش میدیم.

با پلاگین procdump خروجی exe را میگیریم با memdump هم یه دامپ قابل آدرس دهی از مموری میگیره

خروجی memdump
خروجی memdump

و بعدش میشه با دستور strings شروع به تحلیل این دامپ و بررسی ارتباطش با پراسس شماره ۱۴۶۰.

خروجی Strings
خروجی Strings

تو این خروجی قشنگ میشه دید که این پراسس داره با متد POST یه سری دیتا به ۴۱.۱۶۸.۵.۱۴۰ میفرسته که این یعنی احتمالاْ داره Data Exfilteration انجام میده.

بیشتر که این فایل دامپ را بررسی می کنیم و میریم پایین تر به یه سری دیتاهای جالب می رسیم.

خروجی Strings
خروجی Strings

با این داده هایی که از خروجی Strings گرفتیم معلوم شد با لیستی از دامین های بانک ها توش هست که خب بیشتر به این مشکوک میشیم که یه بدافزار باشه. واسه مطمئن تر شدن، میتونیم فایل exe که خروجی گرفتیم را به یه سری sandbox مثل virustotal و HybridAnalysis بدیم ببینیم نتیجه اش چی میشه. البته میشه آنالیز Static هم کرد و دید پشت فایل exe چه کدهایی هست ولی فعلاْ همون راه sandbox را میریم.

خروجی VirusTotal
خروجی VirusTotal

خروجی HybridAnalysis

خروجی HybridAnalysis
خروجی HybridAnalysis

از خروجی های بالا هم مشخص شد که این فایل به عنوان به تروجان توی این Sandbox ها شناخته شد. بنابراین با توجه به این خروجی ها و تحلیل های بالا، سیستمی که این image از حافظه اش گرفته شده آلوده به بدافزاره. البته بیشتر از این هم میشه تحلیل کرد و IOC برای این بدافزار و عملکردش درآورد که برای مراکز عملیات امنیت و SIEM ها بسیار مفید باشه.

منبع:https://medium.com/@zemelusa/first-steps-to-volatile-memory-analysis-dcbd4d2d56a1

تحلیل حافظهmemory forensicsvolatility
همونطور که یاد می گیرم می نویسم، ساده.
شاید از این پست‌ها خوشتان بیاید