stack buffer overflow attack
TRANSCRIPT
1
مقدمه
ر بعضی از این راه ها برای نفوذ گ. راه های زیادی جهت نفوذ به درون سیستم های کامپیوتری می باشدکامل اختیارات محدود و کمی را به ارمغان می آورد اما بعضی دیگر باعث می شود که نفوذگر بتواند اختیار
از دستگاه مورد نظر بگیرد یکی از راه های نفوذ shellسیستم را به دست گرفته یا به قول نقوذ گران buffer overflow است.
ش فرض بر یعنی همه برنامه نویسان به صورت پی. ذات این روش بر اشتباه منطقی برنامه نویس استوار استن تری این باورند که ورودی توابع داخلی برنامه اشان که توسط برنامه صدا زده می شود و در الیه های پایی
قرار دارد از قسمت ورودی برنامه جداست و لذا احتیاجی به چک کردن صحیح بودن اطالعات ورودی وجود ندارد
2
اصطالحاتی که باید بدانیم
بافر
یه فضای موقت در حافظه که اطالعات رو نگهداری می کند
سرریز بافر
زمانی اتفاق می افتد که اطالعات نوشته شده در بافر بزرگ تر از اندازه بافر باشد
3
سر ریز بافر از نگاه امنیت سیستم
می باشد که اگر در سرویس یا برنامه ای در سطح Bugسرریز بافر یکی از خطرناک ترین نوع
Adminوجود داشته باشد امنیت آن سیستم را به طور کلی به خطر می اندازد.
. از غفلت های بسیار ساده در برنامه نویسی ایجاد می شود Bugو همانطور که گفته شد این نوع
استفاده کردند به عنوان مثال کرم موریس که توانست خود را در Bugکرم های زیادی از این نوع
IIS 5.0توانست سرویس 2001که در سال Code Red Wormویا اینترنت پخش کند(Microsoft’s Internet Information Services )را مورد حمله قرار دهد
4
در برنامهBUFFER OVERFLOWنحوه پیدا کردن
(توابع خطرناک)توابعی که باند ها را بررسی نمی کنند1.
•Strcpy
•Getc
•Scanf
•Strcat
روش سعی و خطا. 2
5
رخ می دهدچگونه
با عث هنگامی که اطالعات مستقیما بدون چک کردن طول وارد بافر شوند ممکن است اطالعات بالک های مجاور را تغییر دهند کهبروز خطا در برنامه می شود که به آن سرریز کردن بافر گویند
:به عنوان مثال
با Integerیک مقدار Bبیت و 8با Stringیک متغییر A. یک برنامه دارای دو متغیر می باشد که در مجاورت هم قرار داردرا درخود دارد 3مقدار Bخالی اما با صفر پر شده و Aمقدار . بیت حافظه تخصیص داده شده 2
شده است که باعث ایجاد اختالل در برنامه (overwrite)بازنویسی Aتوسط مقدار متغیر Bدر اینجا میبینیم که مقدار متغییر کردن و بسته شدن برنامه می گرددcrashشده و اگر باعث تغییر اطالعات مهم برنامه شود موجب
A B
0 0 0 0 0 0 0 0 0 3
A B
S A L A M R E Z a 0
6
STACK OVERFLOW LAYOUT
7
FOOTPRINT OF STACK OVERFLOW ATTACK
Classic attack “ payload”
1. An Nop sled
2. A shell code
3. A new return address
8
PROTECTING CANARIES
Ssp subroutine
1. Ssp’s prolog2. Initialization:
prepare local variable3. Subroutine body:
subroutine’s algorithm4. Clean up:
removing local variable5. Ssp’s epilog5. Return:
jump back to original address
Typical subroutine
1. Initialization:prepare local variable
2. Subroutine body:subroutine’s algorithm
3. Clean up:removing local variable
4. return:jump back to original address
9
HOW CANARY DETECT STACK SMASHING
10
STACK SMASHING ATTACKS & PROTECTION
• Protection
Non-executable stack
ASLR(Address space layout randomization)
Canaries
• Attacks
Payload
Return to libc attack
11
IMPLEMENTATION IN COMPILERS
Ssp-stack smashing protector, in GNU’s gcc
Propolice for IBM’s XLS
Buffer security Check for Microsoft’s Visual compilers (option /GS)
12
مثال هایی در دنیا واقعی
SQL Slammer Worm (at 2003 )
Blaster Worm (Dcom at windows)
Code red Worm
Morris Worm (Unix Finger Server - getc)
13
SPREAD OF SLAMMER
14
منابع
1. Anatomy of stack smashing-DrDobbs.htm
2. www.insecure.org/stf/smashstack.html
3. www.securitytube.net
15
تشکر از استاد چعبی و دوستان گرامی
16