1
‫مقدمه‬
‫باشد‬ ‫می‬ ‫کامپیوتری‬ ‫های‬ ‫سیستم‬ ‫درون‬ ‫به‬ ‫نفوذ‬ ‫جهت‬ ‫زیادی‬ ‫های‬ ‫راه‬.‫گ‬ ‫نفوذ‬ ‫برای‬ ‫ها‬ ‫راه‬ ‫این‬ ‫از‬ ‫بعضی‬‫ر‬
‫اختیار‬ ‫بتواند‬ ‫نفوذگر‬ ‫که‬ ‫شود‬ ‫می‬ ‫باعث‬ ‫دیگر‬ ‫بعضی‬ ‫اما‬ ‫آورد‬ ‫می‬ ‫ارمغان‬ ‫به‬ ‫را‬ ‫کمی‬ ‫و‬ ‫محدود‬ ‫اختیارات‬‫کامل‬
‫گران‬ ‫نقوذ‬ ‫قول‬ ‫به‬ ‫یا‬ ‫گرفته‬ ‫دست‬ ‫به‬ ‫را‬ ‫سیستم‬shell‫نفوذ‬ ‫های‬ ‫راه‬ ‫از‬ ‫یکی‬ ‫بگیرد‬ ‫نظر‬ ‫مورد‬ ‫دستگاه‬ ‫از‬
buffer overflow‫است‬.
‫است‬ ‫استوار‬ ‫نویس‬ ‫برنامه‬ ‫منطقی‬ ‫اشتباه‬ ‫بر‬ ‫روش‬ ‫این‬ ‫ذات‬.‫پی‬ ‫صورت‬ ‫به‬ ‫نویسان‬ ‫برنامه‬ ‫همه‬ ‫یعنی‬‫بر‬ ‫فرض‬ ‫ش‬
‫پایی‬ ‫های‬ ‫الیه‬ ‫در‬ ‫و‬ ‫شود‬ ‫می‬ ‫زده‬ ‫صدا‬ ‫برنامه‬ ‫توسط‬ ‫که‬ ‫اشان‬ ‫برنامه‬ ‫داخلی‬ ‫توابع‬ ‫ورودی‬ ‫که‬ ‫باورند‬ ‫این‬‫تری‬ ‫ن‬
‫وجود‬ ‫ورودی‬ ‫اطالعات‬ ‫بودن‬ ‫صحیح‬ ‫کردن‬ ‫چک‬ ‫به‬ ‫احتیاجی‬ ‫لذا‬ ‫و‬ ‫جداست‬ ‫برنامه‬ ‫ورودی‬ ‫قسمت‬ ‫از‬ ‫دارد‬ ‫قرار‬
‫ندارد‬
2
‫بدانیم‬ ‫باید‬ ‫که‬ ‫اصطالحاتی‬
‫بافر‬
‫کند‬ ‫می‬ ‫نگهداری‬ ‫رو‬ ‫اطالعات‬ ‫که‬ ‫حافظه‬ ‫در‬ ‫موقت‬ ‫فضای‬ ‫یه‬
‫بافر‬ ‫سرریز‬
‫باشد‬ ‫بافر‬ ‫اندازه‬ ‫از‬ ‫تر‬ ‫بزرگ‬ ‫بافر‬ ‫در‬ ‫شده‬ ‫نوشته‬ ‫اطالعات‬ ‫که‬ ‫افتد‬ ‫می‬ ‫اتفاق‬ ‫زمانی‬
3
‫سیستم‬ ‫امنیت‬ ‫نگاه‬ ‫از‬ ‫بافر‬ ‫ریز‬ ‫سر‬
‫نوع‬ ‫ترین‬ ‫خطرناک‬ ‫از‬ ‫یکی‬ ‫بافر‬ ‫سرریز‬Bug‫سطح‬ ‫در‬ ‫ای‬ ‫برنامه‬ ‫یا‬ ‫سرویس‬ ‫در‬ ‫اگر‬ ‫که‬ ‫باشد‬ ‫می‬
Admin‫اندازد‬ ‫می‬ ‫خطر‬ ‫به‬ ‫کلی‬ ‫طور‬ ‫به‬ ‫را‬ ‫سیستم‬ ‫آن‬ ‫امنیت‬ ‫باشد‬ ‫داشته‬ ‫وجود‬.
‫نوع‬ ‫این‬ ‫شد‬ ‫گفته‬ ‫که‬ ‫همانطور‬ ‫و‬Bug‫شود‬ ‫می‬ ‫ایجاد‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫ساده‬ ‫بسیار‬ ‫های‬ ‫غفلت‬ ‫از‬.
‫نوع‬ ‫این‬ ‫از‬ ‫زیادی‬ ‫های‬ ‫کرم‬Bug‫در‬ ‫را‬ ‫خود‬ ‫توانست‬ ‫که‬ ‫موریس‬ ‫کرم‬ ‫مثال‬ ‫عنوان‬ ‫به‬ ‫کردند‬ ‫استفاده‬
‫کند‬ ‫پخش‬ ‫اینترنت‬‫ویا‬Code Red Worm‫سال‬ ‫در‬ ‫که‬2001‫سرویس‬ ‫توانست‬IIS 5.0
(Microsoft’s Internet Information Services)‫دهد‬ ‫قرار‬ ‫حمله‬ ‫مورد‬ ‫را‬
4
‫کردن‬ ‫پیدا‬ ‫نحوه‬BUFFER OVERFLOW‫برنامه‬ ‫در‬
.1‫کنند‬ ‫نمی‬ ‫بررسی‬ ‫را‬ ‫ها‬ ‫باند‬ ‫که‬ ‫توابعی‬(‫خطرناک‬ ‫توابع‬)
•Strcpy
•Getc
•Scanf
•Strcat
2.‫خطا‬ ‫و‬ ‫سعی‬ ‫روش‬
5
‫چگونه‬‫دهد‬ ‫می‬ ‫رخ‬
‫که‬ ‫دهند‬ ‫تغییر‬ ‫را‬ ‫مجاور‬ ‫های‬ ‫بالک‬ ‫اطالعات‬ ‫است‬ ‫ممکن‬ ‫شوند‬ ‫بافر‬ ‫وارد‬ ‫طول‬ ‫کردن‬ ‫چک‬ ‫بدون‬ ‫مستقیما‬ ‫اطالعات‬ ‫که‬ ‫هنگامی‬‫عث‬ ‫با‬
‫گویند‬ ‫بافر‬ ‫کردن‬ ‫سرریز‬ ‫آن‬ ‫به‬ ‫که‬ ‫شود‬ ‫می‬ ‫برنامه‬ ‫در‬ ‫خطا‬ ‫بروز‬
‫مثال‬ ‫عنوان‬ ‫به‬:
‫دارد‬ ‫قرار‬ ‫هم‬ ‫مجاورت‬ ‫در‬ ‫که‬ ‫باشد‬ ‫می‬ ‫متغیر‬ ‫دو‬ ‫دارای‬ ‫برنامه‬ ‫یک‬.A‫متغییر‬ ‫یک‬String‫با‬8‫و‬ ‫بیت‬B‫مقدار‬ ‫یک‬Integer‫با‬
2‫شده‬ ‫داده‬ ‫تخصیص‬ ‫حافظه‬ ‫بیت‬.‫مقدار‬A‫و‬ ‫شده‬ ‫پر‬ ‫صفر‬ ‫با‬ ‫اما‬ ‫خالی‬B‫مقدار‬3‫دارد‬ ‫درخود‬ ‫را‬
‫متغییر‬ ‫مقدار‬ ‫که‬ ‫میبینیم‬ ‫اینجا‬ ‫در‬B‫متغیر‬ ‫مقدار‬ ‫توسط‬A‫بازنویسی‬(overwrite)‫برنامه‬ ‫در‬ ‫اختالل‬ ‫ایجاد‬ ‫باعث‬ ‫که‬ ‫است‬ ‫شده‬
‫موجب‬ ‫شود‬ ‫برنامه‬ ‫مهم‬ ‫اطالعات‬ ‫تغییر‬ ‫باعث‬ ‫اگر‬ ‫و‬ ‫شده‬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 prolog
2. Initialization:
prepare local variable
3. Subroutine body:
subroutine’s algorithm
4. Clean up:
removing local variable
5. Ssp’s epilog
5. 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

Stack Buffer Overflow Attack

  • 1.
  • 2.
    ‫مقدمه‬ ‫باشد‬ ‫می‬ ‫کامپیوتری‬‫های‬ ‫سیستم‬ ‫درون‬ ‫به‬ ‫نفوذ‬ ‫جهت‬ ‫زیادی‬ ‫های‬ ‫راه‬.‫گ‬ ‫نفوذ‬ ‫برای‬ ‫ها‬ ‫راه‬ ‫این‬ ‫از‬ ‫بعضی‬‫ر‬ ‫اختیار‬ ‫بتواند‬ ‫نفوذگر‬ ‫که‬ ‫شود‬ ‫می‬ ‫باعث‬ ‫دیگر‬ ‫بعضی‬ ‫اما‬ ‫آورد‬ ‫می‬ ‫ارمغان‬ ‫به‬ ‫را‬ ‫کمی‬ ‫و‬ ‫محدود‬ ‫اختیارات‬‫کامل‬ ‫گران‬ ‫نقوذ‬ ‫قول‬ ‫به‬ ‫یا‬ ‫گرفته‬ ‫دست‬ ‫به‬ ‫را‬ ‫سیستم‬shell‫نفوذ‬ ‫های‬ ‫راه‬ ‫از‬ ‫یکی‬ ‫بگیرد‬ ‫نظر‬ ‫مورد‬ ‫دستگاه‬ ‫از‬ buffer overflow‫است‬. ‫است‬ ‫استوار‬ ‫نویس‬ ‫برنامه‬ ‫منطقی‬ ‫اشتباه‬ ‫بر‬ ‫روش‬ ‫این‬ ‫ذات‬.‫پی‬ ‫صورت‬ ‫به‬ ‫نویسان‬ ‫برنامه‬ ‫همه‬ ‫یعنی‬‫بر‬ ‫فرض‬ ‫ش‬ ‫پایی‬ ‫های‬ ‫الیه‬ ‫در‬ ‫و‬ ‫شود‬ ‫می‬ ‫زده‬ ‫صدا‬ ‫برنامه‬ ‫توسط‬ ‫که‬ ‫اشان‬ ‫برنامه‬ ‫داخلی‬ ‫توابع‬ ‫ورودی‬ ‫که‬ ‫باورند‬ ‫این‬‫تری‬ ‫ن‬ ‫وجود‬ ‫ورودی‬ ‫اطالعات‬ ‫بودن‬ ‫صحیح‬ ‫کردن‬ ‫چک‬ ‫به‬ ‫احتیاجی‬ ‫لذا‬ ‫و‬ ‫جداست‬ ‫برنامه‬ ‫ورودی‬ ‫قسمت‬ ‫از‬ ‫دارد‬ ‫قرار‬ ‫ندارد‬ 2
  • 3.
    ‫بدانیم‬ ‫باید‬ ‫که‬‫اصطالحاتی‬ ‫بافر‬ ‫کند‬ ‫می‬ ‫نگهداری‬ ‫رو‬ ‫اطالعات‬ ‫که‬ ‫حافظه‬ ‫در‬ ‫موقت‬ ‫فضای‬ ‫یه‬ ‫بافر‬ ‫سرریز‬ ‫باشد‬ ‫بافر‬ ‫اندازه‬ ‫از‬ ‫تر‬ ‫بزرگ‬ ‫بافر‬ ‫در‬ ‫شده‬ ‫نوشته‬ ‫اطالعات‬ ‫که‬ ‫افتد‬ ‫می‬ ‫اتفاق‬ ‫زمانی‬ 3
  • 4.
    ‫سیستم‬ ‫امنیت‬ ‫نگاه‬‫از‬ ‫بافر‬ ‫ریز‬ ‫سر‬ ‫نوع‬ ‫ترین‬ ‫خطرناک‬ ‫از‬ ‫یکی‬ ‫بافر‬ ‫سرریز‬Bug‫سطح‬ ‫در‬ ‫ای‬ ‫برنامه‬ ‫یا‬ ‫سرویس‬ ‫در‬ ‫اگر‬ ‫که‬ ‫باشد‬ ‫می‬ Admin‫اندازد‬ ‫می‬ ‫خطر‬ ‫به‬ ‫کلی‬ ‫طور‬ ‫به‬ ‫را‬ ‫سیستم‬ ‫آن‬ ‫امنیت‬ ‫باشد‬ ‫داشته‬ ‫وجود‬. ‫نوع‬ ‫این‬ ‫شد‬ ‫گفته‬ ‫که‬ ‫همانطور‬ ‫و‬Bug‫شود‬ ‫می‬ ‫ایجاد‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫ساده‬ ‫بسیار‬ ‫های‬ ‫غفلت‬ ‫از‬. ‫نوع‬ ‫این‬ ‫از‬ ‫زیادی‬ ‫های‬ ‫کرم‬Bug‫در‬ ‫را‬ ‫خود‬ ‫توانست‬ ‫که‬ ‫موریس‬ ‫کرم‬ ‫مثال‬ ‫عنوان‬ ‫به‬ ‫کردند‬ ‫استفاده‬ ‫کند‬ ‫پخش‬ ‫اینترنت‬‫ویا‬Code Red Worm‫سال‬ ‫در‬ ‫که‬2001‫سرویس‬ ‫توانست‬IIS 5.0 (Microsoft’s Internet Information Services)‫دهد‬ ‫قرار‬ ‫حمله‬ ‫مورد‬ ‫را‬ 4
  • 5.
    ‫کردن‬ ‫پیدا‬ ‫نحوه‬BUFFEROVERFLOW‫برنامه‬ ‫در‬ .1‫کنند‬ ‫نمی‬ ‫بررسی‬ ‫را‬ ‫ها‬ ‫باند‬ ‫که‬ ‫توابعی‬(‫خطرناک‬ ‫توابع‬) •Strcpy •Getc •Scanf •Strcat 2.‫خطا‬ ‫و‬ ‫سعی‬ ‫روش‬ 5
  • 6.
    ‫چگونه‬‫دهد‬ ‫می‬ ‫رخ‬ ‫که‬‫دهند‬ ‫تغییر‬ ‫را‬ ‫مجاور‬ ‫های‬ ‫بالک‬ ‫اطالعات‬ ‫است‬ ‫ممکن‬ ‫شوند‬ ‫بافر‬ ‫وارد‬ ‫طول‬ ‫کردن‬ ‫چک‬ ‫بدون‬ ‫مستقیما‬ ‫اطالعات‬ ‫که‬ ‫هنگامی‬‫عث‬ ‫با‬ ‫گویند‬ ‫بافر‬ ‫کردن‬ ‫سرریز‬ ‫آن‬ ‫به‬ ‫که‬ ‫شود‬ ‫می‬ ‫برنامه‬ ‫در‬ ‫خطا‬ ‫بروز‬ ‫مثال‬ ‫عنوان‬ ‫به‬: ‫دارد‬ ‫قرار‬ ‫هم‬ ‫مجاورت‬ ‫در‬ ‫که‬ ‫باشد‬ ‫می‬ ‫متغیر‬ ‫دو‬ ‫دارای‬ ‫برنامه‬ ‫یک‬.A‫متغییر‬ ‫یک‬String‫با‬8‫و‬ ‫بیت‬B‫مقدار‬ ‫یک‬Integer‫با‬ 2‫شده‬ ‫داده‬ ‫تخصیص‬ ‫حافظه‬ ‫بیت‬.‫مقدار‬A‫و‬ ‫شده‬ ‫پر‬ ‫صفر‬ ‫با‬ ‫اما‬ ‫خالی‬B‫مقدار‬3‫دارد‬ ‫درخود‬ ‫را‬ ‫متغییر‬ ‫مقدار‬ ‫که‬ ‫میبینیم‬ ‫اینجا‬ ‫در‬B‫متغیر‬ ‫مقدار‬ ‫توسط‬A‫بازنویسی‬(overwrite)‫برنامه‬ ‫در‬ ‫اختالل‬ ‫ایجاد‬ ‫باعث‬ ‫که‬ ‫است‬ ‫شده‬ ‫موجب‬ ‫شود‬ ‫برنامه‬ ‫مهم‬ ‫اطالعات‬ ‫تغییر‬ ‫باعث‬ ‫اگر‬ ‫و‬ ‫شده‬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
  • 7.
  • 8.
    FOOTPRINT OF STACKOVERFLOW ATTACK Classic attack “ payload” 1. An Nop sled 2. A shell code 3. A new return address 8
  • 9.
    PROTECTING CANARIES Ssp subroutine 1.Ssp’s prolog 2. Initialization: prepare local variable 3. Subroutine body: subroutine’s algorithm 4. Clean up: removing local variable 5. Ssp’s epilog 5. 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
  • 10.
    HOW CANARY DETECTSTACK SMASHING 10
  • 11.
    STACK SMASHING ATTACKS& PROTECTION • Protection  Non-executable stack  ASLR(Address space layout randomization)  Canaries • Attacks  Payload  Return to libc attack 11
  • 12.
    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
  • 13.
    ‫واقعی‬ ‫دنیا‬ ‫در‬‫هایی‬ ‫مثال‬  SQL Slammer Worm (at 2003 )  Blaster Worm (Dcom at windows)  Code red Worm  Morris Worm (Unix Finger Server - getc) 13
  • 14.
  • 15.
    ‫منابع‬ 1. Anatomy ofstack smashing-DrDobbs.htm 2. www.insecure.org/stf/smashstack.html 3. www.securitytube.net 15
  • 16.
    ‫گرامی‬ ‫دوستان‬ ‫و‬‫چعبی‬ ‫استاد‬ ‫از‬ ‫تشکر‬ 16