بدافزار تهدیدی جدی به تمام سازمانها است و میلیونها دلار برای آنها هزینه دارد. اگر اقدامات امنیتی مناسبی اتخاذ نشوند، این شرکتها تبدیل به اهداف آسانی خواهند شد. خوشبختانه، برای کاهش این تهدیدات، چندین ابزار آنالیز بدافزار وجود دارد. امروز میخواهیم با جزئیات بیشتری با تحلیل بدافزار آشنا شویم.
آنالیز بدافزار همیشه کار سادهای نیست، اما هدف از این مقاله درک بهتر این فرایند است.
قبل از اینکه بخواهیم آنالیز بدافزار و انواع و مراحل آن را بررسی کنیم، اول باید ببینیم که بدافزار چیست.
بدافزار چیست؟
بدافزار نوعی نرمافزار نفوذکننده است که به سیستمهای کامپیوتری، سرورها، سیستمهای هاست یا شبکهها آسیب زده و آنها را از بین میبرد. بدافزار عبارتی کلی است برای انواعی از نرمافزارهای مخرب که هدف از آنها بهطور خاص آسیب زدن یا Exploit کردن دستگاه، شبکه یا سرویسها با قابلیت برنامهریزی است. ویروسها، کرمها، تبلیغافزار، جاسوسافزار، ویروسهای تروجان و باجافزار انواعی از تهدیدات بدافزار هستند.
آنالیز بدافزار چیست؟
آنالیز بدافزار عبارت از فرایند شناسایی و کاهش تهدیدات در یک وبسایت، برنامه کاربردی یا سروراست. تجزیه و تحلیل بدافزار یک فرایند حیاتی است که از امنیت رایانه و همچنین امنیت سازمان در رابطه با اطلاعات حساس اطمینان حاصل میکند. تحلیل بدافزار آسیبپذیریها را برطرف میکند قبل از اینکه از کنترل خارج شوند.
اگر سادهتر به موضوع نگاه کنیم، آنالیز بدافزار را میتوان فرایند درک رفتار و استفاده از یک فایل مشکوک یا یک URL دانست. هر چه بیشتر در مورد فایل مشکوک بدانیم، بهتر میتوانیم تهدید را کنترل کنیم.
مزایای کلیدی آنالیز بدافزار
آنالیز بدافزار برای تحلیلگران امنیتی و تیم پاسخ به رخداد (CSIRT) کاربرد فراوانی دارد. برخی از مزایای کلیدی این فرایند در ادامه مطرح میشود:
- شناسایی مبدأ حمله
- تشخیص میزان آسیب از یک تهدید امنیتی
- شناسایی میزان Exploitشدن بدافزار، آسیبپذیری و آمادگیهای مناسب برای Patch کردن
- اولویتبندی حوادث براساس شدت تهدید بهصورت کاربردی
- کشف نشانههای تهدیدات امنیتی یا IOCهای مخفی که باید مسدود شوند
- بهبود اثربخشی IOC، هشدارها و اطلاعرسانیها
- غنیسازی ساختار در زمان کشف تهدیدات
انواع تحلیل بدافزار
سه نوع آنالیز بدافزار را میتوان انجام داد:
- آنالیزایستای بدافزار
- آنالیزپویای بدافزار
- آنالیز Hybridبدافزار
آنالیز ایستای بدافزار
آنالیز ایستای بدافزار، فایلها را بررسی میکند تا نشانههایی از مخرب بودن را پیدا کند. آنالیز ایستای عادی نیازمند اجرا شدن کد بدافزار نیست. این تجزیهوتحلیل برای افشا کردن زیرساخت مخرب، فایلهای Packشده یا Libraryها مفید است.
در این نوع از آنالیز بدافزار، نشانههای فنی مثل نامهای فایل، Hashها، Stringهایی مثل آدرسهای IP، دامینها و دادههای Header فایل شناسایی میشوند. ابزار مختلفی مثل Disassemblerها و تحلیلگران شبکه میتوانند بدون اجرای بدافزار آن را مشاهده کنند. این ابزار میتوانند اطلاعاتی را در مورد نحوه کار یک بدافزار بهخصوص کشف کنند.
ازآنجاییکه آنالیز بدافزار بصورت ایستا کد بدافزار را اجرا نمیکند، ممکن است رفتارهای Runtime مخربی در برخی از بدافزارهای پیچیده وجود داشته باشد که شناسایی نشوند. مثلاً فایلی که یک String را ایجاد کرده و با توجه به String پویا فایل مخربی را دانلود میکند. اگر از یک آنالیز بدافزار ایستای عادی استفاده کنیم، ممکن است این بدافزار شناسایی نشود. در این موارد، برای درک کامل رفتار فایل، آنالیز پویا مفیدتر است.
آنالیز پویای بدافزار
در آنالیز پویای بدافزار، کدی که به مخرب بودن مشکوک باشد در محیطی ایمن به نام Sandbox اجرا میشود. این ماشین مجازی ایزوله، یک سیستم بسته است که به متخصصان امنیتی امکان میدهد بدافزار را به دقت در عمل بررسی کنند، بدون اینکه ریسک آلودگی شبکه یا سیستم وجود داشته باشد. این تکنیک قابلیت دید عمیقتری را به تهدید و طبیعت حقیقی آن ارائه میدهد.
Sandboxing خودکارسازیشده دارای مزیت ثانویهای نیز هست، زیرا در زمانی که برای مهندسی معکوس یک فایل جهت کشف کد مخرب سپری میشد، صرفهجویی میکند.
آنالیز پویا میتواند چالشبرانگیز باشد، بهخصوص در برابر مهاجمین باهوش که میدانند در نهایت از Sandboxها استفاده خواهد شد. پس مهاجمین برای فریب ما، کد خود را طوری مینویسند که تا ایجاد شرایطی بهخصوص، مخفی بماند. فقط درصورتیکه آن شرایط برقرار شود کد اجرا خواهد شد.
آنالیز بدافزار Hybrid
ما میدانیم که وقتی بدافزار کد پیچیدهای داشته باشد آنالیز ایستای عادی کافی نیست و بدافزارهای پیچیده گاهی اوقات میتوانند با استفاده از تکنولوژی Sandbox از شناسایی شدن فرار کنند. ترکیب دو تکنیک آنالیز بدافزار بهترینِ این دو رویکرد را با هم ترکیب میکند.
آنالیز Hybrid میتواند کدهای مخرب مخفی را شناسایی کرده و IOCهای بیشتری را از سوی کدهایی که قبلاً نامرئی بودند استخراج کند. این نوع آنالیز توانایی شناسایی تهدیدات ناشناخته را حتی از پیچیدهترین بدافزارها دارد.
آنالیز Hybrid، آنالیز ایستا را به دادههایی که توسط آنالیز رفتاری ایجاد میشوند اعمال میکند. یک کد مخرب را در نظر بگیرید که اجرا شده و تغییراتی را در حافظه ایجاد میکند. آنالیز پویا میتواند آن را شناسایی کند و تحلیلگران بلافاصله میدانند که باید آنالیز ایستا را روی آن حافظه اعمال کنند. در نتیجه IOCها و Exploitهای Zero-Day بیشتری شناسایی خواهند شد.
تفاوت بین آنالیز بدافزار ایستا و پویا
آنالیز ایستا و پویا بالاتر تعریف شدند. در ادامه مقایسهای بین این دو تجزیهوتحلیل بسته به فاکتورهایی بهخصوص ارائه میشود.
تجزیه و تحلیل
آنالیز ایستای بدافزار، نمونههای بدافزار را بدون اجرای آن آنالیز میکند و درنتیجه نیاز به وجود یک تحلیلگر را در تمام مراحل از بین میبرد. همچنین رفتار نمونه را مشاهده میکند و قابلیت آن و میزان آسیبی که میتواند به سیستم بزند را میسنجد.
از طرف دیگر آنالیز پویا با استفاده از رفتار و اعمال نمونههای بدافزار آنالیز را انجام میدهد و این یعنی در طول اجرا کد با مانیتورینگ مناسب کار میکند.
تکنیک
آنالیز ایستا شامل آنالیز Signature فایل باینری بدافزار است. فایل باینری یک شناسه منحصربهفرد دارد که میتوان آن را با کمک یک Disassembler مثل IDA که کد قابل اجرا توسط ماشین را به کد زبان Assembly تبدیل میکند، مهندسی معکوس کرد. برخی از تکنیکهای مورد استفاده در این نوع از آنالیز بدافزار اسکن ویروس، شناسایی Packer، اثرانگشت فایل، Debugging و Memory Dumping هستند.
آنالیز پویا شامل یک محیط Sandbox است تا آنالیز رفتار بدافزار در حین اجرای برنامه روی سیستمهای دیگر تأثیر نگذارد. Sandboxهای تجاری آنالیز دستی را با آنالیز خودکار جایگزین میکنند.
رویکرد
آنالیز ایستا برای شناسایی و تحلیل بدافزار، دارای یک رویکرد مبتنی بر Signature است. شناسهی منحصربهفرد در بدافزار یک توالی از بایتها است. Signatureها با استفاده از الگوهای مختلف اسکن میشوند. برنامههای ضدبدافزاری که مبتنی بر Signature هستند فقط در مقابل بدافزارهای متداول کارآمدند. این برنامهها برای رسیدگی به بدافزارهای پیچیده و پیشرفته ناکارآمدند. به همین دلیل است که آنالیز پویای بدافزار اهمیت پیدا میکند.
آنالیز پویا رویکردی مبتنی بر Signature ندارد. بلکه از یک رویکرد مبتنی بر رفتار استفاده میکند تا عملکرد بدافزار تعیین شود. این رویکرد شامل بررسی اقدامات انجام شده توسط بدافزار است.
موارد کاربرد آنالیز بدافزار
شناسایی بدافزار
برای فرار از مکانیسمهای شناسایی قدیمی، هر روز تکنیکهای پیچیدهی بیشتری توسط مهاجمین مورد استفاده قرار میگیرد. با استفاده از آنالیز رفتاری عمیق و شناسایی کد مشترک، عملکرد یا زیرساخت مخرب میتوان بهطور کارآمدتری تهدیدات را شناسایی کرد.
بهعلاوه، آنالیز بدافزار به شناسایی IOCها منجر میشود. این IOCها را میتوان وارد پلتفرمهای هوش تهدیدات (TIPها)، SEIMها و ابزار تنظیم امنیتی کرد تا تیمهای هشداردهی در آینده بتوانند تهدیدات مربوطه را شناسایی کنند.
شکار تهدید (Threat Hunting)
شکارچیان تهدید میتوانند با استفاده از رفتار و مصنوعاتی که توسط آنالیز بدافزار افشا میشوند فعالیتهای مشابهی مثل دسترسی به یک اتصال شبکه، دامین یا پورت بهخصوص را پیدا کنند. جستجوی فایروال، لاگهای پراکسی یا دادههای SIEM میتواند به پیدا کردن تهدیدات مشابه کمک کند.
هشدارهای تهدید و اولویتبندی
خروجی آنالیز بدافزار باعث افزایش دقت هشدارها در ابتدای چرخه عمر حمله میشود و درنتیجه با اولویتبندی نتایج این هشدارها در زمان صرفهجویی میکند.
پاسخ به حادثه
هدف تیم پاسخ به حادثه یا IR این است که آنالیز ریشهی حمله را انجام دهد، میزان تأثیرگذاری را مشخص کند و در بازیابی و اصلاح راهکارها موفق شود. آنالیز بدافزار در بهرهوری این کار مؤثر است.
تحقیقات در مورد بدافزار
تمام پژوهشگرهای صنعتی و آکادمیک آنالیز بدافزار را انجام میدهند تا در مورد آخرین تکنیکها، ابزار و Exploitهای مورداستفادهی مهاجمین دانش کسب کنند.
مراحل آنالیز بدافزار
بیایید نگاهی به چهار مرحله از آنالیز بدافزار بیندازیم:
آنالیز ویژگیهای ایستا
وقتیکه از ویژگیهای ایستا صحبت میکنیم، منظورمان Stringهایی که در کد بدافزار کارگذاری شدهاند، جزئیات Header، منابع کارگذاریشده، فراداده، Hashها و غیره است. این نوع از داده ممکن است برای ایجاد IOCها کافی باشد و ازآنجاییکه نیازی به اجرای برنامه نیست، میتوان آنها را بهسرعت پیدا کرد.
اطلاعاتی که با استفاده از آنالیز ویژگیهای ایستا به دست میآید میتواند مشخص کند که آیا به بررسی عمیقتری با تکنیکهای جامعتر نیاز هست یا خیر.
تحلیل رفتار تعاملی
تحلیل رفتار تعاملی به مشاهده و تعامل با بدافزارهایی که در یک آزمایشگاه اجرا میشوند، کمک میکند. تحلیلگران سعی دارند درکی از فایل سیستم نمونه، Registry، فرایند و فعالیت شبکه به دست آورند. فارنزیک حافظه انجام میشود تا مشخص شود که بدافزار چگونه از حافظه استفاده میکند. سپس قابلیتهای مشکوک بدافزار در یک محیط شبیهسازیشده تست میگردد.
تحلیل رفتار نیازمند تحلیلگری است که مهارتش در سطح پیشرفته باشد، زیرا کل فرایند میتواند زمانبر و پیچیده شود. بدون کمک ابزار خودکارسازیشده نمیتوان این آنالیز را بهطور کارآمدی انجام داد.
آنالیز کاملاً خودکارسازی شده
آنالیز کاملاً خودکارسازی شده بهسرعت فایلهای مشکوک را با رویکردی ساده ارزیابی میکند. درصورتیکه بدافزار به شبکه نفوذ کند، این آنالیز در تعیین عواقب احتمالی مفید است. سپس یک گزارش ساده با راهکارهایی سریع برای تیمهای امنیتی ایجاد میشود. این بهترین راه برای پردازش بدافزار در مقیاس بالا است.
معکوس کردن کد بهصورت دستی
در مرحله معکوس کردن کد بهصورت دستی، تحلیلگران از Debuggerها، Compilerها، Disassemblerها و ابزار تخصصی دیگر استفاده میکنند تا کد را مهندسی معکوس کنند. این کار کمک میکند که رمزگشایی داده انجام شود، منطق پشت الگوریتم بدافزار مشخص گردد و هر قابلیت مخفی از بدافزار که نمایش داده نشده است افشا شود.
معکوس کردن کد نیازمند تخصص و مهارتهای کمیاب است. انجام این کار زمان خیلی زیادی میبرد. به همین دلایل، معمولاً این مرحله انجام نمیشود و باعث میشود اطلاعات ارزشمند زیادی در مورد طبیعت بدافزار از دست برود.
ساختن یک محیط آنالیز بدافزار
برای یک تحلیلگر بدافزار، ساختن محیط مناسب تجزیهوتحلیل بدافزار قدمی حیاتی در آنالیز و بررسی بدافزار بهطور مناسب است. این امر شامل دانلود، نصب و پیکربندی یک ماشین مجازی REMnux Linux و ویندوز ۱۰، تنظیم یک شبکه خصوصی برای ارتباط بین ماشینهای مجازی، ساختن یک محیط ویندوز سفارشی با SentinelLabs RevCore Tools و دریافت ترافیک از یک ماشین مجازی ویندوز ۱۰ است.
برترین ابزار آنالیز بدافزار
چندین نوع مختلف از ابزار ضروری برای انجام آنالیز بدافزار وجود دارد، تا بتوان حملات سایبری را درک کرده و از آنها اجتناب کرد. با اینکه بسیاری از ابزاری که اینجا فهرست شدهاند رایگان هستند، پیشنهاد میشود که در محیطی حرفهای، از نسخههای پولی استفاده شود.
Disassemblerها: یک Disassembler مثل IDA Pro یا Ghidra که توسط آژانس امنیت ملی یا NSA ایجاد شده باشد بهجای اجرای کد Assembly، آن را تجزیه میکند تا بتوان بهصورت آماری آن را تجزیهوتحلیل کرد. آنها با Decompilerها نیز کار میکنند که میتوانند کد باینری را به کد Native تبدیل کنند.
Debuggerها: یک Debugger مثل x64dbg یا Windbg برای دستکاری اجرای یک برنامه مورد استفاده قرار میگیرد. این امر اطلاعاتی را در مورد اینکه وقتی بدافزار اجرا شود چه اتفاقی خواهد افتاد فراهم میکند و میتواند به ما کمک کند یک نمونه بدافزار را مهندسی معکوس کنیم تا ببینیم چطور کار میکند.
همچنین به تحلیلگران کمک میکند بخشهایی از حافظهی برنامه را کنترل کنند تا نحوهی تأثیر آن روی شبکه را درک کنند.
ویراستارهای Hex: یک ویراستار Hex مثل HxD ویراستاری تخصصی است که میتواند هر نوعی از فایل را باز کرده و محتوای آن را بایت به بایت نمایش دهد. میتوان با استفاده از این ویراستار بدافزار را بهطور کامل تجزیه کرده و کد آن را ترجمه کرد.
مانیتورها: وقتیکه لازم باشد فایل سیستم و فعالیت Thread یا پردازش را بهصورت Real-Time ببینیم، باید از ابزار مانیتورینگ پیشرفتهای مثل Process Monitor استفاده کنیم. این ابزار یک درخت پردازش را نمایش میدهد که ارتباط بین همهی پردازشهایی که به آنها ارجاع داده شده است را نشان میدهد و همچنین بهطور قابلاطمینانی جزئیات فرایند را ثبت میکند.
آنالیز PE: وقتیکه به دنبال ابزار معکوسکننده رایگانافزار برای فایلهای PE هستیم، ابزاری مثل pefile، PE-bear و PeStudio عالی هستند. آنها در هنگام تصویرسازی یک بخش PE بسیار مفیدند و میتوانند به کاربر کمک کنند Signatureهای فایل، URLهای Hard-codeشده و آدرسهای IP را شناسایی کند.
تحلیلگران شبکه: این نوع نرمافزار به تحلیلگران میگوید که بدافزار چگونه با ماشینهای دیگر تعامل میکند. میتواند ارتباطات تهدید و دادههایی را که سعی در ارسالشان را دارد نمایش دهد.
نتیجهگیری
چندین ابزار آنالیز بدافزار وجود دارد که میتواند به تحلیلگران امنیتی کمک کند نمونههای بدافزار را مهندسی معکوس کنند. با وجود بیش از ۲۰۰۰۰۰ نمونه بدافزار که هر روز در آنالیز بدافزار کشف میشوند، هدف از این کار جلوگیری از حملات بدافزار مخرب و آسیب رسیدن به سازمانها است.