Hacking- The Art of Exploitation (2nd ed. 2008) - Erickson.pdf
4.4 MB
کتاب "Hacking: The Art of Exploitation" نوشته Jon Erickson
یه منبع عالی برای شروع یادگیری هک و امنیته این کتاب بیشتر روی باینری اکسپلویتیشن تمرکز داره و بهتون یاد میده چطور با بهرهبرداری از مشکلات نرمافزاری مثل بافر اورفلو به سیستمها نفوذ کنید و چطور مشکلات امنیتی نرمافزارها رو پیدا کنید و ازشون استفاده کنید مخصوصا برای نفوذ به سیستمهای آسیبپذیر
#book
یه منبع عالی برای شروع یادگیری هک و امنیته این کتاب بیشتر روی باینری اکسپلویتیشن تمرکز داره و بهتون یاد میده چطور با بهرهبرداری از مشکلات نرمافزاری مثل بافر اورفلو به سیستمها نفوذ کنید و چطور مشکلات امنیتی نرمافزارها رو پیدا کنید و ازشون استفاده کنید مخصوصا برای نفوذ به سیستمهای آسیبپذیر
#book
❤13🔥2👏1
بازیابی متادیتا از باینری های NET Native AOT
https://blog.washi.dev/posts/recovering-nativeaot-metadata/
Source: @PfkSecurity
https://blog.washi.dev/posts/recovering-nativeaot-metadata/
Source: @PfkSecurity
Washi
Recovering Metadata from .NET Native AOT Binaries
Ever seen a binary that looks like a .NET binary based on its strings, but .NET decompilers are not able to open them?
❤8👍1🔥1👏1
مراحل پیدا کردن باگ در اپلیکیشنها
1 جمعآوری اطلاعات:
بررسی ساختار برنامه dependencyها dllهای بارگذاریشده
2 رفتارشناسی دینامیک:
اجرای برنامه با ابزارهایی مثل x64dbg ، Procmon، Process Hacker
3 تحلیل استاتیک:
استفاده از IDA یا Ghidra برای بررسی کدها رشتهها
4 فاز کردن ورودیها (Fuzzing):
بررسی واکنش برنامه به ورودیهای ناسالم یا دستکاریشده
5 انالیز کرش و Debug:
دنبال کردن کرشها با WinDbg یا x64dbg برای بررسی مسیر باگ
6 ساخت POC یا اکسپلویت:
اگر باگی پیدا شد، یه کد برای اثباتش بساز
1 جمعآوری اطلاعات:
بررسی ساختار برنامه dependencyها dllهای بارگذاریشده
2 رفتارشناسی دینامیک:
اجرای برنامه با ابزارهایی مثل x64dbg ، Procmon، Process Hacker
3 تحلیل استاتیک:
استفاده از IDA یا Ghidra برای بررسی کدها رشتهها
4 فاز کردن ورودیها (Fuzzing):
بررسی واکنش برنامه به ورودیهای ناسالم یا دستکاریشده
5 انالیز کرش و Debug:
دنبال کردن کرشها با WinDbg یا x64dbg برای بررسی مسیر باگ
6 ساخت POC یا اکسپلویت:
اگر باگی پیدا شد، یه کد برای اثباتش بساز
❤10👏1🤣1
مثال عملی ساده
مثلا برنامهای داری که ورودی یوزر رو میگیره:
اینجا احتمال Buffer Overflow هست با یه فایل ساده حاوی رشتهی بلند برنامه کرش میکنه بعدش با x64dbg مسیر بازنویسی EIP رو دنبال میکنی و یه shellcode کوچیک تزریق میکنی
مثلا برنامهای داری که ورودی یوزر رو میگیره:
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 بلد باشید بهتر میتونید عملکردشون رو بفهمید
اسمبلی (Assembly)
ساختار حافظه مثل Stack و Heap
نحوهی کارکرد تابعها و برگشت از اونها
سیستمعاملها (مخصوصا لینوکس)
چندتا کاربرد مهم Binary Exploitation :
1 نوشتن اکسپلویت برای برنامههای آسیبپذیر
مثلا یه برنامه C داری که توش بافر اورفلو داره با ساختن یه ورودی خاص میتونید کاری کنید که اون برنامه به جای اجرای کد خودش کدی که شما نوشتی رو اجرا کنه
2 Capture the Flag (CTF)
توی مسابقات امنیتی چالشهای زیادی هست که با باینری اکسپلویت حل میشن این چالشها خیلی برای تمرین خوبن
3 تحلیل بدافزارها
گاهی بدافزارها با روشهایی مثل ROP یا تزریق کد سیستم رو الوده میکنن اگه Binary Exploitation بلد باشید بهتر میتونید عملکردشون رو بفهمید
🔥7👍2❤1👏1🤣1
خیلیا در مورد 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