ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
Junk Code Injection
روش‌های حذفش

یعنی تزریق دستوراتی که هیچ اثری روی اجرای برنامه ندارن فقط برای گمراه کردن تحلیلگر یا دیباگر استفاده میشن
👍71
ReverseEngineering
مثال ساده از Junk Code: push eax pop eax nop xor ecx, ecx add ecx, 0 jmp real_code
تغییری در وضعیت ایجاد نمی‌کنه / push eax pop eax

nop بی اثر است
no-operation

و بعد add ecx, 0 باعث می‌شه ecx همچنان صفر بمونه

در نهایت با jmp مستقیم به کد اصلی میره
👍6👏1
چرا این کارو می‌کنن؟

برای فریب دادن الگوریتم‌های decompiler

برای طولانی و بی‌نظم کردن گراف کنترل جریان (CFG)

برای کند کردن اسکریپت‌های تحلیل خودکار
👍8👏1
روش‌های شناسایی و حذف Junk Code:

دستی (Manual)

توی Ghidra یا IDA دنبال دستوراتی بگردید که:
ورودی و خروجی ندارن

روی ثبات‌ها (registers) تغییری ایجاد نمی‌کنن

به مسیر اجرایی اصلی مرتبط نیستن



خودکار با اسکریپت Ghidra

می‌تونیید اسکریپت بنویسید که:

دنبال nop, push/pop جفتی و xor reg, reg بگرده

بلاک‌هایی که فقط اینا رو دارن پاک یا علامت‌گذاری کنه
👍5👏1
ابزارهای آماده

BinDiff: برای مقایسه نسخه مبهم‌سازی‌شده با نسخه اصلی (اگه داشته باشید)

Diaphora: پلاگین مقایسه برای IDA
👍7👏1
مخرب ترین تکنیک‌های Obfuscation که فقط بدافزارنویسا بلدن

1 Control Flow Flattening

ساختار کد کاملاً به‌هم می‌ریزه به‌جای if/else و loop های مرسوم همه چی توی یه سوییچ و Dispatcher بزرگ قایم میشه
هدف؟ دیس‌اسمبلر رو گمراه میکنه دیباگر رو دیوونه میکنه

2 Virtualization Obfuscation

کل برنامه به یه زبان ماشین خیالی (VM-based) ترجمه میشه چیزی شبیه VMProtect
نتیجه؟ به‌جای opcodeهای x86 با دستوراتی عجیب و ناشناخته طرفی

3 Polymorphic Code

هر بار اجرا یا build کد تغییر می‌کنه ولی همون کار رو انجام میده
بدافزارها عاشقشن چون آنتی‌ویروس‌ها رو کور میکنن

4 Call Stack Tampering

فانکشن صدا زده می‌شه ولی نه از راهی که انتظار می‌ره؛ مثلا با دستکاری ESP یا EBP.
چرا مهمه؟ چون ابزارهایی مثل IDA به‌سختی می‌فهمن این یه "تابع" هست

5 API Hiding با Hash کردن نام توابع

به‌جای استفاده مستقیم از مثلا LoadLibrary یا GetProcAddress اسم APIها هش شده‌ست و در زمان اجرا resolve میشن
یعنی چی؟ یعنی ابزار تحلیل نمی‌فهمه برنامه چه APIهایی صدا میزنه
🔥71👍1👏1
آموزش عملی آنپکینگ UPX با OllyDbg (قدم به قدم)

مرحله 1: تشخیص پک UPX

با ابزارهایی مثل PEiD یا Detect It Easy بررسی کند که فایل UPX شده باشه


مرحله 2: بارگذاری فایل در OllyDbg

فایل رو باز کنید و منتظر باشید تا دیباگر برنامه رو لود کنه


مرحله 3: پیدا کردن نقطه اصلی اجرای کد

با دستورالعمل‌های داخل دیباگر جلو برید و به دنبال آدرس Entry Point واقعی باشید


مرحله 4: ذخیره حافظه Dump

وقتی رسیدید به نقطه‌ای که کد اصلی آنپک شده و اجرا می‌شه، حافظه رو Dump کنید


مرحله 5: اصلاح فایل

