SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Fuzzing Techniques for
Software Vulnerability
Discovery
        Fuzzing is easy, until you really try it

Relatore: Alberto   Trivero
Vulnerability Discovery
         Methodologies
White-box testing (source code static analysis)
 Elevato code coverage ma falsi positivi molto numerosi
 e necessita dei sorgenti dell’applicazione
Black-box testing (fuzzing)
  Sempre applicabile e spesso semplice ma risulta difficile
  capire quanto del software è stato testato
Gray-box testing
  Black-box testing migliorato con tecniche di RCE
Molti bug hunter intuiscono dove potrebbero annidarsi
possibili vulnerabilità: entrano nella testa dello sviluppatore
Fuzz testing, la nascita

La nascita si fa risalire a Barton Miller che nel 1990
pubblicò “An Empirical Study of the Reliability of UNIX
Utilities” presso la University of Wisconsin-Madison
Il programma sviluppato, fuzz, generava un flusso di
dati casuali indirizzato a utility UNIX a riga di comando
Risultato: dal 25% al 33% delle utility andò in crash o si
bloccò, a seconda della variante UNIX
Il bambino promette bene.. ;-)
Panoramica introduttiva
              quot;Even the most rudimentary fuzzers are
               surprisingly effective.quot; (Pedram Amini)
Con automatismi vari, un fuzzer ha lo scopo di identificare
degli input che lo sviluppatore non ha valutato e che
l’applicazione non è in grado di gestire correttamente
Il fuzzing è piuttosto diffuso tra i security researchers per
la sua relativa semplicità e gli ottimi risultati che offre
Oltre il 70% delle vulnerabilità che Microsoft ha patchato
nel 2006 sono state trovate grazie al fuzzing (esempi
passati: IFRAME bug e .printer bug)
I fuzzer sono responsabili di molti dei “month of” bugs
Giusto qualche nome...
B0ffuzzer.txt        RIOT and                                    powerfuzzer-0.9a.
                     FaultMon.zip          dhcpfuzz.pl
COMRaider-0.0.1                            fileh.zip              zip
33.exe               SMUDGE.zip                                  proxyfuzz-0.1.py
                     SPIKE 2.9.tgz         filep.zip
DOM-Hanoi                                  ftpfuzz.zip           radius-fuzzer.tgz
0.2.html             SPIKEfile.tgz                                rfuzz-0.9.gem.tar
                     Sulley Fuzzing        fusil-0.8.tar.gz
EFS-PaiMei.zip                                                   scratch.rar
                     Framework             fuzzball2-0.7.tar.g
FileFuzz.zip                               z                     sfuzz-0.2.c
                     1.0.exe
Fuzzled-1.2.tar.gz                         hamachi 0.4.html      smtpfuzz-0.9.16.zi
                     TagBruteForcer.zi
Fuzzware v1.4.rar    p                     iCalfuzz-0.1.py       p
FuzzyFiles.pl        antiparser-2.0.tar.   ioctlizer-0.1b.zip    snmp-
FuzzySniffAndSen     gz                                          fuzzer-0.1.1.tar.bz
                                           ip6sic-0.1.tar.gz     2
d.zip                autodafe-0.1.tar.g    ircfuzz-0.3.c         sysfuzz.c
GPF.tar.bz2.tar      z                     isic-0.06.tgz         syslog-
JBroFuzz-0.9.exe     axman-1.0.0.zip       jsfunfuzz.zip         fuzzer-0.1.pl
JavaFuzz-0.5.jar     beSTORM               mangle.c              taof-0.3.2.zip
Malybuzz-1.0b.tar    3.5.6.zip
.gz                                        mangleme.tgz          tftpfuzz.py
                     bugger-0.01b.tgz
PROTOS Test-                               mielietools-1.0.tg    ufuz3.zip
                     bunny-0.92.tgz        z
Suite.zip            chunked fuzzer                              untidy-beta2.tgz
Peach-2.1_BETA3                            mistress-0.2.rar      zzuf-0.12.tar.gz.ta
                     0.7.c
