Upload
dokien
View
219
Download
0
Embed Size (px)
Citation preview
٢/٨/١۴٣۶
١
1HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
افزار به روش فازینگ پذیري نرم کشف آسیب
علیرضا عمادالدین
93پاییز
٢/٨/١۴٣۶
٢
فهرست مطالب
مقدمه
ایده اولیه
بهبود ایده اولیه
کارایی فازینگ
مطالعه بیشتر
فازینگ جعبه سیاه
فازینگ تصادفی
توجه به ساختار ورودي
فازینگ جعبه خاکستري و جعبه سفید
هاي تکاملی استفاده از الگوریتم
استفاده از تحلیل آلودگی
استفاده از اجراي نمادین
استفاده از معیار مشابهت
3
HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
مقدمه
4HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
٢/٨/١۴٣۶
٣
ایده اولیه
ایده اولیه:
توسط 1988در سالBarton Miller در دانشگاهWisconsin-Madison
،اتصال به کامپیوتر محل کار از راه دور در یک هواي طوفانی، ایجاد اشکال در سیستم ارتباطی!ها شکستن برنامه ها و درهم تغییر در دستورات داده شده به برنامه
تعریف یک پروژه در مورد فازینگ براي درس سیستم عامل
5
HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
بهبود ایده اولیه
سه مرحله اصلی در فازینگ:
تولید ورودي
اجراي برنامه هدف با ورودي تولید شده
پایش برنامه هدف
تولید ورودي: مهمترین مرحله
تفاوت اصلی فازرهاي مختلف در این مرحله است .
فازینگ کاراتر= هاي بهتر تولید ورودي
احتمال کم بررسی عمق برنامه: ایراد اصلی فازینگ تصادفی
هاي بهتر نسبت به حالت تولید تصادفی ورودي کارهایی براي تولید ورودي ارائه راه
6
HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
٢/٨/١۴٣۶
۴
)ادامه...(بهبود ایده اولیه
دو حوزه کلی:
فازینگ جعبه سیاه: بهبود فازینگ بدون استفاده از ساختار داخلی برنامه
در هنگام تولید ورودي براي برنامه... ساخت، توصیف ورودي برنامه و هاي خوش استفاده از ورودي
سفید/فازینگ جعبه خاکستري: بهبود فازینگ با استفاده از ساختار داخلی برنامه
در بهبود فازینگ... هاي تکاملی و استفاده از تحلیل آلودگی، اجراي نمادین، الگوریتم
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
٢/٨/١۴٣۶
۵
مطالعه بیشتر
ها کتاب
اند هایی که در مورد فازینگ نوشته شده کتاب:
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
٢/٨/١۴٣۶
۶
)ادامه...(مطالعه بیشتر
منابع دیگر
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
٢/٨/١۴٣۶
٧
تولید ورودي تصادفی
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
٢/٨/١۴٣۶
٨
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
٢/٨/١۴٣۶
٩
هاي تکاملی استفاده از الگوریتم
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
٢/٨/١۴٣۶
١٠
هاي تکاملی استفاده از الگوریتم
محاسبه احتمال اجراي هر مسیر:
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
٢/٨/١۴٣۶
١١
)ادامه...(تکاملیهاي استفاده از الگوریتم
اجزاي تشکیل دهنده این روش:
محاسبه پوشانندگی کد با ابزار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
٢/٨/١۴٣۶
١٢
استفاده از تحلیل آلودگی
ایده اصلی:
ها در فازینگ هاي مهم ورودي با استفاده از تحلیل آلودگی و سپس تغییر آن قسمت تشخیص قسمت
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
٢/٨/١۴٣۶
١٣
)ادامه...(استفاده از تحلیل آلودگی
بررسی ساختار داخلی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
٢/٨/١۴٣۶
١۴
)ادامه...(استفاده از تحلیل آلودگی
بررسی روشTaintscope:
تشخیص بررسیchecksum در برنامه
ساخت از یک سمت هاي خوش محلی از برنامه که تمامی ورودي.یابند هاي تغییر یافته از سمت دیگر ادامه می و اغلب ورودي
تغییر این نقاط در برنامه اصلی و اجراي برنامه تغییر یافته
27
HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
)ادامه...(استفاده از تحلیل آلودگی
بررسی روشTaintscope:
انجام تحلیل آلودگی و فراهم کردن اطالعات براي تشخیص : مرحله اولchecksum
تشخیص : مرحله دومchecksum
انجام فازینگ با استفاده از اطالعات مراحل قبل: مرحله سوم
استفاده از اجراي ( هاي بدست آمده از مرحله قبل ساخت ورودي براي برنامه اصلی از روي ورودي: مرحله چهارم)نمادین
28
HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
٢/٨/١۴٣۶
١۵
)ادامه...(استفاده از تحلیل آلودگی
بررسی یک مثال:
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
٢/٨/١۴٣۶
١۶
)ادامه...(استفاده از اجراي نمادین
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
٢/٨/١۴٣۶
١٧
)ادامه...(استفاده از اجراي نمادین
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
٢/٨/١۴٣۶
١٨
)ادامه...(استفاده از اجراي نمادین
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
٢/٨/١۴٣۶
١٩
)ادامه...(استفاده از اجراي نمادین
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
٢/٨/١۴٣۶
٢٠
استفاده از معیار مشابهت
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
٢/٨/١۴٣۶
٢١
)ادامه...(استفاده از معیار مشابهت
تعاریف و روابط
برنامه هدف :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
٢/٨/١۴٣۶
٢٢
HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN
با تشکر
44HTTP://CEIT.AUT.AC.IR/~SHAHRIARI/COURSES/SOFTVULN