شناسایی و استخراج بدافزار PNG از فایل PCAP

استخراج بدافزار

امروزه حملات سایبری حالات مختلف و پیچیده‌ای را به خود گرفته‌اند. استفاده از بد‌افزار‌ها در حملات سایبری رو به افزایش است و این بدافزار‌ها، خود شامل دسته‌های متنوعی از جمله تروجان، کرم رایانه‌ای (Worm) و … هستند. بدافزار‌ها بنا به دلایل متفاوتی، مانند دریافت فایل بدافزار اصلی، ارتباط با C&C و …، با دامنه‌ها و آدرس‌های IP متفاوتی ارتباط برقرار کنند؛ یکی از مراحل فرآیند تحلیل یک بدافزار، کشف و بررسی همین دامنه‌هاست.

در این مقاله می‌خواهیم به تحلیل یک ارتباط شبکه‌ای مخرب بپردازیم، مواردی که در این مقاله مورد بررسی قرار می‌گیرند شامل موارد زیر می‌باشند:

  • آشنایی با ابزار‌های تحلیل ترافیک
  • آشنایی با ابزار Wireshark
  • تشخیص ترافیک مخرب
  • تحلیل و بررسی ترافیک مخرب
  • بررسی روش Partial GET
  • بررسی تأثیر مشکلات اتصال در تحلیل
  • استخراج فایل مخرب از پروتکل HTTP به منظور مهندسی معکوس و تحلیل آن

ارتباطات بدافزار را می‌توان از طریق روش‌های مختلفی، مانند بررسی ارتباطات با استفاده از ابزار‌هایی مانند FakeNet یا iNetSim، یا از طریق لاگ‌های جمع‌آوری شده توسط تیم عملیات امنیت یا SOC تحلیل کرد. فایل‌های pcap از جمله فایل‌های حاوی اطلاعات مربوط به ارتباطات شبکه‌ای هستند. این فایل‌ها را می‌توان با شیوه‌ها و ابزار‌های مختلفی مانند ابزار محبوب Wireshark،  بررسی کرد.

ابزار Wireshark، یک ابزار به منظور تحلیل فایل‌های pcap، مانیتورینگ ارتباطات شبکه‌ای و تحلیل پروتکل‌ها می‌باشد که به علت سادگی و سهولت کار، به یک ابزار محبوب برای این فرآیند تبدیل شده است.

تصویر زیر نمونه‌ای از محیط ابزار Wireshark است.

ابزار wireshark

ابزار Wireshark شامل سه قسمت Packet List (بخش بالایی ابزار، محیط سبز رنگ)، Packet Details (بخش میانی) و قسمت Packet Bytes است.

  • Packet List: بسته‌های ارسالی یک رابط یا Interface شبکه را نمایش می‌دهد.
  • Packet Details: اطلاعات و سرآیند‌های (Headers) یک پکت ارسالی را به صورت دقیق و جزئی نمایش می‌دهد.
  • Packet Bytes: و در نهایت این قسمت، محتوای پکت ارسالی را به صورت HEX و ASCII نمایش می‌دهد.
برای آشنایی بیشتر با نرم افزار وایرشارک، روی لینک زیر کلیک کنید:

در این‌جا می‌خواهیم یک فایل pcap مربوط به ارتباطات مخرب یک بدافزار را بررسی کنیم. ابتدا می‌بایست فایل pcap را در ابزار Wireshark باز کنیم، بدین منظور از منوی File گزینه‌ی Open را انتخاب می‌کنیم.

باز کردن فایل pcap

سپس فایل pcap خود را انتخاب کرده و Open را انتخاب نمایید.

بازکردن pcap در وایرشارک

پس از چند ثانیه (زمان باز شدن فایل وابسته به منابع سیستم و حجم فایل pcap است) محتویات فایل pcap در Wireshark به نمایش در می‌آید.

به منظور حفظ محرمانگی، در این مقاله تمامی نام‌های دامنه و آدرس‌های IP مخفی شده‌اند. در این مقاله دامنه‌ی مهاجم را با نام redacted.site می‌شناسیم.

به نظر می‌رسد فایل malware.pcap، حاوی ارتباطات شبکه‌ای زیادی است.

ارتباطات شبکه در فایل pcap

