ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
ابزار های مهم در این مسیر
👍14🔥2👏1
مثال عملی ساده

مثلا برنامه‌ای داری که ورودی یوزر رو می‌گیره:

char buffer[100];
gets(buffer);


اینجا احتمال Buffer Overflow هست با یه فایل ساده حاوی رشته‌ی بلند برنامه کرش میکنه بعدش با x64dbg مسیر بازنویسی EIP رو دنبال می‌کنی و یه shellcode کوچیک تزریق می‌کنی
🔥3🥰1🤣1
Binary Exploitation معمولا توی سطح خیلی پایین سیستم اتفاق می‌افته یعنی باید با چیزایی مثل:

اسمبلی (Assembly)

ساختار حافظه مثل Stack و Heap

نحوه‌ی کارکرد تابع‌ها و برگشت از اون‌ها

سیستم‌عامل‌ها (مخصوصا لینوکس)



چندتا کاربرد مهم Binary Exploitation :

1 نوشتن اکسپلویت برای برنامه‌های آسیب‌پذیر

مثلا یه برنامه C داری که توش بافر اورفلو داره با ساختن یه ورودی خاص میتونید کاری کنید که اون برنامه به جای اجرای کد خودش کدی که شما نوشتی رو اجرا کنه


2 Capture the Flag (CTF)

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


3 تحلیل بدافزارها

گاهی بدافزارها با روش‌هایی مثل ROP یا تزریق کد سیستم رو الوده میکنن اگه Binary Exploitation بلد باشید بهتر میتونید عملکردشون رو بفهمید
🔥7👍21👏1🤣1
خیلیا در مورد 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