تحلیل بدافزار (Malware Analysis) یکی از مهمترین فرایندها در حوزه امنیت سایبری است که با مطالعه سازوکار نرمافزارهای دارای عملکرد بدخواهانه، به مقابله با تهدیدات سایبری کمک میکند. امروزه، تهدیدات سایبری به یکی از مهمترین مشکلات بسیاری از سازمانهای دولتی و خصوصی و حتی کاربران شخصی تبدیل شدهاند. متأسفانه با وجود تلاشهای شبانهروزی جامعه امنیت سایبری رخداد حملات سایبری به شدت در حال افزایش است. از سال ۲۰۱۵ به این سو حملات هکری به طور میانگین سالیانه ۱۵ درصد رشد کردهاند و انتظار میرود که این روند تا سال ۲۰۲۵ ادامه داشته باشد. همچنین، پیشبینی میشود که خسارت حاصل از هکها از ۳ تریلیون دلار در سال ۲۰۱۵ به بیش از ۱۰ تریلیون دلار در سال ۲۰۲۵ برسد. بدافزارها مهمترین نقش را در حملات سایبری ایفا میکنند و شناخت سازوکارهای آنها به متخصصان حوزه امنیت سایبری، توسعهدهندگان نرمافزار، توسعهدهندگان وب و دیگر متخصصان حوزه فناوری کمک میکند تا با تهدیدات امنیتی فزاینده مقابله کنند.
تعاریف مختلفی برای تحلیل بدافزار وجود دارد ولی میتوان تعریف زیر را بهترین و کاملترین تعریف برای تحلیل بدافزار دانست:
«فرایند تجزیه یک بدافزار به مؤلفههای اصلی و کد منبع و بررسی مشخصات، عملکرد، منشاء و اثرات هر یک از این مؤلفهها به صورت جداگانه و در کنار همدیگر برای خنثیسازی تهدید و پیشگیری از حملات سایبری آتی را تحلیل بدافزار مینامند».
تعریف بالا از چندین مؤلفه جداگانه تشکیل میشود که در زیر، هر کدام از آنها را به صورت جداگانه توضیح میدهیم:
فرایند تحلیل بدافزار را میتوان به مراحل زیر، تقسیمبندی کرد:
پیش از شروع تحلیل بدافزار، باید به کد رمزنشده یا محافظتنشده آن دسترسی پیدا کنید. برای این کار میتوان از ابزاری مثل HoneyDB برای جذب بدافزار و به دام انداختن آن در یک محیط امن مثل جعبه شن استفاده کرد.
«آزمایشگاه تحلیل بدافزار» محیطی امن مثل جعبه شن است که میتوان بدافزارها را بدون نگرانی در آن اجرا کرد. معمولا، آزمایشگاههای بدافزار از ماشینهای مجازی ساخته میشوند.
ابزارهای مختلفی برای تحلیل بدافزار وجود دارد و برای پیدا کردن این ابزار میتوان از GitHub کمک گرفت. برای تحلیل بدافزار نیاز دارید که ابزارهای مختلفی را روی ماشین مجازی خود نصب کنید.
پیش از اجرای بدافزار در ماشین مجازی باید از محیط سیستم عامل ارزیابی یک Snapshot تهیه کنید. پس از گرفتن Snapshot میتوانید از بعضی ابزارها برای بررسی تغییرات محیط سیستم عامل به منظور شناسایی رفتار و تأثیر بدافزار کمک بگیرید.
مرحله بررسی بدافزار از چندین فاز مختلف تشکیل میشود. بعضی از این فازها نیازمند کارهای دستی سنگین هستند اما بعضی دیگر، توسط ابزار خودکار انجام میشوند.
بسته به ابزارهایی که در اختیار دارید، به اطلاعات دقیق و دادههای زیادی در رابطه با رفتار، گرایشها و الگوهای تعاملی بدافزار با محیطی که در آن اجرا میشود، خواهید رسید. این دادهها و اطلاعات باید مستندسازی شوند تا بتوان از آنها برای تحلیل بدافزار استفاده کرد.
به طور کلی، میتوان گفت که دو نوع تحلیل بدافزار وجود دارد:
همچنین، میتوان تحلیل بدافزار را بر اساس نوع عملیات به دو نوع زیر تقسیمبندی کرد:
یک تحلیل جامع باید ترکیبی از تمامی این روشها باشد. در زیر، هر کدام از این روشها را به صورت جداگانه به شما عزیزان معرفی میکنیم. همچنان با ما همراه باشید.
کدهای بدافزار دارای دو نوع عنصر داینامیک و استاتیک هستند. تحلیل استایتک روی عناصر استاتیک کد بدافزار، مثل متادیتا، هدرها، منابع و... انجام میشود.
معمولا، یک تحلیل استاتیک سریع، اطلاعات کافی مورد نیاز برای ایجاد شاخص خطر (Indicator Of Compromise) یا همان IOC را در اختیار قرار میدهد. IOC سندی است که ماهیت بدخواهانه نرمافزار در آن ثبت میشود.
در تحلیل داینامیک به بدافزار اجازه داده میشود تا خودش را در یک محیط کنترلشده اجرا کند و رفتارش تحت مشاهده قرار بگیرد. از آنجایی که بدافزارها میتوانند به سیستمهایی که در آنها اجرا میشوند، آسیبهای غیر قابل برگشت وارد کنند، ضرورت دارد که برای این کار حتما از ماشینهای مجازی استفاده شود. در این نوع تحلیل بدافزار باید به چندین سیگنال رفتاری مثل تعاملات با ترافیک شبکه، الگوهای هدفگیری فایل سیستم و هر نوع تغییری در رجیستری باید مورد توجه قرار بگیرند. میتوان با گرفتن Snapshot پیش از تحلیل داینامیک و پس از آن، اطلاعات خوبی از الگوهای رفتاری بدافزار به دست آورد. بنابراین، به این نوع تحلیل بدافزار، تحلیل رفتاری نیز میگویند.
در این نوع تحلیل بدافزار ممکن است که تحلیلگر، کد بدافزار را به صورت دستی و با استفاده از ابزارهایی مثل دیباگرها، دیکامپایلرها و دیکریپترها تجزیه و تحلیل کند. معمولا، تحلیل دستی هدف استراتژیک بدافزار را آشکار میکند زیرا تحلیلگر منطق اصلی الگوریتم را بررسی و تلاش میکند تا منطق عناصری را که در نگاه اول غیر ضروری به نظر میرسند، پیشبینی کند.
در تحلیل خودکار، بدافزار به صورت خودکار از مجموعهای از مراحل عبور میکند و الگوهای رفتاری و خواص استاتیک آن در هر کدام از این مراحل به صورت جداگانه بررسی میشود. با اینکه تحلیل خودکار، درک کاملی نسبت به منطق بدافزار ایجاد نمیکند اما برای دستهبندی و شناسایی خانواده آن بسیار مفید است. خودکارسازی میتواند منجر به ایجاد گزارشهایی دقیق شود و دادههای لازم برای یک سیستم «پاسخ به حادثه» را تأمین کند و تنها ضروریترین سیگنالها در اختیار تحلیلگر انسانی قرار بگیرند.
فرایند تحلیل بدافزار را میتوان به سه گام اصلی که در زیر توضیح داده شدهاند، تقسیمبندی کرد:
در شروع فرایند تحلیل بدافزار، تحلیلگر با اجرای ابزارها یا اقدامات دستی ساده تلاش میکند تا بدافزار را مجبور به واکنش کند. وقتی نرمافزار به محیط اطراف خودش (در یک ماشین مجازی) واکنش نشان میدهد، درک رفتار و تهدیدات بالقوه آن سادهتر میشود. انجام مطالعات رفتاری روی بدافزار میتواند به سادگی اجرای یک ضدویروس در محیط مجازی باشد. با ترکیب مزیتهای استراتژيهای تحلیل خودکار و تحلیل دستی میتوان از فریمورکهای تحلیل رفتاری برای ایجاد یک اسکریپت قابل استفاده مجدد بهره برد.
تجزیه یا دیس اسمبل کردن کد هم شامل تحلیل استاتیک (با بررسی عناصر غیر قابل تغییر کد بدافزار) و هم شامل بررسی منطق درونی آن است. در تجزیه کد تا حد زیادی از روشهای دستی استفاده میشود و به همین دلیل، بهتر است که تحلیلگر به زبان ماشین و اسمبلی آشنایی داشته باشد. همچنین، میتوان از یک دیساسمبلر (disassembler) پیشساخته نیز برای تجزیه کردن کد نرمافزار و تبدیل منطق آن از صفر و یک به زبان اسمبلی استفاده کرد. معمولا، از سه نوع ابزار برای تجزیه کد بدافزار استفاده میشود که به شرح زیر هستند:
در این گام مستقیما به سراغ ردپاهای جرمشناسی باقیمانده از بدافزار در حافظه سیستم میرویم. معمولا، بدافزارها به طور متوسط چیزی حدود یک مگابایت یا کمتر حجم دارند و بنابراین، بررسی رد پاهای آنها در حافظههای محیطهای رایانشی معمولی کار دشواری است. آزمایشگاههای تحلیل بدافزار باید شرایط ضروری برای بنچمارک کردن حالت حافظه قبل از فعالیت بدافزار را فراهم میآورند، آن را اجرا کرده و سپس، ردپاهای باقیمانده از فعالیتهای بدافزار را استخراج میکنند. تحلیل حافظه میتواند بسیار دشوار باشد زیرا تحلیلگر در جستجوی کوچکترین رد پاهای دیجیتالی به جا مانده از یک نرمافزار بسیار سبک و طراحیشده برای پنهانکاری است. خوشبختانه، چندین ابزار برای این کار وجود دارند که میتوان با نصب آنها در محیط مجازی آزمایشگاه تحلیل بدافزار، کار تحلیل حافظه را انجام داد. به طور کلی میتوان گفت که در این گام اطلاعات بیشتری در رابطه با بدافزار، حتی بعد از توقف اجرای آن جمعآوری میشود.
تحلیل بدافزار فرایندی است که در آن کد بدافزار تجزیه یا دیساسمبل میشود و اطلاعاتی در رابطه با مشخصات، رفتار و منشا و عملکرد آن به دست میآید و تأثیرات آن پیشبینی شود. برای تحلیل بدافزار نیاز به یک آزمایشگاه تحلیل بدافزار وجود دارد و سپس باید بدافزار به دام انداخته و در ماشین مجازی آزمایشگاه اجرا شود. در نهایت، تحلیلگر باید نتایج تحلیل را مستندسازی کند.
تحلیل بدافزار میتواند استاتیک یا داینامیک باشد. همچنین، میتوان بدافزارها را به صورت دستی یا خودکار تحلیل کرد. با این حال، در یک تحلیل جامع هم از روشهای استاتیک و هم از روشهای داینامیک، به هر دو صورت دستی و خودکار استفاده میشود.
به طور کلی میتوان گفت که تحلیل بدافزار دارای سه گام اصلی مشاهده رفتار بدافزار، تجزیه کد بدافزار و بررسی حافظه سیستم پس از توقف اجرای بدافزار است که به ویژه در جرمشناسی دیجیتال (Digital Forensics) اهمیت دارد.