به منظور تأیید صحت این موضوع می‌توانید از منوی Statistics گزینه‌ی Capture File Properties را انتخاب نمایید (یا از میانبر Ctrl + Alt + Shift + C استفاده کنید).

صحت‌سنجی ارتباطات شبکه

در پنجره‌ی باز شده می‌توانید تعداد پکت‌های کپچرشده در فایل pcap را مشاهده کنید.

مشاهده پکت های کپچر شده

حالا باید یک لیست از اندپوینت‌های دخیل در ارتباطات برقرارشده بدست آوریم، بدین منظور می‌توانید از منوی  Statistics گزینه‌ی Endpoints را انتخاب نمایید.

اندپوینت های کپچر شده

در این‌جا می‌توانیم یک لیست از اندپوینت‌ها را مشاهده کنیم:

لیست اندپوینت های کپچر شده

تا اینجا متوجه شدیم که با تعداد آدرس‌های IP زیادی ارتباط برقرار شده، و هم‌چنین تعداد ۹۳۱ پکت در این فایل ذخیره شده است؛ حال باید تشخیص دهیم که این ارتباطات از چه نوعی بوده‌‌اند.  برای این کار باید از منوی Statistics گزینه‌ی Protocol Hierarchy را انتخاب کرد:

نوع ارتباط در wireshark

در تصویر زیر به نظر می‌رسد درخواست‌ها از نوع DNS و HTTP بوده‌اند:

نوع درخواست ها در wireshark

اکنون شروع به بررسی برخی از بسته‌های ارسالی می‌کنیم؛ همان‌طور که در تصویر بالا مشاهده می‌کنید، در این مثال ارتباطات 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 قابل مشاهده است.

فایل های ارسالی و دریافتی پروتکل http

همان‌طور که مشاهده می‌کنید فایل‌ها به علت اینکه پاسخ از نوع Partial Content بوده، خرد شده‌اند و تکه‌تکه هستند. در این‌جا می‌تون فایل‌ها را جداگانه دریافت کرد و در انتها آن‌ها را ادغام کرد؛ برای دریافت جداگانه‌ی فایل‌ها، ئ کافیست فایل را انتخاب کنید و گزینه‌ی Save را انتخاب نمایید تا فایل ذخیره گردد.

ذخیره فایل در wireshark

ذخیره‌ی فایل چهارم با مشکلی موجه شده است که به نظر می‌رسد به خاطر ناقص‌بودن فایل است؛ زیرا، در پنجره‌ی TCP Stream درخواست ارسالی چهارم (تصویر زیر) معادل ۱۲۰۸۹ بایت بوده است در حالی که در تصویر بالا، قسمت چهارم عکس ۲۴ کیلوبایت حجم دارد! به نظر می‌رسد در این‌جا مشکلی وجود دارد.

عدم مطابقت حجم پکت

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

مشکل در دریافت پکت

برای تأیید این موضوع می‌توانیم به منوی Statistics رفته و گزینه‌ی I/O Graphs را انتخاب کنید و در پنجره‌ی باز شده تعداد بسته‌های به مشکل خورده را، مشاهده کنید.

نمودار پکت های ورودی و خروجی
پکت های خراب

به نظر می‌رسد ابزار Wireshark قدرت تشخیص این مسأله را هنگام دانلود فایل ندارد. پس از تشخیص مشکل، می‌توان برای یافتن راه حل در گوگل جستجو کرد.

یکی از نتایج مرتبط جستجو، مقاله‌ای از SANS است که ابزاری به نام ChaosReader را معرفی کرده است.

جسجتو در گوگل

بخشی از این مقاله در معرفی این ابزار آمده است:

مقاله sans