.exe                                       pgmfuzz.c             r
                     dfuz_0.3.1b.tar.gz
Fuzzing phases:
     un po’ di formalismo
Identificare l’obiettivo
Identificare gli input
Generare degli input malevoli (fuzzed data)
Esecuzione degli stessi
Monitorare eventuali eccezioni
Determinare l’exploittabilità
Tipologie di fuzzer
  quot;For each vulnerability that comes out, make sure
        your fuzzer can find it, then abstract it a bit
                                  more.quot; (Dave Aitel)
Command-line (clfuzz, iFUZZ)
Environment variabile (sharefuzz, iFUZZ)
File format (FileFuzz, notSPIKEfile, SPIKEfile)
Network Protocol (SPIKE, Peach e vari protocol-specific)
Web application (WebScarab, SPIKE Proxy, wfuzz)
Web browser (mangleme, DOM-Hanoi, Hamachi, CSSDIE)
Fuzzing Framework (dfuz, Autodafé, Peach, GPF, Sulley)
Fuzzed data generation
HTTP GET request standard:
  GET /index.html HTTP/1.1
Richieste malformate:
  AAAAAA...AAAA /index.html HTTP/1.1
  GET ///////index.html HTTP/1.1
  GET %n%n%n%n%n%n.html HTTP/1.1
  GET /AAAAAAAAAAAAA.html HTTP/1.1
  GET /index.html HTTTTTTTTTTTTTP/1.1
  GET /index.html HTTP/1.1.1.1.1.1.1.1
Fuzzed data generation:
     Mutation-based
E’ il metodo più semplice e veloce (da codare e usare)
Conoscenza scarsa o assente della struttura degli input
Corruzione (random o con una certa euristica) di input/
dati validi
E’ facile che fallisca in protocolli che utilizzano checksum,
CRC, codifiche, bit indicanti la lunghezza di un campo
while [1]; do cat /dev/urandom | nc -vv
target port; done
Esempi: Taof, GPF, FileFuzz, notSPIKEfile
Fuzzed data generation:
   Generation-based
              quot;Intelligent fuzzing usually gives more
                          results.quot; (Ilja van Sprundel)
Generazione automatica degli input, senza utilizzarne di
precedentemente forniti, basandosi sulle specifiche del
formato in esame
Ogni punto possibile dell’input sarà soggetto a anomalie
Esempi: SPIKE, SPIKEfile, Sulley e molti dei fuzzer
commerciali
Fuzzed data generation:
       Evolutionary

Sviluppo ancora in stato embrionale, basato soprattutto
sui lavori di Jared DeMott
Input futuri generati in base alle risposte passate che il
programma ha fornito (p.es. basare la priorità dei test
cases in base a quale input a raggiunto API pericolose)
Esempi: Autodafè, EFS (usa PaiMei per tecniche
avanzate di code coverage)
Un po’ di euristica
C’è spesso una ricorrenza nella tipologia di input malevoli
in grado di evidenziare una vulnerabilità
Conviene quindi testare loro prima di fare modifiche
random: più completa sarà la lista di input, migliore
risulterà il code coverage ottenuto
Esempi:
  “A” x 65000
  ../../../../../../../../etc/passwd
  %n%n%n%n%n%n
  0xFFFFFFF1
DEMO
Problematiche
I mutation-based fuzzers possono generare un infinito
numero di test cases, quando è stato eseguito a
sufficienza il fuzzer?
Ricerca dei bug non deterministica: stessa probabilità
che il programma chashi dopo 2 minuti o 2 settimane!
Come identifico un bug dietro un altro bug?
Non so quanto del software è stato eseguito e testato
(code coverage)
Praticamente nessun fuzzer oggi in circolazione utilizza
i risultati degli input passati per costruirne poi di migliori
Tecniche avanzate
Si utilizzano tecniche avanzate di code coverage (aka
fuzzer tracking) per testare tutti i possibili percorsi che
gli input possono raggiungere
Tecniche di automated protocol dissection che
utilizzano algoritmi genetici sono state create per
fuzzare al meglio anche protocolli proprietari sconosciuti
Algoritmi genetici sono anche usati per indirizzare la
scelta degli input migliori in una data situazione in base
a quelli passati: code coverage massimizzato
Tecniche di dynamic binary instrumentation permettono
di individuare la sorgente di un errore e non solo il suo
verificarsi
Tecniche avanzate:
         white-box fuzzing
