stack buffer overflow attack

16
1

Upload: alireza-shokrizadeh

Post on 15-Aug-2015

100 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Stack Buffer Overflow Attack

1

Page 2: Stack Buffer Overflow Attack

مقدمه

ر بعضی از این راه ها برای نفوذ گ. راه های زیادی جهت نفوذ به درون سیستم های کامپیوتری می باشدکامل اختیارات محدود و کمی را به ارمغان می آورد اما بعضی دیگر باعث می شود که نفوذگر بتواند اختیار

از دستگاه مورد نظر بگیرد یکی از راه های نفوذ shellسیستم را به دست گرفته یا به قول نقوذ گران buffer overflow است.

ش فرض بر یعنی همه برنامه نویسان به صورت پی. ذات این روش بر اشتباه منطقی برنامه نویس استوار استن تری این باورند که ورودی توابع داخلی برنامه اشان که توسط برنامه صدا زده می شود و در الیه های پایی

قرار دارد از قسمت ورودی برنامه جداست و لذا احتیاجی به چک کردن صحیح بودن اطالعات ورودی وجود ندارد

2

Page 3: Stack Buffer Overflow Attack

اصطالحاتی که باید بدانیم

بافر

یه فضای موقت در حافظه که اطالعات رو نگهداری می کند

سرریز بافر

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

3

Page 4: Stack Buffer Overflow Attack

سر ریز بافر از نگاه امنیت سیستم

می باشد که اگر در سرویس یا برنامه ای در سطح Bugسرریز بافر یکی از خطرناک ترین نوع

Adminوجود داشته باشد امنیت آن سیستم را به طور کلی به خطر می اندازد.

. از غفلت های بسیار ساده در برنامه نویسی ایجاد می شود Bugو همانطور که گفته شد این نوع

استفاده کردند به عنوان مثال کرم موریس که توانست خود را در Bugکرم های زیادی از این نوع

IIS 5.0توانست سرویس 2001که در سال Code Red Wormویا اینترنت پخش کند(Microsoft’s Internet Information Services )را مورد حمله قرار دهد

4

Page 5: Stack Buffer Overflow Attack

در برنامهBUFFER OVERFLOWنحوه پیدا کردن

(توابع خطرناک)توابعی که باند ها را بررسی نمی کنند1.

•Strcpy

•Getc

•Scanf

•Strcat

روش سعی و خطا. 2

5

Page 6: Stack Buffer Overflow Attack

رخ می دهدچگونه

با عث هنگامی که اطالعات مستقیما بدون چک کردن طول وارد بافر شوند ممکن است اطالعات بالک های مجاور را تغییر دهند کهبروز خطا در برنامه می شود که به آن سرریز کردن بافر گویند

:به عنوان مثال

با 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

Page 7: Stack Buffer Overflow Attack

STACK OVERFLOW LAYOUT

7

Page 8: Stack Buffer Overflow Attack

FOOTPRINT OF STACK OVERFLOW ATTACK

Classic attack “ payload”

1. An Nop sled

2. A shell code

3. A new return address

8

Page 9: Stack Buffer Overflow Attack

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

Page 10: Stack Buffer Overflow Attack

HOW CANARY DETECT STACK SMASHING

10

Page 11: Stack Buffer Overflow Attack

STACK SMASHING ATTACKS & PROTECTION

• Protection

Non-executable stack

ASLR(Address space layout randomization)

Canaries

• Attacks

Payload

Return to libc attack

11

Page 12: Stack Buffer Overflow Attack

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

Page 13: Stack Buffer Overflow Attack

مثال هایی در دنیا واقعی

SQL Slammer Worm (at 2003 )

Blaster Worm (Dcom at windows)

Code red Worm

Morris Worm (Unix Finger Server - getc)

13

Page 14: Stack Buffer Overflow Attack

SPREAD OF SLAMMER

14

Page 15: Stack Buffer Overflow Attack

منابع

1. Anatomy of stack smashing-DrDobbs.htm

2. www.insecure.org/stf/smashstack.html

3. www.securitytube.net

15

Page 16: Stack Buffer Overflow Attack

تشکر از استاد چعبی و دوستان گرامی

16