uz
Feedback
ReverseEngineering

ReverseEngineering

Kanalga Telegram’da o‘tish
1 265
Obunachilar
Ma'lumot yo'q24 soatlar
-37 kun
+730 kun
Postlar arxiv
این پست رو تا جایی که میتونید share کنید ممنون. Share this post as much as you can thanks.

┌──────────────┐ ← High Addresses │ Stack │ ← Contains Local Variables, Return Addresses ├──────────────┤ │ Heap │ ← Contains Dynamic Objects (malloc/new) ├──────────────────────────────────── │ BSS & Data │ ← Global/static variables ├───────────────────────┘ ← Lower addresses Exploits usually occur in the Stack or Heap 🧨 Most important types of bugs in Binary Exploitation Type of vulnerability: Buffer Overflow Writing more data than allowed into the buffer can overwrite the Return Address Stack-based Overflow Overflow The stack is usually used to control EIP/RIP Heap Overflow Overflow in the heap causes malloc structures to fail Use-After-Free Using a pointer after freeing causes control over freed memory Format String Bug Unsafe use of printf can cause memory leak or write Integer Overflow/Underflow Causes memory allocation or bypass errors Checks are Double Free Freeing a pointer twice leads to heap corruption 🧭 General steps of Binary Exploitation Create a crash Bug Trigger: Make the program crash with specific input For example, overflow the buffer with a very long string Analyze the bug: Use gdb, pwndbg, gef, or radare2 Understand what exactly was overwritten, what registers are controllable, and what the execution flow is like Leak Security Information: To bypass ASLR or PIE, you need to leak addresses For example, you use a format string to print pointers Build Payload Exploit: For example, build a ROP chain or Shellcode Carefully change the Return Address to your gadgets or shellcode Bypass Protections: Modern browsers and binaries have protections such as: ASLR Addresses are randomized, you need to leak NX / DEP Stack is not executable, you should use ROP Canary Overflow protection should be leaked or bypassed PIE / RELRO Hardening GOT/PLT control Taking ultimate control: Usually an exploit ends in one of the following: Executing Shellcode and getting a shell 🐚 Executing ROP chain to execute system commands Changing program behavior in favor of the attacker 🧰 Important tools in Binary Exploitation Most used tools: gdb + pwndbg or gef Debugging and crash and memory analysis radare2, Ghidra, IDA Pro Binary reverse engineering ROPgadget, ROPPER Finding ROP gadgets pwntools Quickly building exploits with Python angr, Qiling Symbolic analysis or advanced emulation checksec Checking binary protections 🧪 Very simple classic Stack Overflow example Vulnerable code:
#include <stdio.h> #include <string.h> void vuln() { char buf[64]; gets(buf); // ❌ Insecure printf("You said: %s\n", buf); } int main() { vuln(); return 0; }
If you give more than 64 bytes in input, you can overwrite the Return Address and send the program to your shellcode address instead of returning to main @reverseengine

Binary Exploitation (اکسپلویت باینری) یعنی پیدا کردن و سواستفاده از باگ‌ها یا ضعف‌های امنیتی داخل برنامه‌های باینری  Executable  ها برای تغییر جریان اجرای برنامه یا اجرای کد دلخواه مهاجم تعریف ساده‌تر: فرض کنید یه برنامه‌ی C دارید که ورودی کاربر رو بدون بررسی میگیره و توی یه بافر کپی میکنه اگه بیشتر از ظرفیت بافر داده بدید میتونید داده‌ هاتون رو توی قسمت‌ های مهم حافظه بنویسید و برنامه رو مجبور کنید کاری که شما میخاید انجام بده به این میگن Binary Exploitation یعنی استفاده از باگ‌ های حافظه یا منطقی برای گرفتن کنترل Execution 🧱 ساختار پایه‌ای حافظه فرایند: برای درک Binary Exploitation باید با ساختار حافظه یه برنامه اشنا باشید: ┌───────────────┐  ← آدرس‌های بالا │ Stack         │  ← شامل متغیرهای لوکال، Return Addressها ├───────────────┤ │ Heap          │  ← شامل آبجکت‌های داینامیک (malloc/new) ├───────────────┤ │ BSS & Data    │  ← متغیرهای global/static ├───────────────┤ │ Text (.text)  │  ← کد برنامه (read-only) └───────────────┘  ← آدرس‌های پایین اکسپلویت معمولا توی Stack یا Heap اتفاق میوفته 🧨 مهم‌ترین نوع باگ‌ها در Binary Exploitation نوع آسیب‌ پذیری: Buffer Overflow نوشتن داده بیش از حد مجاز داخل بافر  میتونه Return Address رو overwrite کنه Stack-based Overflow Overflow توی استک  معمولا برای کنترل EIP/RIP استفاده میشه Heap Overflow اورفلو توی Heap  باعث خرابی ساختار های malloc میشه Use-After-Free استفاده از اشاره‌ گر بعد از free کردن باعث کنترل حافظه آزاد شده میشه Format String Bug استفاده ناامن از printf  میتونه memory leak یا write بده Integer Overflow/Underflow باعث خطا در تخصیص حافظه یا bypass کردن چک‌ ها میشه Double Free آزاد کردن یک pointer دوبار  منجر به corruption توی heap میشه 🧭 مراحل کلی Binary Exploitation کرش ایجاد کنید Bug Trigger: با ورودی خاص باعث کرش برنامه شید مثلا با یک رشته خیلی بلند بافر رو سرریز کنید باگ رو آنالیز کنید: از gdb, pwndbg, gef, یا radare2 استفاده کنید بفهم چی دقیقا overwrite شده چه رجیستر هایی قابل کنترل هستن و جریان اجرای برنامه چطوریه لیک اطلاعات امنیتی: برای بایپس کردن ASLR یا PIE باید آدرس‌ ها رو leak کنید مثلا از format string استفاده میکنید تا pointer ها رو چاپ کنید ساخت Payload Exploit: مثلا ROP chain یا Shellcode بسازید با دقت Return Address رو به گجت‌ها یا shellcode خودتون تغییر بدید بایپس کردن Protections: مرورگرها و باینری‌های مدرن محافظت‌هایی دارن مثل: ASLR آدرس‌ ها تصادفی میشن باید leak بگیری NX / DEP استک اجرایی نیست باید ROP استفاده کنید Canary محافظت در برابر overflow باید نشتش بدید یا دورش بزنید PIE / RELRO سخت‌تر کردن کنترل GOT/PLT گرفتن کنترل نهایی: معمولا exploit به یکی از این‌ ها ختم می‌شه: اجرای Shellcode و گرفتن شل 🐚 اجرای ROP chain برای اجرای دستورات سیستم تغییر رفتار برنامه به نفع مهاجم 🧰 ابزارهای مهم در Binary Exploitation ابزارهای پرکاربرد: gdb + pwndbg یا gef دیباگ و آنالیز کرش و حافظه radare2, Ghidra, IDA Pro  مهندسی معکوس باینری ROPgadget, ROPPER پیدا کردن گجت‌های ROP pwntools ساخت سریع اکسپلویت با پایتون angr, Qiling تحلیل سمبولیک یا امولیشن پیشرفته checksec بررسی محافظت‌ های باینری 🧪 مثال خیلی ساده Stack Overflow کلاسیک کد آسیب‌پذیر:
#include <stdio.h> #include <string.h> void vuln() {     char buf[64];     gets(buf);  // ❌ ناامن     printf("You said: %s\n", buf); } int main() {     vuln();     return 0; }
اگه توی ورودی بیشتر از 64 بایت بدید می‌تونی Return Address رو overwrite کنید و برنامه رو به جای برگشت به main بفرستید روی آدرس shellcode خودتون Binary Exploitation It means finding and exploiting bugs or security weaknesses in binary executable programs to change the flow of program execution or execute the attacker's desired code Simpler definition: Suppose you have a C program that takes user input without checking and copies it into a buffer. If you give it more than the buffer capacity, you can write your data into important parts of memory and force the program to do what you want This is called Binary Exploitation, which means using memory or logic bugs to take control of Execution 🧱 Basic Structure of Process Memory: To understand Binary Exploitation, you need to be familiar with the memory structure of a program:

بخش چهارم بافر اورفلو
توضیح heap overflow هیپ جایی که برای تخصیص حافظه پویا با malloc calloc یا new heap overflow زمانی رخ میده که داده ای زیاد در بلاک های heap نوشته بشه متادیتای allocator یا بلاک های همجوار رو خراب میکنه خطاهای heap معمولا با کرش در توابع libc یا هنگام free کردن حافظه دیده میشن و ردگیری اونها با tools مثل valgrind یا heap debugger مفیده کد هیپ در این کد یک بلوک روی heap اختصاص داده شده و بعد با memset مقدار بیشتری از اندازه نوشته میشه هدف دیدن خطا در زمان free یا گزارش valgrind هست کد هیپ فایل any_heap.c:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() {     char *p = malloc(32);     if (!p) return 1;     printf("allocated 32 bytes on heap\n");     /* intentionally overflow the heap block for any_heap        do not use this pattern in real code */     memset(p, 'A', 64);     free(p);     printf("freed block\n");     return 0; }
دستورات اجرا و بررسی heap از valgrind یا malloc debug استفاده کنید تا متادیتا یا خطاها رو ببینید
gcc -g any_heap.c -o any_heap valgrind --leak-check=full ./ any_heap
# یا اجرا در محیطی با malloc debug فعال نکات که هنگام نوشتن کد باید بدونیم خطاهای هیپ ممکنه فوری کرش نکنن و اغلب در زمان free یا عملیات بعدی ظاهر میشن از ابزارهایی مثل valgrind یا malloc debug برای ردگیری استفاده کنید
Part 4 Buffer Overflow
Heap Overflow Explanation Heap where to allocate dynamic memory with malloc calloc or new Heap overflow occurs when too much data is written to heap blocks Corrupts allocator metadata or adjacent blocks Heap errors are usually seen with crashes in libc functions or when freeing memory and are useful to trace with tools like valgrind or heap debugger Heap Code In this code, a block is allocated on the heap and then written with memset more than the size The goal is to see the error at free time or in valgrind reports Heap Code File any_heap.c:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *p = malloc(32); if (!p) return 1; printf("allocated 32 bytes on heap\n"); /* intentionally overflow the heap block for any_heap do not use this pattern in real code */ memset(p, 'A', 64); free(p); printf("freed block\n"); return 0; }
Heap execution and inspection commands Use valgrind or malloc debug to see metadata or errors
gcc -g any_heap.c -o any_heap valgrind --leak-check=full ./ any_heap
# or run in an environment with malloc debug enabled Things to know when writing code Heap errors may not crash immediately and often appear during free or subsequent operations Use tools like valgrind or malloc debug for tracing @reverseengine

Learning Binary Ninja for Reverse Engineering - Scripting Basics and More Part 1 https://www.youtube.com/watch?v=RVyZBqjLrE0 @reverseengine

An introduction to reverse engineering .NET AOT applications https://harfanglab.io/en/insidethelab/reverse-engineering-ida-pro-aot-net @reverseengine

Streamlining Vulnerability Research with the Idalib Rust Bindings for IDA 9.2 https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings @reverseengine

Windows API Arsenal Reverse Engineering Reference https://blog.fautl.com/api-list.html @reverseengine

A .NET Assembly Tracer Using Harmony for Runtime Method Interception https://github.com/eversinc33/NetRunner @reverseengine @reverseengine

تمام اموزشات جنبه ی آموزشی دارن و هرگونه استفاده نادرست مسئولیتش با خودتونه لطفا درست استفاده کنید All training is for educational purposes only and any misuse is your responsibility. Please use it correctly.

Root Shell on Credit Card Terminal https://stefan-gloor.ch/yomani-hack @reverseengine

Kill EDR Processes Permanently User-Mode Code and Its Rootkit https://github.com/SaadAhla/dark-kill @reverseengine

Adaptix C2 https://github.com/Adaptix-Framework/Extension-Kit https://github.com/Adaptix-Framework/AdaptixC2
sudo apt install mingw-w64 make wget https://go.dev/dl/go1.24.4.linux-amd64.tar.gz -O /tmp/go1.24.4.linux-amd64.tar.gz sudo rm -rf /usr/local/go /usr/local/bin/go sudo tar -C /usr/local -xzf /tmp/go1.24.4.linux-amd64.tar.gz sudo ln -s /usr/local/go/bin/go /usr/local/bin/go sudo apt install gcc g++ build-essential cmake libssl-dev qt6-base-dev qt6-websockets-dev qt6-declarative-dev git clone https://github.com/Adaptix-Framework/AdaptixC2.git cd AdaptixC2 make server make extenders make client cd dist chmod +x ssl_gen.sh ./ssl_gen.sh ./adaptixserver -profile profile.json ./AdaptixClient
@reverseengine