خیلیا در مورد 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)
فرض کن یه فایل اجرایی داری که ورودی رو میخونه و بعد باهاش کاری میکنه حالا تو این مسیر یه 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 آماده
pattern_create.rb و pattern_offset.rb (از metasploit): برای پیدا کردن دقیق آفست EIP
mona.py توی Immunity Debugger: برای ساخت و آنالیز exploit
msfvenom: برای ساخت shellcode آماده
👍2🥰1
نکتههای خیلی مهم
موقع تست روی فایلهای مشکوک همیشه از VM استفاده کنید
هیچ وقت بدون آگاهی روی فایلهای سیستمی واقعی کار نکنید
لاگگیری و تهیه اسکرینشات از همه مراحل باعث حرفهایتر شدن گزارشه
حمله فقط روی نسخه آسیبپذیر تست بشه
موقع تست روی فایلهای مشکوک همیشه از VM استفاده کنید
هیچ وقت بدون آگاهی روی فایلهای سیستمی واقعی کار نکنید
لاگگیری و تهیه اسکرینشات از همه مراحل باعث حرفهایتر شدن گزارشه
حمله فقط روی نسخه آسیبپذیر تست بشه
👍4❤1👏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
بافر اورفلو چیه و چطور باعث آسیبپذیری تو برنامهها میشه
چطور میشه از این ضعف سو استفاده کرد و کنترل سیستم رو گرفت مثلا اجرای کد دلخواه روی دستگاه قربانی
چطور میشه جلوی این حملات رو گرفت با تکنیکهایی مثل نوشتن کد امن استفاده از ابزارهای محافظتی و مکانیزمهای امنیتی سیستمعامل
در واقع هم یاد میده حمله کنی (برای یادگیری دفاع) و هم یاد میده دفاع کنی
نویسندگان:
James C. Foster, Mark Osborn, Vincent Liu, Kevin M. Corey, Jason W. Nachtrab
سال انتشار: 2005
بافر اورفلو چیه و چطور باعث آسیبپذیری تو برنامهها میشه
چطور میشه از این ضعف سو استفاده کرد و کنترل سیستم رو گرفت مثلا اجرای کد دلخواه روی دستگاه قربانی
چطور میشه جلوی این حملات رو گرفت با تکنیکهایی مثل نوشتن کد امن استفاده از ابزارهای محافظتی و مکانیزمهای امنیتی سیستمعامل
در واقع هم یاد میده حمله کنی (برای یادگیری دفاع) و هم یاد میده دفاع کنی
🔥16❤6😁2👍1
یه نقشه کلی برای اکسپلویت سازی ساده
1 کشف آسیبپذیری (مثلا کرش با ورودی بزرگ)
2 باز کردن فایل توی دیباگر
3 پیدا کردن محل کرش و آفست
4 ساختن payload اولیه
5 تست payload → بررسی موفقیت کرش یا اجرای کد
6 اصلاح payload برای اجرای بهتر (مثلا اضافه کردن nop sled)
7 مستندسازی کامل همه مراحل
1 کشف آسیبپذیری (مثلا کرش با ورودی بزرگ)
2 باز کردن فایل توی دیباگر
3 پیدا کردن محل کرش و آفست
4 ساختن payload اولیه
5 تست payload → بررسی موفقیت کرش یا اجرای کد
6 اصلاح payload برای اجرای بهتر (مثلا اضافه کردن nop sled)
7 مستندسازی کامل همه مراحل
👍6👏1
تحلیل تکنیک های ضد مهندسی معکوس (Anti-Reverse Engineering)
Anti-Debugging اگر دیباگر وصل باشه رفتار برنامه تغییر میکنه یا کرش میکنه
Obfuscation کدها رو ناخوانا و گنگ میکنه تا مسیر منطقی مشخص نباشه
Packing باینری فشرده یا رمز میشه و موقع اجرا آنپک میشه
Virtualization کد به زبان خاصی ترجمه میشه که فقط توی ماشین مجازی خاص اجرا میشه
Checksum / integrity check بررسی میکنه که کسی فایل رو تغییر نداده باشه مثلا برای جلوگیری از
patch
Anti-Debugging اگر دیباگر وصل باشه رفتار برنامه تغییر میکنه یا کرش میکنه
Obfuscation کدها رو ناخوانا و گنگ میکنه تا مسیر منطقی مشخص نباشه
Packing باینری فشرده یا رمز میشه و موقع اجرا آنپک میشه
Virtualization کد به زبان خاصی ترجمه میشه که فقط توی ماشین مجازی خاص اجرا میشه
Checksum / integrity check بررسی میکنه که کسی فایل رو تغییر نداده باشه مثلا برای جلوگیری از
patch
❤3👏1
بررسی Anti-Debugging
نمونه تکنیکها:
استفاده از توابع API مثل
IsDebuggerPresent
CheckRemoteDebuggerPresent
دستکاری فلگ Trap در رجیستر EFLAGS
خواندن شمارنده زمان (مثلا با RDTSC) و بررسی تأخیر
راه مقابله:
patch کردن توابع
استفاده از پلاگینهای ضد ضد دیباگ در x64dbg
نوشتن اسکریپت برای نادیده گرفتن رفتار مشکوک
نمونه تکنیکها:
استفاده از توابع API مثل
IsDebuggerPresent
CheckRemoteDebuggerPresent
دستکاری فلگ Trap در رجیستر EFLAGS
خواندن شمارنده زمان (مثلا با RDTSC) و بررسی تأخیر
راه مقابله:
patch کردن توابع
استفاده از پلاگینهای ضد ضد دیباگ در x64dbg
نوشتن اسکریپت برای نادیده گرفتن رفتار مشکوک
👍7🥰1
ReverseEngineering
Part 1 https://medium.com/@ch3tanbug/mastering-runtime-hooking-with-frida-real-world-challenges-explained-part-1-17a7f57ea87b
Medium
Mastering Runtime Hooking with Frida — Real-World Challenges Explained (Part 2)
Hey folks! This is Chetan Kashyap, back again with Part 2 of our series on mastering runtime hooking using Frida. If you haven’t already…
❤5👏1
Obfuscation (مبهمسازی کد)
مثالها:
استفاده از متغیرها و توابع با نامهای بیمعنی
پرشهای زیاد و بیربط (jmp)
استفاده از ساختارهای پیچیده و بیهدف
راهحل:
بازنویسی دستی در ابزار Ghidra یا IDA
استفاده از deobfuscator ها یا پلاگینها
مثالها:
استفاده از متغیرها و توابع با نامهای بیمعنی
پرشهای زیاد و بیربط (jmp)
استفاده از ساختارهای پیچیده و بیهدف
راهحل:
بازنویسی دستی در ابزار Ghidra یا IDA
استفاده از deobfuscator ها یا پلاگینها
👍4👏1
Packers پکرها
نرمافزارهایی مثل UPX، Themida، VMProtect باعث میشن باینری اصلی مخفی بمونه
راه تشخیص:
بخشهای عجیب در ساختار PE (مثل .UPX)
اجرا نشدن برنامه در دیباگر
بررسی با PEiD یا Detect It Easy
راه عبور:
اجرای برنامه و گرفتن memory dump بعد از unpack
دنبال کردن نقطه آنپک با breakpoint روی VirtualProtect یا GetProcAddress
نرمافزارهایی مثل UPX، Themida، VMProtect باعث میشن باینری اصلی مخفی بمونه
راه تشخیص:
بخشهای عجیب در ساختار PE (مثل .UPX)
اجرا نشدن برنامه در دیباگر
بررسی با PEiD یا Detect It Easy
راه عبور:
اجرای برنامه و گرفتن memory dump بعد از unpack
دنبال کردن نقطه آنپک با breakpoint روی VirtualProtect یا GetProcAddress
👍6👏1
Integrity Check
کد بررسی میکنه آیا تغییری در باینری ایجاد شده یا نه معمولا با توابع CRC، MD5، SHA یا جمع ساده بایتها انجام میشه
راه دور زدن:
پیدا کردن تابعی که چک رو انجام میده و نادیده گرفتن نتیجهاش
patch کردن شرط چک موفقیت یا شکست
کد بررسی میکنه آیا تغییری در باینری ایجاد شده یا نه معمولا با توابع CRC، MD5، SHA یا جمع ساده بایتها انجام میشه
راه دور زدن:
پیدا کردن تابعی که چک رو انجام میده و نادیده گرفتن نتیجهاش
patch کردن شرط چک موفقیت یا شکست
👍5❤1
1. crackmes.one
2. Reversing.kr
3. picoCTF
4. crackmes.de
5. Hack The Box
6. Root Me
7. OpenSecurityTraining
یکی از معروفترین سایتها برای تمرین مهندسی معکوس
شامل تعداد زیادی باینری با سطوح مختلف سختی
کاربران میتونن کدها رو آنالیز کنن و راهحل ارائه بدن
2. Reversing.kr
یک پلتفرم کلاسیک با چالشهای متنوع در زمینه مهندسی معکوس و باینری اکسپلویتیشن
تمرینها به صورت CTF طراحی شدن.
3. picoCTF
تمرینهای CTF مخصوص تازهکارها تا سطح متوسط
بخشهایی مثل "Reverse Engineering" داره که خیلی برای شروع خوبه
4. crackmes.de
قدیمی و قابل اعتماد، با آرشیو بزرگی از CrackMe ها
نسخههای ویندوزی و لینوکسی از نرمافزارها رو برای تحلیل میذاره
5. Hack The Box
دارای بخش Reverse Engineering و Binary Exploitation
ماشینها و چالشهای واقعی برای تمرین سطح پیشرفته
6. Root Me
بخش Reverse Engineering داره
شامل چالشهای تحت ویندوز، لینوکس ARM و … هست
7. OpenSecurityTraining
دورههای حرفهای برای آموزش دیباگینگ ASM و RE
👍11❤2👏1