ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
دوستان حمایت کنید اگه حمایت نکنید منم نمیتونم ادامه بدم چون انگیزه ای نیست خیلی ممنون دمتون گرم
52👎4🥰3🍾2🗿2👍1💋1
مهندسی معکوس اپلیکیشن‌های ویندوزی و پیدا کردن آسیب‌پذیری‌ها

مقدمات تحلیل آسیب‌پذیری‌ها در برنامه‌های ویندوزی

قبل از هرچیزی اینا باید براتون جا افتاده باشه:

درک ساختار حافظه در ویندوز (استک، هیپ، رجیسترها)

مفاهیم باگ‌هایی مثل Buffer Overflow، Use After Free، Integer Overflow

نحوه عملکرد Exception Handling در ویندوز
👍17👏1
رایج ترین اسیب پذیری هایی که باید دنبالشون بگردید
👌121👏1😁1
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