ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
A Buffer Overflow Study Attacks & Defenses.pdf
484.8 KB
این کتاب تمرکز زیادی روی توضیح عملی و فنی حملات Buffer Overflow داره مخصوصا در سیستم‌های مبتنی بر C/C++ و Windows/Linux

نویسندگان:
James C. Foster, Mark Osborn, Vincent Liu, Kevin M. Corey, Jason W. Nachtrab

سال انتشار: 2005

بافر اورفلو چیه و چطور باعث آسیب‌پذیری تو برنامه‌ها میشه

چطور میشه از این ضعف سو استفاده کرد و کنترل سیستم رو گرفت مثلا اجرای کد دلخواه روی دستگاه قربانی

چطور میشه جلوی این حملات رو گرفت با تکنیک‌هایی مثل نوشتن کد امن استفاده از ابزارهای محافظتی و مکانیزم‌های امنیتی سیستم‌عامل


در واقع هم یاد میده حمله کنی (برای یادگیری دفاع) و هم یاد میده دفاع کنی
🔥166😁2👍1
یه نقشه کلی برای اکسپلویت‌ سازی ساده

1 کشف آسیب‌پذیری (مثلا کرش با ورودی بزرگ)

2 باز کردن فایل توی دیباگر

3 پیدا کردن محل کرش و آفست

4 ساختن payload اولیه

5 تست payload → بررسی موفقیت کرش یا اجرای کد

6 اصلاح payload برای اجرای بهتر (مثلا اضافه کردن nop sled)

7 مستندسازی کامل همه مراحل
👍6👏1
تحلیل تکنیک‌ های ضد مهندسی معکوس (Anti-Reverse Engineering)

Anti-Debugging اگر دیباگر وصل باشه رفتار برنامه تغییر میکنه یا کرش میکنه

Obfuscation کدها رو ناخوانا و گنگ میکنه تا مسیر منطقی مشخص نباشه

Packing باینری فشرده یا رمز میشه و موقع اجرا آنپک میشه

Virtualization کد به زبان خاصی ترجمه میشه که فقط توی ماشین مجازی خاص اجرا میشه

Checksum / integrity check بررسی میکنه که کسی فایل رو تغییر نداده باشه مثلا برای جلوگیری از
patch
3👏1
بررسی Anti-Debugging

نمونه تکنیک‌ها:

استفاده از توابع API مثل

IsDebuggerPresent

CheckRemoteDebuggerPresent

دستکاری فلگ Trap در رجیستر EFLAGS

خواندن شمارنده زمان (مثلا با RDTSC) و بررسی تأخیر


راه مقابله:

patch کردن توابع

استفاده از پلاگین‌های ضد ضد دیباگ در x64dbg

نوشتن اسکریپت برای نادیده گرفتن رفتار مشکوک
👍7🥰1
Obfuscation (مبهم‌سازی کد)

مثال‌ها:

استفاده از متغیرها و توابع با نام‌های بی‌معنی

پرش‌های زیاد و بی‌ربط (jmp)

استفاده از ساختارهای پیچیده و بی‌هدف


راه‌حل:

بازنویسی دستی در ابزار Ghidra یا IDA

استفاده از deobfuscator ها یا پلاگین‌ها
👍4👏1
Packers پکرها

نرم‌افزارهایی مثل UPX، Themida، VMProtect باعث می‌شن باینری اصلی مخفی بمونه

راه تشخیص:

بخش‌های عجیب در ساختار PE (مثل .UPX)

اجرا نشدن برنامه در دیباگر

بررسی با PEiD یا Detect It Easy


راه عبور:

اجرای برنامه و گرفتن memory dump بعد از unpack

دنبال کردن نقطه آنپک با breakpoint روی VirtualProtect یا GetProcAddress
👍6👏1
Integrity Check

کد بررسی می‌کنه آیا تغییری در باینری ایجاد شده یا نه معمولا با توابع CRC، MD5، SHA یا جمع ساده بایت‌ها انجام میشه

راه دور زدن:

پیدا کردن تابعی که چک رو انجام می‌ده و نادیده گرفتن نتیجه‌اش

patch کردن شرط چک موفقیت یا شکست
👍51
1. crackmes.one

یکی از معروف‌ترین سایت‌ها برای تمرین مهندسی معکوس

شامل تعداد زیادی باینری با سطوح مختلف سختی

کاربران می‌تونن کدها رو آنالیز کنن و راه‌حل ارائه بدن


2. Reversing.kr

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

تمرین‌ها به صورت CTF طراحی شدن.


3. picoCTF

تمرین‌های CTF مخصوص تازه‌کارها تا سطح متوسط

بخش‌هایی مثل "Reverse Engineering" داره که خیلی برای شروع خوبه


4. crackmes.de

قدیمی و قابل اعتماد، با آرشیو بزرگی از CrackMe ها

نسخه‌های ویندوزی و لینوکسی از نرم‌افزارها رو برای تحلیل میذاره


5. Hack The Box

دارای بخش Reverse Engineering و Binary Exploitation

ماشین‌ها و چالش‌های واقعی برای تمرین سطح پیشرفته


6. Root Me

بخش Reverse Engineering داره

شامل چالش‌های تحت ویندوز، لینوکس ARM و … هست



7. OpenSecurityTraining

دوره‌های حرفه‌ای برای آموزش دیباگینگ ASM و RE
👍112👏1
Scylla / x64dbg دمپ گرفتن از حافظه unpack برای

Detect It Easy (DIE) تشخیص نوع پکر یا محافظ

OllyDbg plugins (StrongOD, HideDebugger) مقابله با ضد دیباگ

Ghidra noscripting شناسایی مسیر های پرش پیچیده یا بی هدف
3👍2
تمرین کاربردی

پیشنهاد می‌کنم یکی از برنامه‌های UPX-packed رو باز کنید و مراحل زیر رو انجام بدید:

1 اجرای فایل توی دیباگر → مشاهده رفتار عجیب


2 شناسایی نقطه آنپک (با breakpoint روی VirtualAlloc)


3 گرفتن dump حافظه بعد از آنپک


4 باز کردن dump توی IDA یا Ghidra و تحلیل کد واقعی
2👍1
ساخت آنپکر اختصاصی برای فایل‌های Pack شده

بعد از اینکه فهمیدید یه فایل pack شده‌ست (مثلا با UPX یا پکرهای خاص) وقتشه خودتون بتونید برای اون یک آنپکر بسازید و باینری اصلی رو بازیابی کنید



چرا باید خودمون آنپکر بنویسیم؟

همه فایل‌ها با ابزارهای آماده قابل آنپک نیستن مثلا نسخه‌های دستکاری‌ شده یا سفارشی‌شده‌ی UPX

در بعضی مواقع نیاز به خودکارسازی دارید (مثلا اسکن دسته‌ای)

این تمرین باعث میشه به درک عمیق‌تری از ساختار PE و مکانیزم اجرای ویندوز برسید
👍6