ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
خیلیا در مورد buffer overflow سوال میپرسن و یا نمیدونن چیه خیلی ساده میگم که قشنگ درک کنید و بفهمید وقتی که ما بیشتر از ظرفیت buffer مینویسیم buffer overflow رخ میده که میتونه منجر به باگ یا حتی در مواقعی منجر به هک سیستم بشه
10👏1
چند باگ که تو دنیای واقعی زیاد دیده میشه


Local buffer overflow باعث کرش برنامه یا اجرای کد میشه

Heap overflow منجر به خرابی ساختار هیپ و اجرای کد دلخواه میشه

ممکنه باعث کرش یا افشای اطلاعات Null pointer dereference


Format string bug گاهی باعث نوشتن روی حافظه حساس میشه
🔥4👍2🥰1
سناریوی عملی

فرض کن یه فایل اجرایی داری که ورودی رو می‌خونه و بعد باهاش کاری میکنه حالا تو این مسیر یه overflow داریم

مراحل کار:

1 پیدا کردن تابع آسیب‌پذیر با دیباگر (مثلا تابع strcpy)

2 بررسی محل کرش EIP / RIP بازنویسی شده؟

3 پیدا کردن فاصله از اول ورودی تا محل کنترل EIP

4 ساخت payload:

پر کردن فاصله با junk

اضافه کردن آدرس اجرای shellcode

تزریق یک shellcode ساده (مثلا اجرای Calculator)
👍5👏1
ابزارهایی که خیلی به دردمون میخورن

pattern_create.rb و pattern_offset.rb (از metasploit): برای پیدا کردن دقیق آفست EIP

mona.py توی Immunity Debugger: برای ساخت و آنالیز exploit

msfvenom: برای ساخت shellcode آماده
👍2🥰1
نکته‌های خیلی مهم

موقع تست روی فایل‌های مشکوک همیشه از VM استفاده کنید

هیچ وقت بدون آگاهی روی فایل‌های سیستمی واقعی کار نکنید

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

حمله فقط روی نسخه آسیب‌پذیر تست بشه
👍41👏1
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