👆👆 ادامه از پست قبل
قسمت دوم
۳. تکنیک Ghost PE و GhostPepper
تکنیک Ghost PE که در برخی منابع با نام GhostPepper نیز شناخته میشود، ترکیبی از لودرهای اختصاصی و shellcode پیشرفته است. هدف اصلی، لود کردن یک فایل اجرایی به صورت کامل در حافظه، بدون وابستگی به سیستم بارگذاری استاندارد ویندوز است.
طرز کار تکنیک Ghost PE:
لودینگ دستی (Manual Mapping): لودر، ساختارهای لازم (مثل sectionها، importها و relocationها) را، مشابه NT Loader، به صورت دستی، فقط در فضای حافظه، بازسازی و بارگذاری میکند.
عدم نیاز به PE Header: پس از map شدن، header اصلی حذف میشود، اما بسته به نیاز، اطلاعات موردنیاز (مثلاً آدرس توابع، entry point و …) ذخیره میشود.
اجرا به صورت in-memory shellcode: هیچ فایلی روی دیسک پدید نمیآید و بخش اجرایی حتی میتواند فقط بخش code section باشد.
دورزدن AV/EDR: ترکیبی از Reflective DLL Injection و manual mapping است، ولی هیچ نقطهی ثابت و signature واضحی برای ابزارهای دفاعی نمیگذارد.
مقایسه با Variable های مشابه
در تکنیکهایی مثل Process Hollowing یا Reflective DLL Injection، عمدتاً یک پروسس legitimate ساخته میشود و سپس با shellcode یا DLL، “hollow” یا “reflective” میشود. اما در Ghost PE کل بارگذاری انجام میشود بدون اینکه استاندارد فایل PE (در حافظه یا دیسک) حفظ گردد.
ابزارهای معروف در این مقاله :
ابزار GhostPepper (SpecterOps): اجرای PE کامل در حافظه
ابزار Donut: تزریق shellcode مدرن
ابزار PE-Sieve: کشف اجرای غیرمتعارف PE
۴. مطالعه موردی بر اساس Fortinet: «malware dump بدون PE Header»
مقاله Fortinet، نمونهای از بدافزاری را بررسی میکند که پس از dump شدن از حافظه، فاقد PE Header است. در این سناریو حمله، بدافزار به وسیلهی یک تکنیک manual map در فضای حافظه اجرا شده و سربرگ PE بلافاصله پاک شده یا هیچگاه به صورت کامل map نگشته است.
چالشهای تحلیل:
باز نشدن نمونه توسط ابزارهای PE Analysis: نرمافزارهایی چون PEStudio/IDA نمیتوانند بخش کد را دقیقاً پیدا یا disassemble کنند.
مشخص نبودن بخشهای کد/داده/import: ساختار sections از دست رفته است.
اشتباه گرفتن با shellcode محض: زمانی که ساختار PE قابل تشخیص نیست، گمان میرود فقط shellcode است.
ابهام در شناسایی نقاط ورودی: entry point میتواند با جابجایی offset در dump غیرقابل تعیین شود.
مراحل تحلیل:
۱. جستجوی Manual برای یافتن امضاهای مشترک (Signature carving): نمونه را از نظر الگوهای رایج اسمبلی و API های ویندوز بررسی کردند.
۲. یافتن توالیهای مشکوک: به کمک نشانههایی مثل توابع imported یا توالیهای رایج compilation (مانند epilog یا prolog های کامپایلرهای کلاسیک مایکروسافت).
۳. تحلیل رفتاری (dynamic): اجرای نمونه در محیط ایزوله و بررسی تعاملات حافظه (با ابزارهایی مانند x64dbg یا Ollydbg).
۴. بازسازی Header (Image Reconstruction): در برخی موارد، تحلیلگران سعی کردند با پیدا کردن موقعیت نسبی سورس، یک PE header اولیه (fake) ایجاد کنند تا فایل در تحلیلگر باز شود.
۵. مقوله Memory Forensics: استفاده از ابزاری چون Volatility و پلاگینهایی مثل malfind برای شناسایی و استخراج ایندیکتورهای حمله.
۵. چالشها در تحلیل این دسته نمونهها
مهمترین چالش تحلیل dump های فاقد PE Header عدم تطابق آنها با فرمتهای استاندارد ابزارهای تحلیل استاتیک است:
یافتن Offsetهای مهم (مانند entry point، importها یا exportها) باید به صورت manual انجام شود.
امکان پنهانسازی سورس اصلی: مهاجم میتواند بخش زیادی از کد را پراکنده/کدر یا رمز کند.
شناسایی Signature Memory-based: تشخیص رفتار در حافظه سخت میشود، مگر اینکه EDR یا کارشناس تهدید با ابزار memory scanner پیشرفته کار کند.
اتکای زیاد به Dynamic & Memory Analysis: استخراج رفتار در زمان اجرا در sandbox و memory dump analysis حیاتی است.
۶. راهکارها و تدابیر مقابلهای برای تحلیلگران
ابزارهای تخصصی Memory Hunting
ابزار PE-Sieve: بازیابی نمونههای mapped شده PE از حافظه، حتی در موارد فقدان سربرگ؛ بازسازی section و importها.
ابزار Volatility (و پلاگین malfind): شناسایی فرآیندهای مشکوک، تزریق سشن و memory carving.
ابزار Rekall: رقیب Volatility با امکانات بیشتر در memory scanning.
ابزار YARA با ruleهای memory: شناسایی ساختار و توالیهای رایج کامپایلر یا code cave خاص.
تاکتیکهای عملیاتی:
ادامه در پست بعدی..
👇👇#آکادمی_روزبه
مرکز تخصصی CISSP
Www.Roozbeh.academy