Junk Code Injection
روشهای حذفش
یعنی تزریق دستوراتی که هیچ اثری روی اجرای برنامه ندارن فقط برای گمراه کردن تحلیلگر یا دیباگر استفاده میشن
روشهای حذفش
یعنی تزریق دستوراتی که هیچ اثری روی اجرای برنامه ندارن فقط برای گمراه کردن تحلیلگر یا دیباگر استفاده میشن
👍7❤1
ReverseEngineering
Junk Code Injection روشهای حذفش یعنی تزریق دستوراتی که هیچ اثری روی اجرای برنامه ندارن فقط برای گمراه کردن تحلیلگر یا دیباگر استفاده میشن
مثال ساده از Junk Code:
push eax
pop eax
nop
xor ecx, ecx
add ecx, 0
jmp real_code
👍5👏1
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 مستقیم به کد اصلی میره
nop بی اثر است
no-operation
و بعد add ecx, 0 باعث میشه ecx همچنان صفر بمونه
در نهایت با jmp مستقیم به کد اصلی میره
👍6👏1
چرا این کارو میکنن؟
برای فریب دادن الگوریتمهای decompiler
برای طولانی و بینظم کردن گراف کنترل جریان (CFG)
برای کند کردن اسکریپتهای تحلیل خودکار
برای فریب دادن الگوریتمهای decompiler
برای طولانی و بینظم کردن گراف کنترل جریان (CFG)
برای کند کردن اسکریپتهای تحلیل خودکار
👍8👏1
روشهای شناسایی و حذف Junk Code:
دستی (Manual)
توی Ghidra یا IDA دنبال دستوراتی بگردید که:
ورودی و خروجی ندارن
روی ثباتها (registers) تغییری ایجاد نمیکنن
به مسیر اجرایی اصلی مرتبط نیستن
خودکار با اسکریپت Ghidra
میتونیید اسکریپت بنویسید که:
دنبال nop, push/pop جفتی و xor reg, reg بگرده
بلاکهایی که فقط اینا رو دارن پاک یا علامتگذاری کنه
دستی (Manual)
توی Ghidra یا IDA دنبال دستوراتی بگردید که:
ورودی و خروجی ندارن
روی ثباتها (registers) تغییری ایجاد نمیکنن
به مسیر اجرایی اصلی مرتبط نیستن
خودکار با اسکریپت Ghidra
میتونیید اسکریپت بنویسید که:
دنبال nop, push/pop جفتی و xor reg, reg بگرده
بلاکهایی که فقط اینا رو دارن پاک یا علامتگذاری کنه
👍5👏1
ابزارهای آماده
BinDiff: برای مقایسه نسخه مبهمسازیشده با نسخه اصلی (اگه داشته باشید)
Diaphora: پلاگین مقایسه برای IDA
BinDiff: برای مقایسه نسخه مبهمسازیشده با نسخه اصلی (اگه داشته باشید)
Diaphora: پلاگین مقایسه برای IDA
👍7👏1
https://medium.com/@ibnuilham/dodging-the-debugger-winantidbg0x300-picoctf-2024-writeup-0d913ad398ba
Medium
Dodging the Debugger: WinAntiDbg0x300 (picoCTF 2024 Writeup)
Hey everyone! I just wrapped up a fun little reverse engineering challenge from picoCTF 2024 called “WinAntiDbg0x300,” and thought I’d…
👍7❤1🔥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هایی صدا میزنه
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هایی صدا میزنه
🔥7❤1👍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) اصلاح بشه و فایل قابل اجرا بشه
مرحله 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
رو موقع آنپکینگ بررسی کنید تا دیباگر رو گمراه نکنید
UPX
یه پک رایگانه و خیلیها باهاش کار کردن پس اگه با UPX راحت شدید میتونید بعدش سراغ پکینگهای پیچیدهتر برید
دنبال الگوریتمهای پکینگ در حافظه باشید اونجا کد اصلی مخفی شده
Timing Check
رو موقع آنپکینگ بررسی کنید تا دیباگر رو گمراه نکنید
👍1👏1
👾پکینگ و آنپکینگ پیشرفته — چیجوری پیچیدهتر میشه؟
وقتی میخواید نرمافزاری رو مهندسی معکوس کنید گاهی اون برنامه با یه پکینگ ساده مثل UPX بستهبندی نشده بلکه از پکینگهای پیشرفته و پیچیده استفاده کرده
🪤این پکینگها چیکار میکنن؟
⚠️کد برنامه رو طوری مخفی و محافظت میکنن که حتی وقتی برنامه اجرا میشه کد اصلی رو مستقیم نبینید
با استفاده از Virtualization-based Protection (مثل VMProtect یا Themida) کد برنامه رو به یه زبان مجازی خاص تبدیل میکنن که فقط داخل یه ماشین مجازی کوچیک اجرا بشه
از تکنیکهای Anti-Debug استفاده میکنن که دیباگرها رو شناسایی کنن و جلوی تحلیل رو بگیرن
Code Obfuscation
برای پیچیدهکردن ساختار کد استفاده میکنن تا فهمیدن عملکردش خیلی سخت بشه
وقتی میخواید نرمافزاری رو مهندسی معکوس کنید گاهی اون برنامه با یه پکینگ ساده مثل UPX بستهبندی نشده بلکه از پکینگهای پیشرفته و پیچیده استفاده کرده
🪤این پکینگها چیکار میکنن؟
⚠️کد برنامه رو طوری مخفی و محافظت میکنن که حتی وقتی برنامه اجرا میشه کد اصلی رو مستقیم نبینید
با استفاده از Virtualization-based Protection (مثل VMProtect یا Themida) کد برنامه رو به یه زبان مجازی خاص تبدیل میکنن که فقط داخل یه ماشین مجازی کوچیک اجرا بشه
از تکنیکهای Anti-Debug استفاده میکنن که دیباگرها رو شناسایی کنن و جلوی تحلیل رو بگیرن
Code Obfuscation
برای پیچیدهکردن ساختار کد استفاده میکنن تا فهمیدن عملکردش خیلی سخت بشه
👍2❤1
❌فرق پکینگ ساده و پکینگ پیشرفته
پکینگ ساده مثل UPX فقط کد رو فشرده میکنه و بعد از اجرا سریع کد اصلی رو باز میکنه
پکینگ پیشرفته مثل Themida یه لایه خیلی ضخیم محافظتی داره که حتی بعد از آنپک کردن کد اصلی به شکل مستقیم دیده نمیشه
پکینگ ساده مثل UPX فقط کد رو فشرده میکنه و بعد از اجرا سریع کد اصلی رو باز میکنه
پکینگ پیشرفته مثل Themida یه لایه خیلی ضخیم محافظتی داره که حتی بعد از آنپک کردن کد اصلی به شکل مستقیم دیده نمیشه
👍5👏1
This media is not supported in your browser
VIEW IN TELEGRAM
با ماژول hackrf تونسته ecu ماشین رو هک بکنه
😁7❤1👍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
سلام به همه عزیزان و عاشقان مهندسی معکوس! خوش اومدین به اپیزود ۵۴ از برنامهی هفتگی 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
👍2❤1
Forwarded from GO-TO CVE
GO-TO CVE
CVE-2023-38831-week-54.pdf
Media is too big
VIEW IN TELEGRAM
poc_CVE-2023-38831
👏1