No, non è un ossimoro, è un termine usato soprattutto da
Microsoft che ha lavorato sul concetto nell’ultimo anno
Non c’entra molto con l’Hybrid Analysis di Rafal Los
Invio di input malformati con la garanzia però di coprire
praticamente tutti i “percorsi” possibili grazie a tecniche di
dynamic test generation e symbolic execution
Molto più complesso e lento dell’approccio black-box ma
molto più efficace (SAGE ha scoperto la vulnerabilità ANI)
Fuzzing & SDLC
Microsoft sin dal 2004 ha integrato avanzate tecniche di
fuzzing nel proprio Security Development Lifecycle (si è
accorta che correggere una vulnerabilità in un prodotto
già pubblico le costava milioni di $$$, mica per altro :P )
Chiedere maggiore collaborazione ai security specialists
durante il SDLC potrebbe essere utile (la segnalazione
di una vulnerabilità in Firefox 3 poche ore dopo il rilascio
evidenzia però il problema del security business)
Il costo per patchare un software cresce più che
linearmente all’avanzare del suo sviluppo
Conclusioni

Le tecniche di fuzzing sono sicuramente il metodo più
efficace per la ricerca di vulnerabilità (molte, non tutte!)
Dopo che una vulnerabilità vi siete divertiti a trovarla,
potete godere ancora di più exploittandola, se possibile!
Esistono alcune soluzioni commerciali per il fuzzing:
beSTORM, Codenomicon, Mu Dynamics, Holodeck
(personalmente mi son trovato bene con beSTORM)
Links utili


        Trovate queste slide all’indirizzo:
    http://trivero.secdiscover.com/hat02.pdf
h71028.www7.hp.com/ERC/cache/
571092-0-0-0-121.html
www.fuzzing.org
Domande?




   Relatore: Alberto   Trivero
   e-mail: a.trivero@secdiscover.com

Weitere ähnliche Inhalte

Was ist angesagt?

CyberWar e CyberTerr
CyberWar e CyberTerrCyberWar e CyberTerr
CyberWar e CyberTerrMatteo Flora
 
Simulazione di un Penetration Test
Simulazione di un Penetration TestSimulazione di un Penetration Test
Simulazione di un Penetration TestSalvatore Lentini
 
Le fasi di un Penetration testing
Le fasi di un Penetration testingLe fasi di un Penetration testing
Le fasi di un Penetration testingAlessandra Zullo
 
BackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration TestBackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration TestAndrea Draghetti
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Marco Ferrigno
 

Was ist angesagt? (8)

CyberWar e CyberTerr
CyberWar e CyberTerrCyberWar e CyberTerr
CyberWar e CyberTerr
 
Simulazione di un Penetration Test
Simulazione di un Penetration TestSimulazione di un Penetration Test
Simulazione di un Penetration Test
 
Devianze
DevianzeDevianze
Devianze
 
Le fasi di un Penetration testing
Le fasi di un Penetration testingLe fasi di un Penetration testing
Le fasi di un Penetration testing
 
BackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration TestBackBox Linux: Simulazione di un Penetration Test
BackBox Linux: Simulazione di un Penetration Test
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Openmoko
OpenmokoOpenmoko
Openmoko
 
Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...Security and hacking engineering - metodologie di attacco e difesa con strume...
Security and hacking engineering - metodologie di attacco e difesa con strume...
 

Andere mochten auch

Unpolished Rice - Panacea for Good Health
Unpolished Rice - Panacea for Good HealthUnpolished Rice - Panacea for Good Health
Unpolished Rice - Panacea for Good Healthgloherbals
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQueryhowlowck
 
Constipation and its Remedy
Constipation and its RemedyConstipation and its Remedy
Constipation and its Remedyzegensocial
 
Pt Kinhamas Abadi Company Profile
Pt Kinhamas Abadi    Company ProfilePt Kinhamas Abadi    Company Profile
Pt Kinhamas Abadi Company ProfileHabibie Razak
 
Abusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side StorageAbusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side Storageameft
 
Mobi sir presentation
Mobi sir presentationMobi sir presentation
Mobi sir presentationG Srinivasan
 
Experiments around Mobile Learning
Experiments around Mobile LearningExperiments around Mobile Learning
Experiments around Mobile LearningG Srinivasan
 
ArthaVidhya brochure
ArthaVidhya brochureArthaVidhya brochure
ArthaVidhya brochureG Srinivasan
 
The Social Media Spine: Building the backbone to your online presence
The Social Media Spine: Building the backbone to your online presenceThe Social Media Spine: Building the backbone to your online presence
The Social Media Spine: Building the backbone to your online presenceStacy Lukasavitz Steele
 
Lost at sea? Location-based services to the rescue!
Lost at sea? Location-based services to the rescue! Lost at sea? Location-based services to the rescue!
Lost at sea? Location-based services to the rescue! Stacy Lukasavitz Steele
 
A guru always takes you for a ride sadhguru
A guru always takes you for a ride sadhguruA guru always takes you for a ride sadhguru
A guru always takes you for a ride sadhgururegstuff
 
548510 sap-release-strategy
548510 sap-release-strategy548510 sap-release-strategy
548510 sap-release-strategysanteetax
 
Vasudhara dairy case study
Vasudhara dairy case studyVasudhara dairy case study
Vasudhara dairy case studyalishashah155
 
Cow and Our Health
Cow  and Our HealthCow  and Our Health
Cow and Our Healthzegensocial
 
Managing Environmental Project at PT Inco; Actualization of Professional Ethi...
Managing Environmental Project at PT Inco; Actualization of Professional Ethi...Managing Environmental Project at PT Inco; Actualization of Professional Ethi...
Managing Environmental Project at PT Inco; Actualization of Professional Ethi...Habibie Razak
 
Power point Presentation on SEVAI - COW PROJECT, .
Power point Presentation on SEVAI - COW PROJECT, .Power point Presentation on SEVAI - COW PROJECT, .
Power point Presentation on SEVAI - COW PROJECT, .sevaingo
 
Basic Funding Concepts for Entrepreneurs
Basic Funding Concepts for EntrepreneursBasic Funding Concepts for Entrepreneurs
Basic Funding Concepts for EntrepreneursAlok Rodinhood Kejriwal
 
How to grow taller 4 idiots pdf
How to grow taller 4 idiots pdfHow to grow taller 4 idiots pdf
How to grow taller 4 idiots pdfmrmicky368
 
Building a Marketplace: A Checklist for Online Disruption
Building a Marketplace: A Checklist for Online DisruptionBuilding a Marketplace: A Checklist for Online Disruption
Building a Marketplace: A Checklist for Online DisruptionSangeet Paul Choudary
 

Andere mochten auch (20)

Unpolished Rice - Panacea for Good Health
Unpolished Rice - Panacea for Good HealthUnpolished Rice - Panacea for Good Health
Unpolished Rice - Panacea for Good Health
 
Ditching JQuery
Ditching JQueryDitching JQuery
Ditching JQuery
 
Constipation and its Remedy
Constipation and its RemedyConstipation and its Remedy
Constipation and its Remedy
 
Pt Kinhamas Abadi Company Profile
Pt Kinhamas Abadi    Company ProfilePt Kinhamas Abadi    Company Profile
Pt Kinhamas Abadi Company Profile
 
Abusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side StorageAbusing HTML 5 Client-side Storage
Abusing HTML 5 Client-side Storage
 
Mobi sir presentation
Mobi sir presentationMobi sir presentation
Mobi sir presentation
 
Experiments around Mobile Learning
Experiments around Mobile LearningExperiments around Mobile Learning
Experiments around Mobile Learning
 
ArthaVidhya brochure
ArthaVidhya brochureArthaVidhya brochure
ArthaVidhya brochure
 
Upavaasa Yoga
Upavaasa YogaUpavaasa Yoga
Upavaasa Yoga
 
The Social Media Spine: Building the backbone to your online presence
The Social Media Spine: Building the backbone to your online presenceThe Social Media Spine: Building the backbone to your online presence
The Social Media Spine: Building the backbone to your online presence
 
Lost at sea? Location-based services to the rescue!
Lost at sea? Location-based services to the rescue! Lost at sea? Location-based services to the rescue!
Lost at sea? Location-based services to the rescue!
 
A guru always takes you for a ride sadhguru
A guru always takes you for a ride sadhguruA guru always takes you for a ride sadhguru
A guru always takes you for a ride sadhguru
 
548510 sap-release-strategy
548510 sap-release-strategy548510 sap-release-strategy
548510 sap-release-strategy
 
Vasudhara dairy case study
Vasudhara dairy case studyVasudhara dairy case study
Vasudhara dairy case study
 
Cow and Our Health
Cow  and Our HealthCow  and Our Health
Cow and Our Health
 
Managing Environmental Project at PT Inco; Actualization of Professional Ethi...
Managing Environmental Project at PT Inco; Actualization of Professional Ethi...Managing Environmental Project at PT Inco; Actualization of Professional Ethi...
Managing Environmental Project at PT Inco; Actualization of Professional Ethi...
 
Power point Presentation on SEVAI - COW PROJECT, .
Power point Presentation on SEVAI - COW PROJECT, .Power point Presentation on SEVAI - COW PROJECT, .
Power point Presentation on SEVAI - COW PROJECT, .
 
Basic Funding Concepts for Entrepreneurs
Basic Funding Concepts for EntrepreneursBasic Funding Concepts for Entrepreneurs
Basic Funding Concepts for Entrepreneurs
 
How to grow taller 4 idiots pdf
How to grow taller 4 idiots pdfHow to grow taller 4 idiots pdf
How to grow taller 4 idiots pdf
 
Building a Marketplace: A Checklist for Online Disruption
Building a Marketplace: A Checklist for Online DisruptionBuilding a Marketplace: A Checklist for Online Disruption
Building a Marketplace: A Checklist for Online Disruption
 

Ähnlich wie Fuzzing Techniques for Software Vulnerability Discovery

Fuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability DiscoveryFuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability DiscoveryVittorio Giovara
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking EngineeringNaLUG
 
Matteo Flora: Cyber Warfare e CyberGuerrilla
Matteo Flora: Cyber Warfare e CyberGuerrillaMatteo Flora: Cyber Warfare e CyberGuerrilla
Matteo Flora: Cyber Warfare e CyberGuerrillaMatteo Flora
 
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo  2016 WinterMamma, da grande voglio essere un Penetration Tester HackInBo  2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 WinterSimone Onofri
 
Cyber Defense - How to find and manage zero-days
Cyber Defense - How to find and manage zero-days Cyber Defense - How to find and manage zero-days
Cyber Defense - How to find and manage zero-days Simone Onofri
 
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniBackdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniSalvatore Lentini
 
Digital Forensic
Digital ForensicDigital Forensic
Digital ForensicNaLUG
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoBabel
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziareFrancesco Tucci
 
Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Claudio Criscione
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016Michele Nasti
 
Digital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaDigital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaMarco Ferrigno
 
Rootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNARootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNAMichele Bologna
 
Malware Analysis. A Case Study
Malware Analysis. A Case StudyMalware Analysis. A Case Study
Malware Analysis. A Case StudyGianni Amato
 
Introduzione a RaspBerry PI
Introduzione a RaspBerry PIIntroduzione a RaspBerry PI
Introduzione a RaspBerry PIPaolo Aliverti
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFAndrea Draghetti
 
Pacchi e pacchetti
Pacchi e pacchettiPacchi e pacchetti
Pacchi e pacchettigiallu
 
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisureCCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisurewalk2talk srl
 

Ähnlich wie Fuzzing Techniques for Software Vulnerability Discovery (20)

Fuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability DiscoveryFuzzing Techniques for Software Vulnerability Discovery
Fuzzing Techniques for Software Vulnerability Discovery
 
Security and hacking Engineering
Security and hacking EngineeringSecurity and hacking Engineering
Security and hacking Engineering
 
Matteo Flora: Cyber Warfare e CyberGuerrilla
Matteo Flora: Cyber Warfare e CyberGuerrillaMatteo Flora: Cyber Warfare e CyberGuerrilla
Matteo Flora: Cyber Warfare e CyberGuerrilla
 
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo  2016 WinterMamma, da grande voglio essere un Penetration Tester HackInBo  2016 Winter
Mamma, da grande voglio essere un Penetration Tester HackInBo 2016 Winter
 
Cyber Defense - How to find and manage zero-days
Cyber Defense - How to find and manage zero-days Cyber Defense - How to find and manage zero-days
Cyber Defense - How to find and manage zero-days
 
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniBackdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
 
Digital Forensic
Digital ForensicDigital Forensic
Digital Forensic
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziare
 
Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]Virtually Pwned: Hacking VMware [ITA - SMAU10]
Virtually Pwned: Hacking VMware [ITA - SMAU10]
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
 
Digital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaDigital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaforma
 
Rootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNARootkit: teoria e pratica. Michele BOLOGNA
Rootkit: teoria e pratica. Michele BOLOGNA
 
Antivirus & Antivirus Evasion
Antivirus & Antivirus EvasionAntivirus & Antivirus Evasion
Antivirus & Antivirus Evasion
 
Malware Analysis. A Case Study
Malware Analysis. A Case StudyMalware Analysis. A Case Study
Malware Analysis. A Case Study
 
Come proteggersi dagli attacchi informatici
Come proteggersi dagli attacchi informaticiCome proteggersi dagli attacchi informatici
Come proteggersi dagli attacchi informatici
 
Introduzione a RaspBerry PI
Introduzione a RaspBerry PIIntroduzione a RaspBerry PI
Introduzione a RaspBerry PI
 
BackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTFBackBox Linux: Simulazione di un Penetration Test e CTF
BackBox Linux: Simulazione di un Penetration Test e CTF
 
Pacchi e pacchetti
Pacchi e pacchettiPacchi e pacchetti
Pacchi e pacchetti
 
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisureCCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
CCI2018 - Ethical Hacking, gli step di un attacco e le contromisure
 

Fuzzing Techniques for Software Vulnerability Discovery

  • 1. Fuzzing Techniques for Software Vulnerability Discovery Fuzzing is easy, until you really try it Relatore: Alberto Trivero
  • 2. Vulnerability Discovery Methodologies White-box testing (source code static analysis) Elevato code coverage ma falsi positivi molto numerosi e necessita dei sorgenti dell’applicazione Black-box testing (fuzzing) Sempre applicabile e spesso semplice ma risulta difficile capire quanto del software è stato testato Gray-box testing Black-box testing migliorato con tecniche di RCE Molti bug hunter intuiscono dove potrebbero annidarsi possibili vulnerabilità: entrano nella testa dello sviluppatore
  • 3. Fuzz testing, la nascita La nascita si fa risalire a Barton Miller che nel 1990 pubblicò “An Empirical Study of the Reliability of UNIX Utilities” presso la University of Wisconsin-Madison Il programma sviluppato, fuzz, generava un flusso di dati casuali indirizzato a utility UNIX a riga di comando Risultato: dal 25% al 33% delle utility andò in crash o si bloccò, a seconda della variante UNIX Il bambino promette bene.. ;-)
  • 4. Panoramica introduttiva quot;Even the most rudimentary fuzzers are surprisingly effective.quot; (Pedram Amini) Con automatismi vari, un fuzzer ha lo scopo di identificare degli input che lo sviluppatore non ha valutato e che l’applicazione non è in grado di gestire correttamente Il fuzzing è piuttosto diffuso tra i security researchers per la sua relativa semplicità e gli ottimi risultati che offre Oltre il 70% delle vulnerabilità che Microsoft ha patchato nel 2006 sono state trovate grazie al fuzzing (esempi passati: IFRAME bug e .printer bug) I fuzzer sono responsabili di molti dei “month of” bugs
  • 5. Giusto qualche nome... B0ffuzzer.txt RIOT and powerfuzzer-0.9a. FaultMon.zip dhcpfuzz.pl COMRaider-0.0.1 fileh.zip zip 33.exe SMUDGE.zip proxyfuzz-0.1.py SPIKE 2.9.tgz filep.zip DOM-Hanoi ftpfuzz.zip radius-fuzzer.tgz 0.2.html SPIKEfile.tgz rfuzz-0.9.gem.tar Sulley Fuzzing fusil-0.8.tar.gz EFS-PaiMei.zip scratch.rar Framework fuzzball2-0.7.tar.g FileFuzz.zip z sfuzz-0.2.c 1.0.exe Fuzzled-1.2.tar.gz hamachi 0.4.html smtpfuzz-0.9.16.zi TagBruteForcer.zi Fuzzware v1.4.rar p iCalfuzz-0.1.py p FuzzyFiles.pl antiparser-2.0.tar. ioctlizer-0.1b.zip snmp- FuzzySniffAndSen gz fuzzer-0.1.1.tar.bz ip6sic-0.1.tar.gz 2 d.zip autodafe-0.1.tar.g ircfuzz-0.3.c sysfuzz.c GPF.tar.bz2.tar z isic-0.06.tgz syslog- JBroFuzz-0.9.exe axman-1.0.0.zip jsfunfuzz.zip fuzzer-0.1.pl JavaFuzz-0.5.jar beSTORM mangle.c taof-0.3.2.zip Malybuzz-1.0b.tar 3.5.6.zip .gz mangleme.tgz tftpfuzz.py bugger-0.01b.tgz PROTOS Test- mielietools-1.0.tg ufuz3.zip bunny-0.92.tgz z Suite.zip chunked fuzzer untidy-beta2.tgz Peach-2.1_BETA3 mistress-0.2.rar zzuf-0.12.tar.gz.ta 0.7.c .exe pgmfuzz.c r dfuz_0.3.1b.tar.gz
  • 6. Fuzzing phases: un po’ di formalismo Identificare l’obiettivo Identificare gli input Generare degli input malevoli (fuzzed data) Esecuzione degli stessi Monitorare eventuali eccezioni Determinare l’exploittabilità
  • 7. Tipologie di fuzzer quot;For each vulnerability that comes out, make sure your fuzzer can find it, then abstract it a bit more.quot; (Dave Aitel) Command-line (clfuzz, iFUZZ) Environment variabile (sharefuzz, iFUZZ) File format (FileFuzz, notSPIKEfile, SPIKEfile) Network Protocol (SPIKE, Peach e vari protocol-specific) Web application (WebScarab, SPIKE Proxy, wfuzz) Web browser (mangleme, DOM-Hanoi, Hamachi, CSSDIE) Fuzzing Framework (dfuz, Autodafé, Peach, GPF, Sulley)
  • 8. Fuzzed data generation HTTP GET request standard: GET /index.html HTTP/1.1 Richieste malformate: AAAAAA...AAAA /index.html HTTP/1.1 GET ///////index.html HTTP/1.1 GET %n%n%n%n%n%n.html HTTP/1.1 GET /AAAAAAAAAAAAA.html HTTP/1.1 GET /index.html HTTTTTTTTTTTTTP/1.1 GET /index.html HTTP/1.1.1.1.1.1.1.1
  • 9. Fuzzed data generation: Mutation-based E’ il metodo più semplice e veloce (da codare e usare) Conoscenza scarsa o assente della struttura degli input Corruzione (random o con una certa euristica) di input/ dati validi E’ facile che fallisca in protocolli che utilizzano checksum, CRC, codifiche, bit indicanti la lunghezza di un campo while [1]; do cat /dev/urandom | nc -vv target port; done Esempi: Taof, GPF, FileFuzz, notSPIKEfile
  • 10. Fuzzed data generation: Generation-based quot;Intelligent fuzzing usually gives more results.quot; (Ilja van Sprundel) Generazione automatica degli input, senza utilizzarne di precedentemente forniti, basandosi sulle specifiche del formato in esame Ogni punto possibile dell’input sarà soggetto a anomalie Esempi: SPIKE, SPIKEfile, Sulley e molti dei fuzzer commerciali
  • 11. Fuzzed data generation: Evolutionary Sviluppo ancora in stato embrionale, basato soprattutto sui lavori di Jared DeMott Input futuri generati in base alle risposte passate che il programma ha fornito (p.es. basare la priorità dei test cases in base a quale input a raggiunto API pericolose) Esempi: Autodafè, EFS (usa PaiMei per tecniche avanzate di code coverage)
  • 12. Un po’ di euristica C’è spesso una ricorrenza nella tipologia di input malevoli in grado di evidenziare una vulnerabilità Conviene quindi testare loro prima di fare modifiche random: più completa sarà la lista di input, migliore risulterà il code coverage ottenuto Esempi: “A” x 65000 ../../../../../../../../etc/passwd %n%n%n%n%n%n 0xFFFFFFF1
  • 13. DEMO
  • 14. Problematiche I mutation-based fuzzers possono generare un infinito numero di test cases, quando è stato eseguito a sufficienza il fuzzer? Ricerca dei bug non deterministica: stessa probabilità che il programma chashi dopo 2 minuti o 2 settimane! Come identifico un bug dietro un altro bug? Non so quanto del software è stato eseguito e testato (code coverage) Praticamente nessun fuzzer oggi in circolazione utilizza i risultati degli input passati per costruirne poi di migliori
  • 15. Tecniche avanzate Si utilizzano tecniche avanzate di code coverage (aka fuzzer tracking) per testare tutti i possibili percorsi che gli input possono raggiungere Tecniche di automated protocol dissection che utilizzano algoritmi genetici sono state create per fuzzare al meglio anche protocolli proprietari sconosciuti Algoritmi genetici sono anche usati per indirizzare la scelta degli input migliori in una data situazione in base a quelli passati: code coverage massimizzato Tecniche di dynamic binary instrumentation permettono di individuare la sorgente di un errore e non solo il suo verificarsi
  • 16. Tecniche avanzate: white-box fuzzing No, non è un ossimoro, è un termine usato soprattutto da Microsoft che ha lavorato sul concetto nell’ultimo anno Non c’entra molto con l’Hybrid Analysis di Rafal Los Invio di input malformati con la garanzia però di coprire praticamente tutti i “percorsi” possibili grazie a tecniche di dynamic test generation e symbolic execution Molto più complesso e lento dell’approccio black-box ma molto più efficace (SAGE ha scoperto la vulnerabilità ANI)
  • 17. Fuzzing & SDLC Microsoft sin dal 2004 ha integrato avanzate tecniche di fuzzing nel proprio Security Development Lifecycle (si è accorta che correggere una vulnerabilità in un prodotto già pubblico le costava milioni di $$$, mica per altro :P ) Chiedere maggiore collaborazione ai security specialists durante il SDLC potrebbe essere utile (la segnalazione di una vulnerabilità in Firefox 3 poche ore dopo il rilascio evidenzia però il problema del security business) Il costo per patchare un software cresce più che linearmente all’avanzare del suo sviluppo
  • 18. Conclusioni Le tecniche di fuzzing sono sicuramente il metodo più efficace per la ricerca di vulnerabilità (molte, non tutte!) Dopo che una vulnerabilità vi siete divertiti a trovarla, potete godere ancora di più exploittandola, se possibile! Esistono alcune soluzioni commerciali per il fuzzing: beSTORM, Codenomicon, Mu Dynamics, Holodeck (personalmente mi son trovato bene con beSTORM)
  • 19. Links utili Trovate queste slide all’indirizzo: http://trivero.secdiscover.com/hat02.pdf h71028.www7.hp.com/ERC/cache/ 571092-0-0-0-121.html www.fuzzing.org
  • 20.
  • 21. Domande? Relatore: Alberto Trivero e-mail: a.trivero@secdiscover.com