ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
ReverseEngineering pinned «Roadmap Reverse Engineering بخش اول – پیش‌نیازها 1 برنامه‌نویسی سطح پایین C/C++ یاد بگیرید چون اکثر برنامه‌های باینری با این زبان‌ها نوشته می‌شن مفاهیم مثل: pointer، stack، heap، buffer، function call. منابع: Learn-C.org کتاب: C Programming Language…»
برخی از رایج‌ترین تکنیک‌های Binary Exploitation شامل:

1 Buffer Overflow: در این حمله، به مقدار بیش از ظرفیت بافر (حافظه موقت) داده وارد می‌شود تا باعث تغییر داده‌های حافظه یا اجرای کد دلخواه شود این تکنیک اغلب برای اجرای کد دلخواه یا تزریق کد به برنامه‌های آسیب‌پذیر استفاده می‌شود


2 Format String Vulnerability: این نوع آسیب‌پذیری زمانی اتفاق می‌افتد که ورودی کاربر به‌طور مستقیم در یک دستور printf یا مشابه آن قرار گیرد. حمله‌گر می‌تواند از این طریق به بخش‌های مختلف حافظه دسترسی پیدا کرده یا داده‌های حساس را استخراج کند


3 Use-after-free: این آسیب‌پذیری زمانی رخ می‌دهد که یک برنامه پس از آزادسازی حافظه (free) به آن دسترسی پیدا کند. مهاجم می‌تواند حافظه آزادشده را بازنویسی کرده و از آن برای اجرای کد دلخواه استفاده کند


4 Heap Spraying: مهاجم به‌طور مصنوعی حافظه heap را با داده‌های خاص پر می‌کند، به طوری که اجرای کد دلخواه ممکن است به دنبال این داده‌ها اتفاق بیافتد


5 Return-Oriented Programming (ROP): در این حمله، مهاجم از قطعات کد موجود در برنامه به نام "gadgets" برای ساختن یک رشته دستورات دلخواه استفاده می‌کند، بدون اینکه نیاز به تزریق کد جدید باشد


6 Stack Smashing: مشابه با buffer overflow است، اما معمولاً در زمینه حملات به پشته (stack) انجام می‌شود تا آدرس بازگشتی (return address) تابع را تغییر داده و جریان کنترل برنامه را به محل دلخواه هدایت کند



چطور به کار میاد؟

مهاجم معمولاً با استفاده از ابزارهای مهندسی معکوس (مثل گادمپ، OllyDbg، IDA Pro، Ghidra) باینری‌ها رو آنالیز می‌کنه تا آسیب‌پذیری‌ها رو پیدا کنه

پس از شناسایی آسیب‌پذیری مهاجم می‌تونه یک exploit بنویسه که به سیستم اجازه بده کد دلخواه اجرا کنه یا اطلاعات حساس رو استخراج کنه
#binary_exploitation
#binary
7🔥1👏1
ReverseEngineering
برخی از رایج‌ترین تکنیک‌های Binary Exploitation شامل: 1 Buffer Overflow: در این حمله، به مقدار بیش از ظرفیت بافر (حافظه موقت) داده وارد می‌شود تا باعث تغییر داده‌های حافظه یا اجرای کد دلخواه شود این تکنیک اغلب برای اجرای کد دلخواه یا تزریق کد به برنامه‌های…
چطور می‌تونیم از Binary Exploitation جلوگیری کنیم؟

1 Safe coding practices: استفاده از روش‌های برنامه‌نویسی امن


2 ASLR (Address Space Layout Randomization): با این تکنیک، آدرس‌های حافظه به طور تصادفی تغییر می‌کنن و حمله‌گر نمی‌دونه دقیقا کجا باید حمله کنه


3 Stack Canary: یه نوع محافظت از پشته هست که وقتی تغییرات مشکوکی رو شناسایی کرد جلوی اجرای برنامه رو می‌گیره


4 DEP (Data Execution Prevention): این تکنیک جلوی اجرای کد در بخش‌هایی از حافظه که نباید کد اجرا بشه رو می‌گیره

#binary
#binary_exploitation
👍63
چه ابزارهایی برای Binary Exploitation استفاده می‌کنیم؟

برای شروع با Binary Exploitation باید چند تا ابزار مهم رو بشناسیم که توی این حملات کمک می‌کنن این ابزارها می‌تونن به ما کمک کنن تا آسیب‌پذیری‌ها رو پیدا کنیم و ازشون بهره‌برداری کنیم

1 Ghidra: یک ابزار تحلیل باینری متن‌باز از NSA هست. با این ابزار می‌تونیم برنامه‌های باینری رو تحلیل کنیم و بفهمیم که کدهای داخلش چطور کار می‌کنن


2 IDA Pro: یکی از قدرتمندترین ابزارها برای مهندسی معکوس و تحلیل باینری‌ها. البته کمی گرونه


3 gdb (GNU Debugger): ابزار دیباگ کردن برنامه‌های C و C++ هست خیلی از زمان‌ها به ما کمک می‌کنه تا رفتار برنامه رو بررسی کنیم و ببینیم چه اتفاقاتی توی حافظه میفته


4 Radare2: ابزار دیگه‌ای برای مهندسی معکوس و تحلیل باینری‌ها که در مقایسه با IDA رایگان‌تر و متن‌بازه

#binary
#binary_exploitation
10👏1
Hacking- The Art of Exploitation (2nd ed. 2008) - Erickson.pdf
4.4 MB
کتاب "Hacking: The Art of Exploitation" نوشته Jon Erickson

یه منبع عالی برای شروع یادگیری هک و امنیته این کتاب بیشتر روی باینری اکسپلویتیشن تمرکز داره و بهتون یاد میده چطور با بهره‌برداری از مشکلات نرم‌افزاری مثل بافر اورفلو به سیستم‌ها نفوذ کنید و چطور مشکلات امنیتی نرم‌افزارها رو پیدا کنید و ازشون استفاده کنید مخصوصا برای نفوذ به سیستم‌های آسیب‌پذیر
#book
13🔥2👏1
مراحل پیدا کردن باگ در اپلیکیشن‌ها

1 جمع‌آوری اطلاعات:

بررسی ساختار برنامه dependencyها dllهای بارگذاری‌شده



2 رفتارشناسی دینامیک:

اجرای برنامه با ابزارهایی مثل x64dbg ، Procmon، Process Hacker



3 تحلیل استاتیک:

استفاده از IDA یا Ghidra برای بررسی کدها رشته‌ها


4 فاز کردن ورودی‌ها (Fuzzing):

بررسی واکنش برنامه به ورودی‌های ناسالم یا دستکاری‌شده



5 انالیز کرش و Debug:

دنبال کردن کرش‌ها با WinDbg یا x64dbg برای بررسی مسیر باگ



6 ساخت POC یا اکسپلویت:

اگر باگی پیدا شد، یه کد برای اثباتش بساز
10👏1🤣1
ابزار های مهم در این مسیر
👍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