«ابزار ChaosReader به گونه‌ای طراحی شده که با استفاده از آن بتوان متادیتایی تولید کرد که به راحتی قابل خواندن باشد و هم‌چنین بتوان از داده‌های پکت‌ها، فایل‌ها را استخراج کرد. این ابزار خروجی‌هایی با فرمت HTML تولید می‌کند که در آن‌ها جزییات مربوط به اطلاعات اتصال برای تمام هاست‌های شامل‌شده در یک فرایند پکت‌کپچر آمده است. علاوه براین ChosReader به گونه‌ای طراحی شده که با استفاده از آن بتوان فایل‌های متنقل‌شده روی پروتکل‌های HTTP و FTP را استخراج کرد. با وجود این که استفاده از این ابزار ساده است، تعداد زیادی فایل خروجی تولید می‌کند؛ همین مساله باعث می‌شود یافتن داده‌های سودمند دشوار شود. برای استخراج فایل‌ها باید ChaosReader را باید با سوییچ raw اجرا کرد تا فایل‌ها به صورت raw استخراج شوند. با این کار، ChaosReader فایل‌هایی با پسوند .raw تولید می‌کند که دقیقا حاوی همان فایل‌هایی هستند که حین فرایند پکت‌کپچر مربوطه انتقال داده شده‌اند.

این ابزار حین تست بعضی اوقات منجر به تولید فایل‌های ناقص شد. فایل‌های خروجی پس از استخراج با ابزار cmp خط فرمان لینوکس مقایسه شدند. علاوه بر این، با استفاده از hex editor و مقایسه‌ی اندازه‌ی فایل .dll استخراج‌شده و فایلی که ارسال شده بود نیز صحت این مساله تایید شد

برای امتحان این ابزار، نام آن را در گوگل جستجو کرده و آن را دانلود می‌کنیم:

دانلود chaosreader

این ابزار با زبان  Perl نوشته شده است. البته هنگام اجرای این ابزار با خطا مواجه می‌شویم:

خطا در اجرای برنامه perl

علت این خطا استفاده از *$ است که در نسخه‌های قدیمی Perl استفاده می‌شد. خطا در خط 265 رخ داده است؛ پس برای رفع آن به خط 265 رفته و این سطر را همانند تصویر زیر Comment کنید.

دیباگ کردن کد perl

فایل را ذخیره کرده و دوباره اجرا نمایید. این بار ابزار را با سوییچ help اجرا نمایید تا راهنمای ابزار را مشاهده کنید:

راهنمای اجرای برنامه

به نظر می‌رسد ابزار یک سوییچ برای اجرای کامل تمام فرآیند دارد. ابتدا یک پوشه ایجاد می‌کنیم و فایل pcap و ابزار chaosreader را به پوشه ایجاد شده انتقال می‌دهیم (این پوشه به این علت ایجاد می‌شود که خروجی ابزار ChaosReader در مسیر جاری قرار می‌گیرد). ابزار را با سوییچ e اجرا می‌کنیم و فایل pcap را به عنوان ورودی به آن می‌دهیم. ابزار تعداد زیادی فایل html و hex و انواع فایل‌های دیگر را ایجاد می‌کند.

خروجی های html و hex

در فایل‌های استخراج شده فایلی با نام index.html وجود دارد؛ این فایل را در یک مرورگر باز می‌کنیم. با توجه به حجم و تعداد پاسخ‌های دریافتی در یک Session، می‌توان حدس زد که درخواست با کادر قرمز، مربوط به دریافت فایل باشد. (برای تأیید این موضوع می‌توانید as_html یا hex را انتخاب نمایید و محتوای آن را مشاهده نمایید)

لیست خروجی ها

حالا می‌توانید فایل‌های با پسوند data را دانلود کنید (یا در مسیر خروجی ابزار آن را کپی کنید) و با استفاده از ابزاری مانند cat به یکدیگر بچسبانید.

دانلود و الحاق داده ها

در حال حاضر بدافزار ما فایل malware._exe است. کافیست آن را در یک ابزار مهندسی معکوس باز کنیم. در این جا آن را در IDA Pro باز می‌کنیم.

ابزار مهندسی معکوس IDA Pro

فایل به نظر درست است و از جنس PE می‌باشد. از String های فایل مخرب به نظر می‌رسد که بدافزار با CPP توسعه یافته است. حال می‌توان این فایل را با دانش مهندسی معکوس تحلیل و بررسی کرد؛ ادامه‌ی فرآیند مربوط به دانش مهندسی معکوس و تحلیل بدافزار است و حال یک تحلیل‌گر بدافزار می‌تواند آن را بررسی کند.

نویسنده: کوشا زنجانی

با برخی از ابزارهای تست نفوذ آشنا شوید:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *