22
٢/٨/١۴٣۶ ١ 1 HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN ﮐﺸﻒ آﺳﯿﺐ ﭘﺬﯾﺮي ﻧﺮم اﻓﺰار ﺑﻪ روش ﻓﺎزﯾﻨﮓ ﻋﻠﯿﺮﺿﺎ ﻋﻤﺎداﻟﺪﯾﻦ ﭘﺎﯾﯿﺰ93

ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

  • Upload
    dokien

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١

1HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

افزار به روش فازینگ پذیري نرم کشف آسیب

علیرضا عمادالدین

93پاییز

Page 2: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٢

فهرست مطالب

مقدمه

ایده اولیه

بهبود ایده اولیه

کارایی فازینگ

مطالعه بیشتر

فازینگ جعبه سیاه

فازینگ تصادفی

توجه به ساختار ورودي

فازینگ جعبه خاکستري و جعبه سفید

هاي تکاملی استفاده از الگوریتم

استفاده از تحلیل آلودگی

استفاده از اجراي نمادین

استفاده از معیار مشابهت

3

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

مقدمه

4HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 3: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٣

ایده اولیه

ایده اولیه:

توسط 1988در سالBarton Miller در دانشگاهWisconsin-Madison

،اتصال به کامپیوتر محل کار از راه دور در یک هواي طوفانی، ایجاد اشکال در سیستم ارتباطی!ها شکستن برنامه ها و درهم تغییر در دستورات داده شده به برنامه

تعریف یک پروژه در مورد فازینگ براي درس سیستم عامل

5

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

بهبود ایده اولیه

سه مرحله اصلی در فازینگ:

تولید ورودي

اجراي برنامه هدف با ورودي تولید شده

پایش برنامه هدف

تولید ورودي: مهمترین مرحله

تفاوت اصلی فازرهاي مختلف در این مرحله است .

فازینگ کاراتر= هاي بهتر تولید ورودي

احتمال کم بررسی عمق برنامه: ایراد اصلی فازینگ تصادفی

هاي بهتر نسبت به حالت تولید تصادفی ورودي کارهایی براي تولید ورودي ارائه راه

6

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 4: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

۴

)ادامه...(بهبود ایده اولیه

دو حوزه کلی:

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

در هنگام تولید ورودي براي برنامه... ساخت، توصیف ورودي برنامه و هاي خوش استفاده از ورودي

سفید/فازینگ جعبه خاکستري: بهبود فازینگ با استفاده از ساختار داخلی برنامه

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

7

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

کارایی فازینگ

پذیري موفق در کشف آسیب

هاي مرورگر پذیري ماه آسیب(month of browser bugs) (month of kernel bugs)هاي هسته پذیري و ماه آسیب

در طول سی روز ماه به کمک فازینگJuly و ماهNovember ها هر روز یک اشکال از مرورگر و هسته سیستم عامل 2006سال.منتشر شد

8

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 5: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

۵

مطالعه بیشتر

ها کتاب

اند هایی که در مورد فازینگ نوشته شده کتاب:

Fuzzing: Brute force vulnerability discovery, Michael Sutton/Pedram Amini/Adam Greene, 2007

Fuzzing for software security testing and quality assurance, Ari Takanen/Jared DeMott/Charlie Miller, 2008

Open source fuzzing tools, Noam Rathaus/Gadi Evron, 2007

9

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(مطالعه بیشتر

ها کتاب

ها در مورد فازینگ است هایی که بخشی از مطالب آن کتاب:

Grey Hat Python, Justin Seitz, 2009

Mac Hackers Handbook, Charlie Miller/Dino Dai Zovi, 2009

OS Hackers Handbook, Charlie Miller/Dino Dai Zovi/…, 2012

10

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 6: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

۶

)ادامه...(مطالعه بیشتر

منابع دیگر

www.fuzzing.info

www.fuzzing.org

Fuzzing: The State of the Art. DSTO Defence Science and Technology Organisation, Australia, February 2012.

11

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

فازینگ جعبه سیاه

12HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 7: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٧

تولید ورودي تصادفی

1990سال :

هاي کاربردي سیستم عامل بررسی برنامهunix با روش فازینگ تصادفی

B. Miller,L. Fredriksen and B. So. “An empirical study of the reliability of unix utilities”, Communications of the ACM 33(12), 32–44, 1990.

1995سال:

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

B. Miller,D. Koski,C. Pheow, L. V. Maganty,R. Murthy, A. Natarajan and J. Steidl. “Fuzz revisited: A re-examination of the reliability of UNIX utilities and services”, Technical report, 1995.

2000سال:

هاي کاربردي سیستم عامل بررسی برنامهwindows nt توسط فازینگ تصادفی

Forrester, J., Miller, B. ” An empirical study of the robustness of windows nt applications using random testing “, USENIX Windows Systems SymposiumVolume 4, p. p. 6–6, 2000.

13

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

توجه به ساختار ورودي

تولید ورودي بهتر با توجه به ساختار ورودي

ساخت هاي خوش تولید ورودي با تغییر ورودي(mutation-base fuzzing)

تولید ورودي با استفاده از توصیف داده شده از ساختار ورودي(generation-based fuzzing)

گیرند ها و اهداف مختلف ارائه شده است که در این دو حوزه قرار می ابزارهاي مختلفی براي برنامه.

2002سال:

معرفی ابزارspike

Aitel, D.; “An Introduction to SPIKE, the Fuzzer Creation Kit”, https://www.blackhat.com/presentations/bh-usa-02/bh-us-02-aitel-spike.ppt

ارائه ابزارprotos

PROTOS; Security Testing of Protocol Implementations https://www.ee.oulu.fi/research/ouspg/Protos

14

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 8: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٨

numwrites = random.randrange(math.ceil((float(len(buf)) / FuzzFactor)))+1

for j in range(numwrites):rbyte = random.randrange(256)rn = random.randrange(len(buf))buf[rn] = "%c"%(rbyte)

)ادامه...(توجه به ساختار ورودي

یک مثال

Babysitting an army of monkeys, Charlie MillerFuzzing 4 products (Acrobat Reader PDF, OS X Preview PDF, OpenOffice PPT, MS Office PPT) with 5 lines of python

15

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

سفید/فازینگ جعبه خاکستري

16HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 9: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٩

هاي تکاملی استفاده از الگوریتم

2007سال:

توجه به ساختار داخلی برنامه هدف و استفاده از الگوریتم ژنتیک براي تولید ورودي بهتر

Sparks, S., Embleton, S., Cunningham, R., Zou, C.; “Automated vulnerability analysis: Leveraging control flow for evolutionary input crafting”, ACSAC, p. p. 477–486, 2007.

؟گر را بررسی کنند هایی تولید کرد که نواحی مشخص شده توسط تحلیل توان ورودي چه طور می: سوال اصلی

17

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

هاي تکاملی استفاده از الگوریتم

هایی با شروع از تابع چه وروديrecv به قسمت داراي تابعstrcpy ؟رسند می

از الگوریتم ژنتیکاستفاده

شوند هاي مشخصی از برنامه استفاده می هایی که در قسمت با هدف تولید ورودي.

نحوه کار:

گراف جریان کنترلی برنامه با استفاده از تحلیل باینريساخت

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

ساده کردن گراف با توجه به هدف انتخاب شده

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

آید با هر بار تست یک ورودي احتمال هر تغییر گره در گراف محاسبه شده و ارزش این ورودي بدست می .

18

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 10: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١٠

هاي تکاملی استفاده از الگوریتم

محاسبه احتمال اجراي هر مسیر:

19

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(تکاملیهاي استفاده از الگوریتم

2007سال :

DeMott, J., Enbody, R., Punch, W.; “Revolutionizing the field of grey-box attack surface testing with evolutionary fuzzing”, blackhat, 2007.

هاي بهتر با معیار پوشش بیشتر کد استفاده از الگوریتم ژنتیک براي تولید ورودي: ایده اصلی

20

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 11: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١١

)ادامه...(تکاملیهاي استفاده از الگوریتم

اجزاي تشکیل دهنده این روش:

محاسبه پوشانندگی کد با ابزارpaimei

تولید ورودي با ابزارGPF

21

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(تکاملیهاي استفاده از الگوریتم

روش کار:

تعریف تعدادي ساختمان داده

اجرايsession هاي درون هرpool و محاسبه میزان پوشانندگی کد

محاسبه ارزش هرsession و ارزش هرpool و انجام مراحل الگوریتم ژنتیک با توجه به نتایج بدست آمده

تولیدpool هاي جدید

22

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 12: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١٢

استفاده از تحلیل آلودگی

ایده اصلی:

ها در فازینگ هاي مهم ورودي با استفاده از تحلیل آلودگی و سپس تغییر آن قسمت تشخیص قسمت

2009سال :

Ganesh, V., Leek, T., Rinard, M.; “Taint-based directed whitebox fuzzing”, ACM ICSE, 2009.

ارائه ابزارBuzzFuzz

23

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از تحلیل آلودگی

روش استفاده شده درBuzzFuzz:

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

تغییر برنامه هدف به صورتی که بتواند انتشار آلودگی داده ورودي در برنامه را ثبت کند.

ساخت هاي خوش اجراي برنامه تغییر یافته با ورودي

شوند هایی از ورودي که در نواحی حساس استفاده می ثبت قسمت.

ها در مرحله تولید ورودي براي فازینگ تغییر این قسمت

24

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 13: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١٣

)ادامه...(استفاده از تحلیل آلودگی

بررسی ساختار داخلیBuzzFuzz:

25

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از تحلیل آلودگی

ترکیب تحلیل آلودگی و تشخیص : 2010سالchecksum

Wang, T., Wei, T., Gu, G., Zou, W.; “TaintScope: A Checksum-Aware Directed Fuzzing Tool for Automatic Software Vulnerability Detection”, IEEE Security and Privacy, p. p. 497-512, 2010

تشخیص بررسی + تحلیل آلودگی : ایده اصلیchecksum در برنامه هدف و دور زدن آن

26

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 14: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١۴

)ادامه...(استفاده از تحلیل آلودگی

بررسی روشTaintscope:

تشخیص بررسیchecksum در برنامه

ساخت از یک سمت هاي خوش محلی از برنامه که تمامی ورودي.یابند هاي تغییر یافته از سمت دیگر ادامه می و اغلب ورودي

تغییر این نقاط در برنامه اصلی و اجراي برنامه تغییر یافته

27

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از تحلیل آلودگی

بررسی روشTaintscope:

انجام تحلیل آلودگی و فراهم کردن اطالعات براي تشخیص : مرحله اولchecksum

تشخیص : مرحله دومchecksum

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

استفاده از اجراي ( هاي بدست آمده از مرحله قبل ساخت ورودي براي برنامه اصلی از روي ورودي: مرحله چهارم)نمادین

28

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 15: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١۵

)ادامه...(استفاده از تحلیل آلودگی

بررسی یک مثال:

29

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

استفاده از اجراي نمادین

2008سال:

Godefroid, P., Levin, M., Molnar, D.; “Automated whitebox fuzz testing”. NDSS, 2008.

استفاده از اجراي نمادین در فازینگ به همراه یک الگوریتم جدید براي تولید ورودي: ایده اصلی

30

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 16: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١۶

)ادامه...(استفاده از اجراي نمادین

31

روش کار:

ساخت اجراي برنامه با یک ورودي خوش

آوري شرایط مسیر در هنگام اجراي ورودي جمع

هاي جدید کننده شرایط براي تولید ورودي ها و حل کردن شرایط جدید توسط حل نقیض کردن هر یک از شرط

انتخاب ورودي بعدي براي اجرا با توجه به معیار بیشترین پوشش کد

اجراي برنامه با ورودي انتخاب شده و تکرار روند گفته شده

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از اجراي نمادین

32

بررسی مثال:void top(char input[4]){

int cnt=0;if (input[0] == ’b’) cnt++;if (input[1] == ’a’) cnt++;if (input[2] == ’d’) cnt++;if (input[3] == ’!’) cnt++;

if (cnt >= 3) abort(); // error}

input[0] == b

input[1] == a

input[2] == d

input[3] == !

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 17: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١٧

)ادامه...(استفاده از اجراي نمادین

33

هاي ویژگیSAGE xecution)Euided Gutomated, Acalable, S(:

ارائه یک الگوریتم جدید براي تولید ورودي

الگوریتم جستجوي نسلی

حداکثر کردن تعداد ورودي جدید تولید شده براي هر بار اجراي نمادین

استفاده از الگوریتم اکتشافی براي حداکثر کردن پوشش کد

ایش کاراییهاي استفاده شده براي افز به کمک تکنیک) نسبت به کارهاي قبلی(هاي بزرگتر قابل اجرا بر روي برنامه

اجرا بر روي کد باینري

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از اجراي نمادین

34

هاي تشخیص داده شده یا کشف شده پذیري آسیب:

MS07-017 (CVE-2007-0038):

Windows Animated Cursor Remote Code Execution Vulnerability

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

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 18: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١٨

)ادامه...(استفاده از اجراي نمادین

35

ادامه(هاي تشخیص داده شده یا کشف شده پذیري آسیب:(

هاي پذیري جدید در برنامه آسیب 30کشف بیش ازwindows وoffice:

افزارهاي کار با عکس نرم

افزارهاي اجراي فیلم نرم

هاي مختلف افزارهاي کار با فایل نرم

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از اجراي نمادین

36

2009سال :

Fuzzgrind: an automatic fuzzing tool

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 19: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

١٩

)ادامه...(استفاده از اجراي نمادین

37

روش کار:

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از اجراي نمادین

38

سازي پیاده:

استفاده از ابزار نوشته شده برايvalgrind آوري شرایط براي جمع

استفاده ازSTP براي حل شرایط جدید

هاي مختلف استفاده از اسکریپت پایتون براي اتصال بخش

امتیازدهی :

هاي پایه اجرا شده بر اساس تعداد بلوك

متن باز :

http://esec-lab.sogeti.com/pages/Fuzzgrind

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 20: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٢٠

استفاده از معیار مشابهت

2011سال:

Zhang, D., Liu, D., Lei, Y., Kung, D., Csallner, C., Nystrom, N., Wang, W.; “SimFuzz: Test case similarity directed deep fuzzing”, Journal of Systems and Software, p. p. 102-111, 2011.

ساخت تولید ورودي با قابلیت بررسی عمق برنامه به کمک شباهت آن با ورودي خوش: ایده اصلی

دهنده ساختار ورودي است اجرایی ورودي به نوعی نشانمسیر

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

39

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از معیار مشابهت

یک مثال:

int f( char * q){

char name[5];

int magic;

magic = getFourByte(q);

if (magic != 1234)

return -1;

q = q + 4;

while( *q != null){

*name++ = *q++;

}

return 0;

}

I1={1234aa} c1:F , c2:T , c2:T , c2:F

I2={3091aa} c1:T

I3={1234aaaa} c1:F , c2:T , c2:T , c2:T , c2:T ,c2:F

40

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 21: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٢١

)ادامه...(استفاده از معیار مشابهت

تعاریف و روابط

برنامه هدف :P

ورودي برنامه :I

مسیر اجرایی وروديI در برنامهP :L(P, I)

2( (: فاصله ویرایشی بین دو مسیر اجرایی= فاصله دو ورودي), L(P, I1) = ED( L(P, I2,I1TCD(P, I

1طول مسیر اجرایی وروديI در برنامهP :s

1فاصله دو وروديI 2وI :d

1شباهت بین دو وروديI 2وI در برنامهP :

1و 0شباهت دو ورودي عددي بین

41

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

)ادامه...(استفاده از معیار مشابهت

الگوریتم تولید ورودي جدید

تغییر هر بخش مهم از ورودي واجراي آن

محاسبه میزان شباهت باساخت ورودي خوش

ادامه تغییر همین قسمت یا

شروع تغییر قسمت بعدي

input: P, I, incvec, segvec, ts1

begin

for i = 0; i < segvec.size(); i++ do

for j = 0; j < incvec.size(); j++ do

I’ = mutate (I, i, j);

testing (I’);

v = TCS (P, I, I’);

if v < ts1 then

break;

end

end

end

end

42

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

Page 22: ﮓﻨﯾزﺎﻓ شور ﻪﺑ راﺰﻓامﺮﻧ يﺮﯾﺬﭘﺐﯿﺳآ ﻒﺸﮐceit.aut.ac.ir/~hshahriari/courses/softvuln/slides/Fuzzing...Fuzzing: Brute force vulnerability

٢/٨/١۴٣۶

٢٢

HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN

با تشکر

44HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN