اولین قدم قبل از اجرای بدافزار برای مانیتور کردن رفتار آن، اجرای تجزیه و تحلیل بدافزار بصورت ایستا است. ابزار مورداستفاده برای این نوع از تجزیه و تحلیل بدافزار، کد را اجرا نمیکنند، بلکه سعی میکنند شاخصهای مشکوک مثل Hashها، Stringها، Importها را بیرون بکشند و متوجه شوند که آیا بدافزاری در آنها وجود دارد یا خیر.
وقتی که اطلاعات لازم از ابزار و تکنیکهای ایستا جمعآوری شد، بدافزار در یک ماشین مجازی که بهطور خاص برای اجرا و تجزیه و تحلیل بدافزار (Malware Analysis) ساخته شده است، اجرا میشود.
وقتی که بدافزار در حال اجرا است، از ابزار مختلفی برای ثبت فعالیت آن استفاده میشود؛ این کار تجزیه و تحلیل پویا نام دارد. در هنگام تجزیهوتحلیل پویای یک نمونه، باید به دنبال ویژگیهای منحصربهفردی باشیم که بتوان آنها را به بدافزار مربوطه نسبت داد. این ویژگیها میتواند شامل فایلهای ایجاد شده و تغییرات در Registry باشد که شاید نشان دهد بدافزار در حال ماندگار شدن است. یا اینکه ترافیک شبکه موردبررسی قرار میگیرد تا مشخص شود که بدافزار به کدام زیرساخت دستور و کنترل (C2) نیاز دارد.
جهت سلب مسئولیت: ابزار معرفی شده در این مقاله باید در یک محیط Sandbox مثل ماشین مجازی اجرا شوند که برای تجزیهوتحلیل بدافزار طراحی شده باشد، بههیچعنوان نباید روی سیستمعامل Host خود بدافزارها را تجزیهوتحلیل کنید.
۱. PeStudio
اولین مسیر برای تجزیهوتحلیل یک فایل قابل اجرا ویندوز همیشه PeStudio است. این ابزار فوقالعادهای برای انجام اولویتبندی ابتدایی نمونههای بدافزار است و به تحلیلگر امکان پیدا کردن هر Artifact مشکوکی را میدهد.
وقتی که یک باینری لود شود، بهسرعت Hashهای بدافزار و هر شناسایی که در VirusTotal انجام شده باشد را به کاربر ارائه میدهد. فهرستی از Stringها نیز بیرون کشیده میشود اما اگر نمونه Packشده باشد، ممکن است این کار IOCهای قوی را مشخص نکند؛ Unpack کردن نمونه و بعد بررسی Stringها معمولاً اطلاعات مفیدی مثل دامینهای مخرب و آدرسهای IP را فراهم میکند.
PeStudio برای کمک به شناسایی بدافزار Packشده، سطح آنتروپی فایل را نمایش میدهد. آنتروپی در مقیاس ۰ تا ۸ اندازهگیری میشود و ۸ بالاترین میزان آن است. هرچقدر آنتروپی بالاتر باشد، احتمال اینکه بدافزار Packشده باشد بیشتر است. وقتی که نمونهای Packشده باشد، معنایش این است که نویسندهی بدافزار یک لایه کد را حول بدافزار قرار داده است تا عملکرد حقیقی آن مبهم شود و تجزیه و تحلیل بدافزار ناممکن شود.
بخش مفید دیگری تب «Imports» نام دارد که حاوی عملکردی است که وارد بدافزار شده است تا بتواند Taskهای بهخصوصی را اجرا کند. مثلاً، ویندوز حاوی Libraryهای مختلفی به نام DLLها است که مخفف واژهی Dynamic Link Library است. هر Library حاوی مجموعه منحصربهفردی از عملکردها است که تحت عنوان APIهای ویندوز شناخته میشوند، اینها توسط برنامههای قانونی برای انجام کارهای مختلفی مورداستفاده قرار میگیرند. مثلاً DLL Kerner32.dll حاوی یک API به نام CreateProcessW است که ممکن است توسط نرمافزاری مورداستفاده قرار بگیرد تا یک فرایند اجرایی جدید را بسازد. اما بدافزار نیز برای وارد کردن عملکرد خود از روش یکسانی استفاده میکند. اگر لازم باشد که بدافزار فایل جدیدی را روی دیسک بسازد، نیازی نیست که نویسندهی بدافزار برای انجام این کار کدی بنویسد، بلکه فقط میتواند API CreateFileW را وارد بدافزار کند. ممکن است یک تحلیلگر بدافزار با نگاه کردن به این ورودیها بتواند رفتار احتمالی بدافزار را پیشبینی کند.
۲. Process Hacker
یک Process Hacker به تحلیلگر بدافزار این امکان را میدهد که ببیند چه فرایندهایی روی دستگاه اجرا میشوند. این امر میتواند برای از بین بردن یک بدافزار مفید باشد تا مشخص شود که چه فرایندهایی توسط بدافزار ایجاد میشوند و از روی دیسک، کجا اجرا میشوند. بدافزارها معمولاً سعی میکنند با کپی کردن خودشان در یک مکان جدید و سپس تغییر نام خود، مخفی شوند، Process Hackerاین کار را افشا میکند و باعث میشوند که بتوانیم بفهمیم بدافزار چگونه سعی در مخفی شدن دارد.
این ابزار همچنین برای بیرون آوردن اطلاعات از حافظهی یک فرایند مفید است. این یعنی، اگر بخشی از یک بدافزار از بین برود، Process Hacker میتواند حافظه را برای پیدا کردن Stringها بررسی کند، Stringهای پیدا شده در حافظه معمولاً اطلاعات مفیدی مثل آدرسهای IP، دامینها و Agentهای کاربر را که توسط بدافزار مورداستفاده قرار میگیرند مشخص میکنند.
۳. مانیتور فرایند (ProcMon)
ProcMon یک ابزار قوی از سمت مایکروسافت است که فعالیت فایلسیستم زنده مثل ایجاد فرایند و تغییرات در Registry را ثبت میکند. اگر این ابزار در کنار Process Hacker استفاده شود بسیار مفید خواهد بود، زیرا میتوان یک فرایند جدید را ایجاد کرده و بهسرعت آن را از بین برد، این فرایند را میتوان در ProcMon Capture بررسی کرد. تحلیلگر میتواند با استفاده از فیلترها یا درختهای فرایند از پیش ساخته شده بهسرعت مشخص کند که چه فرایندهایی ایجاد شدهاند، فایل قابلاجرا از کجا اجرا شدهاند و وابستگیهای Parent/Child چگونه هستند.
ProcMon میتواند در هنگام تجزیهوتحلیل اسناد مخرب بسیار مفید باشد. عاملان تهدید پشت Emotet معمولاً از اسناد Word مخرب بهعنوان یک مسیر حمله استفاده میکنند. این سند Word حاوی Macroهایی خواهد بود که وقتی فعال شوند به سراغ زیرساخت C2 مهاجمان میروند و Emotet Payload را دانلود میکنند. هیچ کدام از این فعالیتها برای کاربر دستگاه دچار نقض امنیتی قابلمشاهده نخواهد بود. با استفاده از ProcMon میتوان سند Wordی که در حال باز شدن است را Capture کرد، فرایند PowerShell مخفی و دستور base64 کارگذاریشده که در حال اجرا شدن هستند را دید.
ProcMon میتواند در عرض چند ثانیه بیش از ۱۰۰۰۰۰ رویداد را ضبط کند. بااینکه فیلترهای درون ProcMon عالی هستند، همیشه این ریسک که رویداد جالبی از دست برود وجود دارد، اما میتوان بهصورت CSV از این دادهها Export گرفت و آن را به ابزار بعدی این فهرست Import کرد.
۴. ProcDot
ProcDot به تحلیلگران بدافزار این امکان را میدهد که خروجیهای ProcMon را وارد کرده و بهطور خودکار یک تصویر گرافیکی از دادههای Captureشده ایجاد میکند. کافی است CSV را در ProcDot آپلود کنیم و نام فرایند بدافزار را انتخاب کنیم. بهجای ایجاد فیلترها و بررسی صدها هزار رویداد، اکنون فقط کافی است یک نمودار بصری از فعالیت بدافزار ضبط شده را بررسی کنیم.
همچنین میتوان با وارد کردن یک pcap از ابزاری مثل Wireshark به ProcDot دادههای ProcDot را غنیسازی کرد.
۵.Autoruns
Autoruns یک ابزار دیگر مایکروسافت است که هر نرمافزار نصبشده روی دستگاه را که در هنگام روشن شدن دستگاه باز میشود، نمایش میدهد. بدافزار میتواند مخفی شود اما درنهایت مجبور است اجرا شود و برای اینکه پس از ریبوت هم زنده بماند، باید یک مکانیسم ماندگاری ایجاد کند.
چندین تکنیک هستند که میتوان برای دستیابی به این هدف از آنها استفاده کرد، مثلاً برنامهریزی برای یک Task یا ایجاد Keyهای اجرای بهخصوص در Registry. پس از اجرای یک بدافزار در VM، Autoruns هر نرمافزار ماندگار جدید و تکنیک مورداستفاده آن را پیدا کرده و نمایش میدهد و همین باعث شده است که برای تجزیه و تحلیل بدافزار ایدهآل باشد.
۶. Fiddler
بدافزارها معمولاً برای ارتباط با سرورهای C2 خود و دانلود بدافزار اضافی یا استخراج داده از HTTP/HTTPS استفاده میکنند. استفاده از ابزاری مثل Fiddler که نقش پراکسی وب را بازی میکند، امکان ثبت و تجزیهوتحلیل این ترافیک را فراهم میکند. این امر میتواند در زمان تجزیه و تحلیل یک سند مخرب که برای دانلود یک Payload مخرب از Macroها استفاده میکند مفید باشد؛ اجرای Fiddler به تحلیلگر بدافزار امکان شناسایی دامینهایی که در سند Hardcodeشدهاند و برای دانلود بدافزار Hostشده مورداستفاده قرار میگیرند را میدهد.
۷.Wireshark
Wireshark ابزاری برای Capture کردن و تجزیه و تحلیل ترافیک شبکه است. درحالیکه یک پراکسی وب مثل Fiddler روی ترافیک HTTP/HTTPS تمرکز دارد، Wireshark به ما توانایی بررسی Packet عمیق پروتکلها را در چندین لایه میدهد. در حین تجزیه و تحلیل Packetهای Captureشده در Wireshark، حتی میتوانیم فایلهایی را که توسط بدافزار دانلود شدهاند از pcap استخراج کنیم.
۸. x64dbg
همگی ابزاری که تاکنون راجع به آنها صحبت شد را افراد تازهکار میتوانند در اولین ورودشان به تجزیه و تحلیل مورداستفاده قرار دهند. اما x64dbg ابزاری است که دشواری تجزیه و تحلیل بدافزار در آن افزایش پیدا میکند.
این ابزار برای Debug کردن دستی و مهندسی معکوس نمونههای بدافزار مورداستفاده قرار میگیرد، تحلیلگر باید برای استفاده از این ابزار، نسبت به کد Assembly آگاهی داشته باشد، اما وقتی که یادگیریهای لازم انجام شود، تحلیلگر میتواند بهصورت دستی مثل یک جراح با چاقوی کالبدشکافی، نمونههای بدافزار را تجزیه کند.
درک نحوهی استفاده از x64dbg بدین معنا است که میتوانیم روی عملکردهای بهخصوص و API Callهای وارد شده از یک نمونه تمرکز کنیم و نحوهی عملکرد بدافزار را جز به جز بررسی کنیم.
۹. Ghidra
Ghidra توسط آژانس امنیت ملی (NSA) ایجاد شده است و تحت عنوان Disassembler شناخته میشود، نه Debugger. با استفاده از Ghidra میتوانیم مثل x64dbg عملکردهای کد Assembly را بررسی کنیم، اما تفاوت کلیدی این است که کد اجرا نمیشود، بلکه Disassemble میشود تا بتوان بهصورت آماری آن را تجزیهوتحلیل کرد.
تفاوت کلیدی دیگر Ghidra با x64dbg این است که Ghidra سعی خواهد کرد کد را به یک خروجی Decompile کند که توسط انسان قابلخواندن باشد و نزدیک به چیزی باشد که نویسنده بدافزار در هنگام ساخت بدافزار آن را نوشته است. این امر معمولاً کار تحلیلگر بدافزار را برای مهندسی معکوس بدافزار سادهتر میکند، زیرا متغیرها و دستورالعملهایی که هر عملکرد را میسازند برای آنها فراهم میشود.
۱۰. Radare2/Cutter
Radare2 یک Debugger دستور خط است که میتوان روی ویندوز و لینوکس از آن استفاده کرد؛ مزیت Radare2 نسبت به x64dbg این است که قابلیت تجزیهوتحلیل فایلهای قابلاجرا لینوکس را دارد. برای اینکه Radare2 برای کسانی که با رابط کاربری دستور خط آشنایی ندارند، دوستانهتر شود، دارای یک Front End گرافیکی به نام Cutter نیز هست.
۱۱. Cuckoo Sandbox
Cuckoo Sandbox ابزاری برای خودکارسازی تجزیه و تحلیل بدافزار است. Sandboxهای Cuckoo معمولاً روی یک Ubuntu host ساخته میشوند که برنامه کاربردی اصلی Cuckoo را اجرا میکند. درون Host یک Windows 7 VM وجود دارد که درون Virtualbox است. VM دارای یک Cuckoo Agent نصبشده است که به آن توانایی میدهد دادههایی را به Ubuntu Host که Cuckoo را اجرا میکند، برگرداند. بدافزار به VM تحویل داده میشود و Cuckoo Agent فعالیت بدافزار را ثبت میکند؛ وقتی که تجزیه و تحلیل تمام شد، یک گزارش دقیق از بدافزار ایجاد میگردد.
وقتی حادثهای داشته باشیم که شامل بدافزار باشد، Cuckoo Sandbox ابزار بسیار خوبی در سازمان است؛ میتوانیم درحالیکه تجزیه و تحلیل خود را انجام میدهیم، بدافزار را در Cuckoo اجرا کنیم و این کار به ما اجازه میدهد اطلاعات زیادی را از نمونه بدافزار جمعآوری کنیم.
تجزیه و تحلیل کار بسیاری جذابی است و چالش آن این است که هرچقدر میتوانیم اطلاعات بیرون بکشیم. این کار همیشه ساده نیست، اما ابزاری که در این مقاله معرفی شدند به ما درکی از مراحل تجزیهوتحلیل بدافزار میدهند.