امروزه حملات سایبری حالات مختلف و پیچیدهای را به خود گرفتهاند. استفاده از بدافزارها در حملات سایبری رو به افزایش است و این بدافزارها، خود شامل دستههای متنوعی از جمله تروجان، کرم رایانهای (Worm) و … هستند. بدافزارها بنا به دلایل متفاوتی، مانند دریافت فایل بدافزار اصلی، ارتباط با C&C و …، با دامنهها و آدرسهای IP متفاوتی ارتباط برقرار کنند؛ یکی از مراحل فرآیند تحلیل یک بدافزار، کشف و بررسی همین دامنههاست.
در این مقاله میخواهیم به تحلیل یک ارتباط شبکهای مخرب بپردازیم، مواردی که در این مقاله مورد بررسی قرار میگیرند شامل موارد زیر میباشند:
ارتباطات بدافزار را میتوان از طریق روشهای مختلفی، مانند بررسی ارتباطات با استفاده از ابزارهایی مانند FakeNet یا iNetSim، یا از طریق لاگهای جمعآوری شده توسط تیم عملیات امنیت یا SOC تحلیل کرد. فایلهای pcap از جمله فایلهای حاوی اطلاعات مربوط به ارتباطات شبکهای هستند. این فایلها را میتوان با شیوهها و ابزارهای مختلفی مانند ابزار محبوب Wireshark، بررسی کرد.
ابزار Wireshark، یک ابزار به منظور تحلیل فایلهای pcap، مانیتورینگ ارتباطات شبکهای و تحلیل پروتکلها میباشد که به علت سادگی و سهولت کار، به یک ابزار محبوب برای این فرآیند تبدیل شده است.
تصویر زیر نمونهای از محیط ابزار Wireshark است.
ابزار Wireshark شامل سه قسمت Packet List (بخش بالایی ابزار، محیط سبز رنگ)، Packet Details (بخش میانی) و قسمت Packet Bytes است.
در اینجا میخواهیم یک فایل pcap مربوط به ارتباطات مخرب یک بدافزار را بررسی کنیم. ابتدا میبایست فایل pcap را در ابزار Wireshark باز کنیم، بدین منظور از منوی File گزینهی Open را انتخاب میکنیم.
سپس فایل pcap خود را انتخاب کرده و Open را انتخاب نمایید.
پس از چند ثانیه (زمان باز شدن فایل وابسته به منابع سیستم و حجم فایل pcap است) محتویات فایل pcap در Wireshark به نمایش در میآید.
به منظور حفظ محرمانگی، در این مقاله تمامی نامهای دامنه و آدرسهای IP مخفی شدهاند. در این مقاله دامنهی مهاجم را با نام redacted.site میشناسیم.
به نظر میرسد فایل malware.pcap، حاوی ارتباطات شبکهای زیادی است.
به منظور تأیید صحت این موضوع میتوانید از منوی Statistics گزینهی Capture File Properties را انتخاب نمایید (یا از میانبر Ctrl + Alt + Shift + C استفاده کنید).
در پنجرهی باز شده میتوانید تعداد پکتهای کپچرشده در فایل pcap را مشاهده کنید.
حالا باید یک لیست از اندپوینتهای دخیل در ارتباطات برقرارشده بدست آوریم، بدین منظور میتوانید از منوی Statistics گزینهی Endpoints را انتخاب نمایید.
در اینجا میتوانیم یک لیست از اندپوینتها را مشاهده کنیم:
تا اینجا متوجه شدیم که با تعداد آدرسهای IP زیادی ارتباط برقرار شده، و همچنین تعداد ۹۳۱ پکت در این فایل ذخیره شده است؛ حال باید تشخیص دهیم که این ارتباطات از چه نوعی بودهاند. برای این کار باید از منوی Statistics گزینهی Protocol Hierarchy را انتخاب کرد:
در تصویر زیر به نظر میرسد درخواستها از نوع DNS و HTTP بودهاند:
اکنون شروع به بررسی برخی از بستههای ارسالی میکنیم؛ همانطور که در تصویر بالا مشاهده میکنید، در این مثال ارتباطات HTTP شامل تعدادی ارتباط از نوع Media هم میشود؛ اگر به طور دقیقتر این ارتباطات را بررسی کنیم، یک فایل Word (با پسوند doc) و یک فایل عکس (با پسوند png) را خواهیم یافت.
نکته: بدافزارها برای جلوگیری از شناساییشدن توسط سیستمهای مانیتورینگ، از شیوههای متعددی استفاده میکنند؛ یکی از این شیوهها میتواند ارسال یک فایل مخرب با پسوندهای نامتعارف یا پسوندهای مرسوم و غیرمشکوک مانند jpg و pdf و … باشد.
تصویر زیر پکتهای ارسالی برای دانلود تصویر 786545435 با پسوند png را نشان میدهد. در این تصویر دیده میشود که ابتدا یک درخواست HEAD برای اطمینان از وجود فایل ارسال شده است و سپس بایتهای تصویر به سمت کاربر ارسال شدهاند (دانلود).
اما پاسخ دریافتی از سرور از نوع Partial Content است؛ این پاسخ زمانی به کاربر ارسال میشود که یک فایل حجم زیادی دارد و سرور آن را تقسیم به قطعههای کوچکتر (یا به اصطلاح Segmentation) کرده و فایل را تکهتکه به کاربر ارسال میکند. بر روی یکی از درخواستهای ارسالی برای دریافت تصویر کلیک راست میکنیم و از منوی Follow گزینهی HTTP Stream (یا میانبر Ctrl + Alt + Shift + H) یا گزینهی TCP Stream را انتخاب کنید.
یک پنجرهی جدید باز میشود که شامل مجموعه درخواستهای ارسالی برای دریافت این تصویر است.
اگر به تصویر دقت کنید مورد مشکوکی را متوجه خواهید شد؛ محتوای عکس، یک فایل اجرایی ویندوز است! این مورد را میتوان از طریق Header دریافتی درخواست متوجه شد.
این درخواست به شدت مشکوک است. با مشاهدهی چنین درخواستی این فایل را استخراج میکنیم تا در فرآیند مهندسی معکوس و تحلیل بدافزار به عملکرد آن پی ببریم. برای دانلود فایل در Wireshark چندین راه وجود دارد؛ یک راه سادهی آن، استفاده از قابلیت Export Objects است؛ کافیست از منوی File گزینهی Export Objects و زیرمنوی HTTP را انتخاب نمایید.
پنجرهی زیر باز میگردد و فایلهای ارسالی و دریافتی توسط پروتکل HTTP قابل مشاهده است.
همانطور که مشاهده میکنید فایلها به علت اینکه پاسخ از نوع Partial Content بوده، خرد شدهاند و تکهتکه هستند. در اینجا میتون فایلها را جداگانه دریافت کرد و در انتها آنها را ادغام کرد؛ برای دریافت جداگانهی فایلها، ئ کافیست فایل را انتخاب کنید و گزینهی Save را انتخاب نمایید تا فایل ذخیره گردد.
ذخیرهی فایل چهارم با مشکلی موجه شده است که به نظر میرسد به خاطر ناقصبودن فایل است؛ زیرا، در پنجرهی TCP Stream درخواست ارسالی چهارم (تصویر زیر) معادل ۱۲۰۸۹ بایت بوده است در حالی که در تصویر بالا، قسمت چهارم عکس ۲۴ کیلوبایت حجم دارد! به نظر میرسد در اینجا مشکلی وجود دارد.
اگر درخواستهای Partial Content را تحلیل کنیم، متوجه خواهیم شد که در هنگام دریافت بخش چهارم پاسخ، مشکلی به وجود آمده و یک تکه از فایل (به علت خصوصیت TCP) دو بار دریافت شده است.
برای تأیید این موضوع میتوانیم به منوی Statistics رفته و گزینهی I/O Graphs را انتخاب کنید و در پنجرهی باز شده تعداد بستههای به مشکل خورده را، مشاهده کنید.
به نظر میرسد ابزار Wireshark قدرت تشخیص این مسأله را هنگام دانلود فایل ندارد. پس از تشخیص مشکل، میتوان برای یافتن راه حل در گوگل جستجو کرد.
یکی از نتایج مرتبط جستجو، مقالهای از SANS است که ابزاری به نام ChaosReader را معرفی کرده است.
بخشی از این مقاله در معرفی این ابزار آمده است:
«ابزار ChaosReader به گونهای طراحی شده که با استفاده از آن بتوان متادیتایی تولید کرد که به راحتی قابل خواندن باشد و همچنین بتوان از دادههای پکتها، فایلها را استخراج کرد. این ابزار خروجیهایی با فرمت HTML تولید میکند که در آنها جزییات مربوط به اطلاعات اتصال برای تمام هاستهای شاملشده در یک فرایند پکتکپچر آمده است. علاوه براین ChosReader به گونهای طراحی شده که با استفاده از آن بتوان فایلهای متنقلشده روی پروتکلهای HTTP و FTP را استخراج کرد. با وجود این که استفاده از این ابزار ساده است، تعداد زیادی فایل خروجی تولید میکند؛ همین مساله باعث میشود یافتن دادههای سودمند دشوار شود. برای استخراج فایلها باید ChaosReader را باید با سوییچ –raw اجرا کرد تا فایلها به صورت raw استخراج شوند. با این کار، ChaosReader فایلهایی با پسوند .raw تولید میکند که دقیقا حاوی همان فایلهایی هستند که حین فرایند پکتکپچر مربوطه انتقال داده شدهاند.
این ابزار حین تست بعضی اوقات منجر به تولید فایلهای ناقص شد. فایلهای خروجی پس از استخراج با ابزار cmp خط فرمان لینوکس مقایسه شدند. علاوه بر این، با استفاده از hex editor و مقایسهی اندازهی فایل .dll استخراجشده و فایلی که ارسال شده بود نیز صحت این مساله تایید شد.»
برای امتحان این ابزار، نام آن را در گوگل جستجو کرده و آن را دانلود میکنیم:
این ابزار با زبان Perl نوشته شده است. البته هنگام اجرای این ابزار با خطا مواجه میشویم:
علت این خطا استفاده از *$ است که در نسخههای قدیمی Perl استفاده میشد. خطا در خط 265 رخ داده است؛ پس برای رفع آن به خط 265 رفته و این سطر را همانند تصویر زیر Comment کنید.
فایل را ذخیره کرده و دوباره اجرا نمایید. این بار ابزار را با سوییچ help اجرا نمایید تا راهنمای ابزار را مشاهده کنید:
به نظر میرسد ابزار یک سوییچ برای اجرای کامل تمام فرآیند دارد. ابتدا یک پوشه ایجاد میکنیم و فایل pcap و ابزار chaosreader را به پوشه ایجاد شده انتقال میدهیم (این پوشه به این علت ایجاد میشود که خروجی ابزار ChaosReader در مسیر جاری قرار میگیرد). ابزار را با سوییچ e اجرا میکنیم و فایل pcap را به عنوان ورودی به آن میدهیم. ابزار تعداد زیادی فایل html و hex و انواع فایلهای دیگر را ایجاد میکند.
در فایلهای استخراج شده فایلی با نام index.html وجود دارد؛ این فایل را در یک مرورگر باز میکنیم. با توجه به حجم و تعداد پاسخهای دریافتی در یک Session، میتوان حدس زد که درخواست با کادر قرمز، مربوط به دریافت فایل باشد. (برای تأیید این موضوع میتوانید as_html یا hex را انتخاب نمایید و محتوای آن را مشاهده نمایید)
حالا میتوانید فایلهای با پسوند data را دانلود کنید (یا در مسیر خروجی ابزار آن را کپی کنید) و با استفاده از ابزاری مانند cat به یکدیگر بچسبانید.
در حال حاضر بدافزار ما فایل malware._exe است. کافیست آن را در یک ابزار مهندسی معکوس باز کنیم. در این جا آن را در IDA Pro باز میکنیم.
فایل به نظر درست است و از جنس PE میباشد. از String های فایل مخرب به نظر میرسد که بدافزار با CPP توسعه یافته است. حال میتوان این فایل را با دانش مهندسی معکوس تحلیل و بررسی کرد؛ ادامهی فرآیند مربوط به دانش مهندسی معکوس و تحلیل بدافزار است و حال یک تحلیلگر بدافزار میتواند آن را بررسی کند.
نویسنده: کوشا زنجانی