Webwerf-ikoon HaelBytes

Wat is Fuzzing?

Wat is fuzzing

Wat is Fuzzing?

Inleiding: Wat is fuzzing?

In 2014, Chinese hackers by Community Health Systems ingebreek, 'n Amerikaanse hospitaalketting met winsbejag, en het 4.5 miljoen pasiënte se data gesteel. Die kuberkrakers het 'n fout genaamd Heartbleed uitgebuit wat 'n paar maande voor die hack in die OpenSSL-kriptografie-biblioteek ontdek is.

Heartbleed is 'n voorbeeld van 'n klas aanvalvektore wat aanvallers toelaat om toegang tot 'n teiken te kry deur misvormde versoeke in te stuur wat geldig genoeg is om voorlopige kontrole te slaag. Terwyl professionele persone wat aan verskillende dele van 'n toepassing werk, hul bes doen om die sekuriteit daarvan te verseker, is dit onmoontlik om aan alle hoekgevalle te dink wat 'n toepassing kan breek of dit kwesbaar kan maak tydens ontwikkeling.

Dit is waar 'fuzzing' inkom.

Wat is 'n fuzzing aanval?

Fuzzing, fuzz-toetsing of 'n fuzzing-aanval is 'n outomatiese sagteware-toetstegniek wat gebruik word om ewekansige, onverwagte of ongeldige data (genoem fuzz) in 'n program in te voer. Die program word gemonitor vir ongewone of onverwagte gedrag soos bufferoorloop, ineenstortings, geheue lekkasies, draad hang, en lees/skryf toegang oortredings. Die fuzzing-instrument of fuzzer word dan gebruik om die oorsaak van die ongewone gedrag te ontdek.

Fuzzing is gebaseer op die aanname dat alle stelsels foute bevat wat wag om ontdek te word, en genoeg tyd en hulpbronne kan kry om dit te doen. Die meeste stelsels het baie goeie ontleders of insetvalideringsvoorkoming cybercriminals van die ontginning van enige hipotetiese foute in 'n program. Soos ons hierbo genoem het, is dit egter moeilik om alle hoekgevalle tydens ontwikkeling te dek.

Fuzzers word gebruik op programme wat gestruktureerde insette inneem of 'n soort vertrouegrens het. Byvoorbeeld, 'n program wat PDF-lêers aanvaar, sal 'n mate van validering hê om te verseker dat die lêer 'n .pdf-uitbreiding en ontleder het om die PDF-lêer te verwerk.

'n Effektiewe fuzzer kan insette genereer wat geldig genoeg is om verby hierdie grense te kom, maar tog ongeldig genoeg om onverwagte gedrag verder af in die program te veroorsaak. Dit is belangrik, want net om verby die validasies te kom, beteken nie veel as geen verdere skade veroorsaak word nie.

Fuzzers ontdek aanvalsvektore wat baie soortgelyk is aan en sluit in soos SQL-inspuiting, cross-site scripting, buffer-oorloop en ontkenning-van-diens-aanvalle. Al hierdie aanvalle is die gevolg van die invoer van onverwagte, ongeldige of ewekansige data in 'n stelsel. 

Tipes Fuzzers

Fuzzers kan geklassifiseer word op grond van sekere eienskappe:

  1. Aanval teikens
  2. Fuzz-skeppingsmetode
  3. Bewustheid van insetstruktuur
  4. Bewustheid van programstruktuur

1. Aanval teikens

Hierdie klassifikasie is gebaseer op die soort platform wat die fuzzer gebruik word om te toets. Fuzzers word algemeen gebruik met netwerkprotokolle en sagtewaretoepassings. Elke platform het 'n spesifieke tipe insette wat dit ontvang, en vereis dus verskillende tipes fuzzers.

Wanneer daar byvoorbeeld met toepassings gewerk word, vind alle fuzzing-pogings plaas by die toepassing se verskillende invoerkanale, soos die gebruikerskoppelvlak, opdragreëlterminaal, vorms/teksinvoere en lêeroplaaie. Dus moet alle insette wat deur die fuzzer gegenereer word by hierdie kanale pas.

Fuzzers wat met kommunikasieprotokolle handel, moet pakkies hanteer. Fuzzers wat hierdie platform teiken, kan vervalste pakkies genereer, of selfs as gevolmagtigdes optree om onderskepte pakkies te verander en dit weer te speel.

2. Fuzz-skeppingsmetode

Fuzzers kan ook geklassifiseer word op grond van hoe hulle data skep om mee te fuzz. Histories het fuzzers fuzz geskep deur ewekansige data van nuuts af te genereer. Dit was hoe professor Barton Miller, die inisieerder van hierdie tegniek, dit aanvanklik gedoen het. Hierdie tipe fuzzer word 'n genoem generasie-gebaseerde fuzzer.

Alhoewel 'n mens teoreties data kan genereer wat 'n trustgrens sal omseil, sal dit aansienlike tyd en hulpbronne neem om dit te doen. Daarom word hierdie metode gewoonlik gebruik vir stelsels met eenvoudige insetstrukture.

'n Oplossing vir hierdie probleem is om data wat bekend is as geldig te muteer om data te genereer wat geldig genoeg is om 'n trustgrens te slaag, maar tog ongeldig genoeg om probleme te veroorsaak. 'n Goeie voorbeeld hiervan is a DNS fuzzer wat 'n domeinnaam neem en dan 'n groot lys domeinname genereer om potensieel kwaadwillige domeine op te spoor wat die eienaar van die gespesifiseerde domein teiken.

Hierdie benadering is slimmer as die vorige en vernou die moontlike permutasies aansienlik. Fuzzers wat hierdie metode gebruik word genoem mutasie-gebaseerde fuzzers

Daar is 'n derde meer onlangse metode wat gebruik maak van genetiese algoritmes om te konvergeer op die optimale fuzz-data wat nodig is om kwesbaarhede uit te roei. Dit werk deur voortdurend sy fuzz-data te verfyn, met inagneming van die prestasie van elke toetsdata wanneer dit in 'n program ingevoer word. 

Die swakste presterende stelle data word uit die datapoel verwyder, terwyl die bestes gemuteer en/of gekombineer word. Die nuwe generasie data word dan gebruik om weer fuzz-toets te doen. Daar word na hierdie fuzzers verwys as evolusionêre mutasie-gebaseerde fuzzers.

3. Bewustheid van Insetstruktuur

Hierdie klassifikasie is gebaseer op of 'n fuzzer bewus is van en aktief die insetstruktuur van 'n program gebruik om fuzz-data te genereer. A stomme fuzzer ('n Fuzzer wat onbewus is van 'n program se insetstruktuur) genereer fuzz op 'n meestal ewekansige wyse. Dit kan beide generasie- en mutasie-gebaseerde fuzzers insluit. 

Sou 'n fuzzer voorsien word van die insetmodel van 'n program, kan die fuzzer dan probeer om data te genereer of te muteer sodat dit ooreenstem met die verskafde insetmodel. Hierdie benadering verminder verder die hoeveelheid hulpbronne wat spandeer word om ongeldige data te genereer. So 'n fuzzer word 'n genoem slim fuzzer.

4. Bewusmaking van programstruktuur

Fuzzers kan ook geklassifiseer word op grond van of hulle bewus is van die interne werking van die program wat hulle fuzzed, en gebruik daardie bewustheid om fuzz data generering te help. Wanneer fuzzers gebruik word om 'n program te toets sonder om die interne struktuur daarvan te verstaan, word dit swartbokstoetsing genoem. 

Fuzz-data wat tydens swartbokstoetsing gegenereer word, is gewoonlik ewekansig, tensy die fuzzer 'n evolusionêre mutasie-gebaseerde fuzzer is, waar dit 'leer' deur die effek van die fuzzer te monitor en dit te gebruik inligting om sy fuzz-datastel te verfyn.

White-box toetsing aan die ander kant gebruik 'n model van die program se interne struktuur om fuzz data te genereer. Hierdie benadering laat 'n fuzzer na kritieke plekke in 'n program kom en dit toets. 

Gewilde Fuzzing Tools

Daar is baie fuzzing gereedskap daar buite gebruik deur pentoetsers. Sommige van die gewildste is:

Beperkings van fuzzing

Alhoewel Fuzzing 'n baie nuttige pentoetstegniek is, is dit nie sonder sy foute nie. Sommige hiervan is:

Nietemin, dit is 'n redelik nuttige en noodsaaklike hulpmiddel vir almal wat foute voor die slegte ouens wil ontdek.

Gevolgtrekking

Fuzzing is 'n kragtige pen-toetstegniek wat gebruik kan word om kwesbaarhede in sagteware te ontbloot. Daar is baie verskillende soorte fuzzers, en nuwe fuzzers word heeltyd ontwikkel. Alhoewel fuzzing 'n ongelooflike nuttige hulpmiddel is, het dit wel sy beperkings. Fuzzers kan byvoorbeeld net soveel kwesbaarhede vind en hulle kan redelik hulpbronintensief wees. As jy egter hierdie wonderlike tegniek vir jouself wil probeer, het ons 'n gratis DNS Fuzzer API wat u op ons platform kan gebruik. 

So, waarvoor wag jy? 

Begin vandag fuzzy!

Verlaat mobiele weergawe