Ի՞նչ է Fuzzing-ը:

Ինչն է խճճված

Ներածություն. Ի՞նչ է Fuzzing-ը:

Չինացի հաքերները 2014թ կոտրել են Համայնքային Առողջապահական Համակարգերը, շահույթ հետապնդող ԱՄՆ հիվանդանոցային ցանց և գողացել 4.5 միլիոն հիվանդների տվյալները: Հաքերները շահագործել են Heartbleed կոչվող սխալը, որը հայտնաբերվել է OpenSSL կրիպտոգրաֆիայի գրադարանում հաքերից մի քանի ամիս առաջ:

Heartbleed-ը հարձակման վեկտորների դասի օրինակ է, որը հարձակվողներին թույլ է տալիս մուտք գործել թիրախ՝ ուղարկելով սխալ ձևակերպված հարցումներ, որոնք բավարար են նախնական ստուգումներ անցնելու համար: Թեև մասնագետները, ովքեր աշխատում են հավելվածի տարբեր մասերի վրա, անում են հնարավորը դրա անվտանգությունն ապահովելու համար, անհնար է մտածել բոլոր անկյունային դեպքերի մասին, որոնք կարող են կոտրել հավելվածը կամ այն ​​խոցելի դարձնել մշակման ընթացքում:

Ահա թե որտեղ է «fuzzing»-ը գալիս:

Ի՞նչ է անորոշ հարձակումը:

Fuzzing, fuzz testing կամ fuzzing attack-ը ծրագրային ապահովման ավտոմատացված փորձարկման տեխնիկա է, որն օգտագործվում է պատահական, անսպասելի կամ անվավեր տվյալներ (կոչվում են fuzz) ծրագրում սնուցելու համար: Ծրագիրը վերահսկվում է անսովոր կամ անսպասելի վարքագծերի համար, ինչպիսիք են բուֆերների արտահոսքը, խափանումները, հիշողության արտահոսքը, շղթայի կախվածությունը և կարդալու/գրելու մուտքի խախտումները: The Fuzzing գործիքը կամ fuzzer-ն այնուհետև օգտագործվում է անսովոր վարքի պատճառը բացահայտելու համար:

Fuzzing-ը հիմնված է այն ենթադրության վրա, որ բոլոր համակարգերը պարունակում են սխալներ, որոնք սպասում են հայտնաբերման, և կարող են բավարար ժամանակ և ռեսուրսներ տրամադրել դրա համար: Համակարգերից շատերն ունեն շատ լավ վերլուծիչներ կամ մուտքի վավերացման կանխարգելում կիբերհանցագործներ ծրագրի ցանկացած հիպոթետիկ սխալների շահագործումից: Այնուամենայնիվ, ինչպես վերը նշեցինք, զարգացման ընթացքում բոլոր անկյունային դեպքերը ծածկելը դժվար է:

Fuzzers-ներն օգտագործվում են այնպիսի ծրագրերի վրա, որոնք ընդունում են կառուցվածքային մուտքագրում կամ ունեն որոշակի վստահության սահման: Օրինակ, PDF ֆայլեր ընդունող ծրագիրը կունենա որոշակի վավերացում՝ ապահովելու համար, որ ֆայլն ունի .pdf ընդլայնում և վերլուծիչ՝ PDF ֆայլը մշակելու համար:

Արդյունավետ fuzzer-ը կարող է ստեղծել բավականաչափ վավեր մուտքեր՝ անցնելու այս սահմանները, բայց բավական անվավեր՝ ծրագրից ավելի հեռու անսպասելի վարքագիծ առաջացնելու համար: Սա կարևոր է, քանի որ միայն վավերացումները հաղթահարելը շատ բան չի նշանակում, եթե հետագա վնաս չպատճառվի:

Fuzzers-ը հայտնաբերում է հարձակման վեկտորներ, որոնք շատ նման են և ներառում են SQL ներարկման, խաչմերուկային սկրիպտների, բուֆերների արտահոսքի և ծառայության մերժման գրոհների նման: Այս բոլոր հարձակումները համակարգում անսպասելի, անվավեր կամ պատահական տվյալների սնուցման արդյունք են: 

 

Fuzzers-ի տեսակները

Fuzzers-ը կարելի է դասակարգել որոշ բնութագրերի հիման վրա.

  1. Հարձակման թիրախներ
  2. Fuzz-ի ստեղծման մեթոդ
  3. Ներածման կառուցվածքի իրազեկում
  4. Ծրագրի կառուցվածքի իմացություն

1. Հարձակման թիրախներ

Այս դասակարգումը հիմնված է այն հարթակի վրա, որն օգտագործվում է fuzzer-ը փորձարկելու համար: Fuzzers-ը սովորաբար օգտագործվում է ցանցային արձանագրությունների և ծրագրային հավելվածների հետ: Յուրաքանչյուր հարթակ ունի որոշակի տեսակի մուտքագրում, որը ստանում է, և, հետևաբար, պահանջում է տարբեր տեսակի ֆազերներ:

Օրինակ, հավելվածների հետ գործ ունենալիս բոլոր անորոշ փորձերը տեղի են ունենում հավելվածի տարբեր մուտքային ալիքներում, ինչպիսիք են օգտատիրոջ միջերեսը, հրամանի տողի տերմինալը, ձևաթղթերի/տեքստի մուտքագրումները և ֆայլերի վերբեռնումը: Այսպիսով, fuzzer-ի կողմից ստեղծված բոլոր մուտքերը պետք է համապատասխանեն այս ալիքներին:

Հաղորդակցության արձանագրություններով զբաղվող Fuzzers-ը պետք է գործ ունենա փաթեթների հետ: Այս հարթակը թիրախավորող Fuzzers-ը կարող է ստեղծել կեղծված փաթեթներ կամ նույնիսկ հանդես գալ որպես վստահված անձ՝ գաղտնալսված փաթեթները փոփոխելու և դրանք վերարտադրելու համար:

2. Fuzz-ի ստեղծման մեթոդ

Fuzzers-ները կարող են նաև դասակարգվել՝ հիմնվելով այն բանի վրա, թե ինչպես են նրանք ստեղծում տվյալներ՝ դրանց հետ շփոթելու համար: Պատմականորեն, ֆազերները ստեղծում էին fuzz՝ զրոյից պատահական տվյալներ ստեղծելով: Այս տեխնիկայի նախաձեռնող պրոֆեսոր Բարթոն Միլլերը սկզբում այդպես վարվեց: Ֆուզերների այս տեսակը կոչվում է ա սերնդի վրա հիմնված fuzzer.

Այնուամենայնիվ, թեև տեսականորեն կարելի է ստեղծել տվյալներ, որոնք կշրջանցեն վստահության սահմանը, դա անելու համար զգալի ժամանակ և ռեսուրսներ կպահանջվեն: Հետևաբար, այս մեթոդը սովորաբար օգտագործվում է պարզ մուտքային կառուցվածք ունեցող համակարգերի համար:

Այս խնդրի լուծումն այն տվյալների մուտացիան է, որը հայտնի է որպես վավեր, որպեսզի ստեղծի բավականաչափ վավեր տվյալներ վստահության սահմանն անցնելու համար, սակայն բավականաչափ անվավեր՝ խնդիրներ առաջացնելու համար: Դրա լավ օրինակն է ա DNS fuzzer որը վերցնում է տիրույթի անուն և այնուհետև ստեղծում է տիրույթի անունների մեծ ցուցակ՝ հայտնաբերելու պոտենցիալ վնասակար տիրույթները, որոնք ուղղված են նշված տիրույթի սեփականատիրոջը:

Այս մոտեցումն ավելի խելացի է, քան նախորդը և զգալիորեն նեղացնում է հնարավոր փոխարկումները։ Fuzzers, որոնք օգտագործում են այս մեթոդը, կոչվում են մուտացիաների վրա հիմնված ֆուզերներ

Գոյություն ունի երրորդ ավելի նոր մեթոդ, որն օգտագործում է գենետիկական ալգորիթմներ՝ խոցելիությունը վերացնելու համար անհրաժեշտ օպտիմալ անորոշ տվյալների վրա համընկնելու համար: Այն աշխատում է շարունակաբար կատարելագործելով իր fuzz տվյալները՝ հաշվի առնելով յուրաքանչյուր թեստային տվյալների կատարումը, երբ սնվում է ծրագրի մեջ: 

Ամենավատ արդյունքներով տվյալների հավաքածուները հեռացվում են տվյալների ֆոնդից, մինչդեռ լավագույնները մուտացիայի են ենթարկվում և/կամ համակցվում: Տվյալների նոր սերունդն այնուհետև օգտագործվում է նորից փորձարկելու համար: Այս fuzzer-ները կոչվում են էվոլյուցիոն մուտացիաների վրա հիմնված ֆուզերներ:

3. Ներածման կառուցվածքի իրազեկում

Այս դասակարգումը հիմնված է այն բանի վրա, թե արդյոք fuzzer-ը տեղյակ է և ակտիվորեն օգտագործում է ծրագրի մուտքային կառուցվածքը fuzz տվյալների ստեղծման համար: Ա համր ֆուզեր (ֆուզեր, որը տեղյակ չէ ծրագրի ներածման կառուցվածքի մասին) ստեղծում է fuzz հիմնականում պատահական եղանակով: Սա կարող է ներառել ինչպես սերնդի, այնպես էլ մուտացիայի վրա հիմնված ֆազերներ: 


Եթե ​​fuzzer-ին տրամադրվի ծրագրի մուտքային մոդելը, ապա ֆազերը կարող է այնուհետև փորձել ստեղծել կամ փոփոխել տվյալներ այնպես, որ այն համապատասխանի տրամադրված մուտքային մոդելին: Այս մոտեցումը հետագայում նվազեցնում է անվավեր տվյալներ ստեղծելու համար ծախսվող ռեսուրսների քանակը: Նման ֆուզերը կոչվում է ա խելացի fuzzer.

4. Ծրագրի կառուցվածքի իրազեկում

Fuzzers-ները կարող են նաև դասակարգվել՝ ելնելով այն բանից, թե արդյոք նրանք տեղյակ են այն ծրագրի ներքին աշխատանքի մասին, որը նրանք խառնում են, և օգտագործում են այդ իրազեկությունը՝ օգնելու fuzz տվյալների ստեղծմանը: Երբ ֆազերները օգտագործվում են ծրագրի փորձարկման համար՝ չհասկանալով դրա ներքին կառուցվածքը, դա կոչվում է սև տուփի փորձարկում: 

Սև արկղի փորձարկման ժամանակ ստեղծվող Fuzz տվյալները սովորաբար պատահական են, եթե ֆազերը էվոլյուցիոն մուտացիաների վրա հիմնված ֆուզեր չէ, որտեղ այն «սովորում է» մոնիտորինգի ենթարկելով իր անորոշության ազդեցությունը և օգտագործելով այն: տեղեկություն կատարելագործել իր fuzz տվյալների հավաքածուն:

Մյուս կողմից, White-box-ի փորձարկումն օգտագործում է ծրագրի ներքին կառուցվածքի մոդել՝ fuzz տվյալների ստեղծման համար: Այս մոտեցումը թույլ է տալիս fuzzer-ին հասնել ծրագրի կարևոր վայրեր և փորձարկել այն: 

Հանրաճանաչ Fuzzing Tools

Կան բազմաթիվ fuzzing գործիքներ այնտեղ օգտագործվում է գրիչի փորձարկողների կողմից: Ամենահայտնիներից մի քանիսն են.

Fuzzing-ի սահմանափակումները

Թեև Fuzzing-ը իսկապես օգտակար գրիչի փորձարկման տեխնիկա է, այն առանց թերությունների չէ: Դրանցից մի քանիսն են.

  • Վազելու համար բավական երկար ժամանակ է պահանջվում։
  • Ծրագրի սև տուփի փորձարկման ժամանակ հայտնաբերված խափանումները և այլ անսպասելի վարքագիծը կարող են դժվար լինել, եթե ոչ անհնարին վերլուծելը կամ վրիպազերծելը:
  • Խելացի մուտացիաների վրա հիմնված fuzzer-ների համար մուտացիայի ձևանմուշների ստեղծումը կարող է ժամանակատար լինել: Երբեմն դա կարող է նույնիսկ անհնարին լինել, քանի որ մուտքային մոդելը սեփականության կամ անհայտ է:

 

Այնուամենայնիվ, դա բավականին օգտակար և անհրաժեշտ գործիք է բոլորի համար, ովքեր ցանկանում են հայտնաբերել սխալներ չար տղաներից առաջ:

Եզրափակում

Fuzzing-ը գրիչի փորձարկման հզոր տեխնիկա է, որը կարող է օգտագործվել ծրագրային ապահովման խոցելիությունը բացահայտելու համար: Գոյություն ունեն բազմաթիվ տարբեր տեսակի ֆուզերներ, և անընդհատ նոր ֆուզերներ են մշակվում: Չնայած fuzzing-ը աներևակայելի օգտակար գործիք է, այն ունի իր սահմանափակումները: Օրինակ, ֆազերները կարող են գտնել միայն այդքան խոցելիություններ, և դրանք կարող են բավականին ռեսուրսներ պահանջել: Այնուամենայնիվ, եթե ցանկանում եք փորձել ինքներդ ձեզ համար այս զարմանալի տեխնիկան, մենք ունենք a անվճար DNS Fuzzer API, որը կարող եք օգտագործել մեր հարթակում: 

Ուրեմն ինչ եք սպասում: 

Սկսեք շփոթվել այսօր:

Google-ը և ինկոգնիտո առասպելը

Google-ը և ինկոգնիտո առասպելը

Google-ը և ինկոգնիտո առասպելը 1 թվականի ապրիլի 2024-ին Google-ը համաձայնեց լուծել դատական ​​հայցը՝ ոչնչացնելով ինկոգնիտո ռեժիմից հավաքված միլիարդավոր տվյալների գրառումները:

Կարդալ ավելին "
Ինչպես խաբել MAC հասցեն

MAC հասցեներ և MAC կեղծում. համապարփակ ուղեցույց

MAC հասցե և MAC կեղծում. համապարփակ ուղեցույց Ներածություն Հաղորդակցության հեշտացումից մինչև անվտանգ միացումներ միացնելը, MAC հասցեները հիմնարար դեր են խաղում սարքերի նույնականացման գործում:

Կարդալ ավելին "