از ابزارهای مثل Scylla استفاده کنید تا IAT (Import Address Table) اصلاح بشه و فایل قابل اجرا بشه
👍4
ReverseEngineering
آموزش عملی آنپکینگ UPX با OllyDbg (قدم به قدم) مرحله 1: تشخیص پک UPX با ابزارهایی مثل PEiD یا Detect It Easy بررسی کند که فایل UPX شده باشه مرحله 2: بارگذاری فایل در OllyDbg فایل رو باز کنید و منتظر باشید تا دیباگر برنامه رو لود کنه مرحله 3: پیدا کردن…
نکات طلایی:

UPX
یه پک رایگانه و خیلی‌ها باهاش کار کردن پس اگه با UPX راحت شدید می‌تونید بعدش سراغ پکینگ‌های پیچیده‌تر برید

دنبال الگوریتم‌های پکینگ در حافظه باشید اونجا کد اصلی مخفی شده

Timing Check
رو موقع آنپکینگ بررسی کنید تا دیباگر رو گمراه نکنید
👍1👏1
👾پکینگ و آنپکینگ پیشرفته — چی‌جوری پیچیده‌تر میشه؟

وقتی می‌خواید نرم‌افزاری رو مهندسی معکوس کنید گاهی اون برنامه با یه پکینگ ساده مثل UPX بسته‌بندی نشده بلکه از پکینگ‌های پیشرفته و پیچیده استفاده کرده

🪤این پکینگ‌ها چیکار میکنن؟

⚠️کد برنامه رو طوری مخفی و محافظت می‌کنن که حتی وقتی برنامه اجرا میشه کد اصلی رو مستقیم نبینید

با استفاده از Virtualization-based Protection (مثل VMProtect یا Themida) کد برنامه رو به یه زبان مجازی خاص تبدیل میکنن که فقط داخل یه ماشین مجازی کوچیک اجرا بشه

از تکنیک‌های Anti-Debug استفاده می‌کنن که دیباگرها رو شناسایی کنن و جلوی تحلیل رو بگیرن

Code Obfuscation
برای پیچیده‌کردن ساختار کد استفاده میکنن تا فهمیدن عملکردش خیلی سخت بشه
👍21
فرق پکینگ ساده و پکینگ پیشرفته

پکینگ ساده مثل UPX فقط کد رو فشرده می‌کنه و بعد از اجرا سریع کد اصلی رو باز میکنه

پکینگ پیشرفته مثل Themida یه لایه خیلی ضخیم محافظتی داره که حتی بعد از آنپک کردن کد اصلی به شکل مستقیم دیده نمیشه
👍5👏1
This media is not supported in your browser
VIEW IN TELEGRAM
با ماژول hackrf تونسته ecu ماشین رو هک بکنه
😁71👍1👏1
Forwarded from GO-TO CVE
CVE-2023-38831-week-54.pdf
588.3 KB
بررسی CVE-2023-38831 – فقط یه فایل RAR باز کن… بوم! 🎯💣

سلام به همه عزیزان و عاشقان مهندسی معکوس! خوش اومدین به اپیزود ۵۴ از برنامه‌ی هفتگی GO-TO CVE! 🎙💻
این هفته رفتیم سراغ یه آسیب‌پذیری واقعی و پر سر و صدا اما قدیمی در یکی از محبوب‌ترین ابزارهای فشرده‌سازی دنیا WinRAR! 🎯

🔹 Week: 54
🔹 CVE: CVE-2023-38831
🔹 Type: RCE via Archive Trick
🔹 Target: WinRAR < v6.23

⚒️ Patch چی بوده؟
توی نسخه 6.23 و بالاتر، تیم WinRAR منطق اولویت‌دهی به فایل و فولدر با نام یکسان رو اصلاح کرده. حالا دیگه فولدر هم‌نام فایل نمی‌تونه باعث override رفتار کلیک بشه، و این یعنی پایان ترفند RCE با اسم‌گذاری هوشمندانه!
🎯 توی اپیزود ۵۴ از کانال GO-TO CVE با هم بررسی کردیم:

📬 عضویت در کانال + هر هفته یه باگ باحال برای تحلیل:
https://news.1rj.ru/str/GOTOCVE

#week_54
👍21