SlideShare une entreprise Scribd logo
1  sur  71
0-Knowledge Fuzzing VincenzoIozzo vincenzo.iozzo@zynamics.com
Disclaimer In this talk you won’t see all those formulas, formal definition, code snippets and bullets.  From past experiences the speaker learned that all the aforementioned elements are no useful in making people understand your idea. You instead will see a lot of funny pictures which the speaker hopes will convey better the understanding of the ideas explained in the talk You don’t want slides like this, do you?
Motivations
Questions!
Fuzzing
How it used to be
How it is today                               (aka the reason of this talk)
Dumb fuzzing
Smart Fuzzing
Evolutionary Based Fuzzing
The idea
The surface
We need a filter
Cyclomatic complexity
This one
Not this one
Original formula 				M = E – N + 2P Number of edges Number of nodes Connected components
Why? Cyclomatic number 				M = E – N + P
Simplify
Formula M = E – N + 2
Problem
Loop detection
Dominator tree
Dominators
Function
Dominator tree
Dominators
Implicit loops
REIL
This one…
…to this one
Is that enough?
Not enough Of course not, more heuristics needed void*safe_strcpy(void*old_dest,void *src, intsize){ void*dst = realloc(old_dest, size +1);    	 strncpy(dst, src, size);    returndst; }
Add your own For static analysis we use
DEMO
Questions!
Data Tainting
Example Taint Source Taint mark movl0x4[eax], ebx
Dytan
PIN
Taint sources
Markings granularity
Propagation  add eax, ebx, edx
Output 				Registers 			Memory locations
DEMO
Questions!
In-memory fuzzing
Example esi= 0x30f064  Original loc  esi= 0x30f0A4  Fuzzed loc  rep movs
Why?
Problems
Expertise and patience
Memory instability
False positives
False negatives
Mutation loop insertion
Snapshot mutation restoration
What do we do? Hook image Hook functions Hook instructions Hook
First approach
For instance… 30f064-30f068 	0x8a Y 0x00 K ABCD
Second approach
Example 30f064-30f068 30f084-30f098 0x89 K D F 0x96 0x00 J K U Y W 0xA7 0xB8 0x00 0x10 A T N 0x00 0xD3 ABCD
Code coverage
Score BBexecuted/BBtotal Basic Blocks executed Total Basic Blocks
Halting Cevil = Cgood + t Code coverage evil sample Code coverage good sample User-supplied threshold
How?? Good sample Evil sample Compare Score  Score
What do we use? Code coverage Faults monitor
DEMO
Future – A reasoner
Thanks
Questions!
More Info viozzo.wordpress.com 				@_snagg vincenzo.iozzo@zynamics.com

Contenu connexe

Similaire à 0-knowledge fuzzing

Deep Learning with Audio Signals: Prepare, Process, Design, Expect
Deep Learning with Audio Signals: Prepare, Process, Design, ExpectDeep Learning with Audio Signals: Prepare, Process, Design, Expect
Deep Learning with Audio Signals: Prepare, Process, Design, ExpectKeunwoo Choi
 
An Introduction to Deep Learning I AWS Dev Day 2018
An Introduction to Deep Learning I AWS Dev Day 2018An Introduction to Deep Learning I AWS Dev Day 2018
An Introduction to Deep Learning I AWS Dev Day 2018AWS Germany
 
An Introduction to Deep Learning (April 2018)
An Introduction to Deep Learning (April 2018)An Introduction to Deep Learning (April 2018)
An Introduction to Deep Learning (April 2018)Julien SIMON
 
Chatbots and Deep Learning
Chatbots and Deep LearningChatbots and Deep Learning
Chatbots and Deep LearningAndherson Maeda
 
An introduction to deep learning concepts
An introduction to deep learning conceptsAn introduction to deep learning concepts
An introduction to deep learning conceptsAmazon Web Services
 
Ruby object model
Ruby object modelRuby object model
Ruby object modelmbeizer
 
Algorithm hierarchy
Algorithm hierarchyAlgorithm hierarchy
Algorithm hierarchyChangyu Yang
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?Colin Riley
 
Automating Tinder w/ Eigenfaces and StanfordNLP
Automating Tinder w/ Eigenfaces and StanfordNLPAutomating Tinder w/ Eigenfaces and StanfordNLP
Automating Tinder w/ Eigenfaces and StanfordNLPJustin Long
 
Four Languages From Forty Years Ago (NewCrafts 2019)
Four Languages From Forty Years Ago (NewCrafts 2019)Four Languages From Forty Years Ago (NewCrafts 2019)
Four Languages From Forty Years Ago (NewCrafts 2019)Scott Wlaschin
 
What Developers Need To Know About Visual Design
What Developers Need To Know About Visual DesignWhat Developers Need To Know About Visual Design
What Developers Need To Know About Visual DesignBen Hall
 
Machine Learning Workshop, TSEC 2020
Machine Learning Workshop, TSEC 2020Machine Learning Workshop, TSEC 2020
Machine Learning Workshop, TSEC 2020Siddharth Adelkar
 
Deep learning introduction
Deep learning introductionDeep learning introduction
Deep learning introductionAdwait Bhave
 
Pointers lesson 4 (malloc and its use)
Pointers lesson 4 (malloc and its use)Pointers lesson 4 (malloc and its use)
Pointers lesson 4 (malloc and its use)SetuMaheshwari1
 
MLlecture1.ppt
MLlecture1.pptMLlecture1.ppt
MLlecture1.pptbutest
 
MLlecture1.ppt
MLlecture1.pptMLlecture1.ppt
MLlecture1.pptbutest
 
Machine learning the next revolution or just another hype
Machine learning   the next revolution or just another hypeMachine learning   the next revolution or just another hype
Machine learning the next revolution or just another hypeJorge Ferrer
 
When indexes are not enough
When indexes are not enoughWhen indexes are not enough
When indexes are not enoughDavide Mauri
 

Similaire à 0-knowledge fuzzing (20)

Speakers tips
Speakers tipsSpeakers tips
Speakers tips
 
Deep Learning with Audio Signals: Prepare, Process, Design, Expect
Deep Learning with Audio Signals: Prepare, Process, Design, ExpectDeep Learning with Audio Signals: Prepare, Process, Design, Expect
Deep Learning with Audio Signals: Prepare, Process, Design, Expect
 
An Introduction to Deep Learning I AWS Dev Day 2018
An Introduction to Deep Learning I AWS Dev Day 2018An Introduction to Deep Learning I AWS Dev Day 2018
An Introduction to Deep Learning I AWS Dev Day 2018
 
An Introduction to Deep Learning (April 2018)
An Introduction to Deep Learning (April 2018)An Introduction to Deep Learning (April 2018)
An Introduction to Deep Learning (April 2018)
 
Chatbots and Deep Learning
Chatbots and Deep LearningChatbots and Deep Learning
Chatbots and Deep Learning
 
An introduction to deep learning concepts
An introduction to deep learning conceptsAn introduction to deep learning concepts
An introduction to deep learning concepts
 
Ruby object model
Ruby object modelRuby object model
Ruby object model
 
Algorithm hierarchy
Algorithm hierarchyAlgorithm hierarchy
Algorithm hierarchy
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
 
Automating Tinder w/ Eigenfaces and StanfordNLP
Automating Tinder w/ Eigenfaces and StanfordNLPAutomating Tinder w/ Eigenfaces and StanfordNLP
Automating Tinder w/ Eigenfaces and StanfordNLP
 
Four Languages From Forty Years Ago (NewCrafts 2019)
Four Languages From Forty Years Ago (NewCrafts 2019)Four Languages From Forty Years Ago (NewCrafts 2019)
Four Languages From Forty Years Ago (NewCrafts 2019)
 
NLP Bootcamp
NLP BootcampNLP Bootcamp
NLP Bootcamp
 
What Developers Need To Know About Visual Design
What Developers Need To Know About Visual DesignWhat Developers Need To Know About Visual Design
What Developers Need To Know About Visual Design
 
Machine Learning Workshop, TSEC 2020
Machine Learning Workshop, TSEC 2020Machine Learning Workshop, TSEC 2020
Machine Learning Workshop, TSEC 2020
 
Deep learning introduction
Deep learning introductionDeep learning introduction
Deep learning introduction
 
Pointers lesson 4 (malloc and its use)
Pointers lesson 4 (malloc and its use)Pointers lesson 4 (malloc and its use)
Pointers lesson 4 (malloc and its use)
 
MLlecture1.ppt
MLlecture1.pptMLlecture1.ppt
MLlecture1.ppt
 
MLlecture1.ppt
MLlecture1.pptMLlecture1.ppt
MLlecture1.ppt
 
Machine learning the next revolution or just another hype
Machine learning   the next revolution or just another hypeMachine learning   the next revolution or just another hype
Machine learning the next revolution or just another hype
 
When indexes are not enough
When indexes are not enoughWhen indexes are not enough
When indexes are not enough
 

Plus de zynamics GmbH

How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malwarezynamics GmbH
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malwarezynamics GmbH
 
Architectural Diversity (German)
Architectural Diversity (German)Architectural Diversity (German)
Architectural Diversity (German)zynamics GmbH
 
Architectural Diversity (German)
Architectural Diversity (German)Architectural Diversity (German)
Architectural Diversity (German)zynamics GmbH
 
Uni mannheim debuggers
Uni mannheim debuggersUni mannheim debuggers
Uni mannheim debuggerszynamics GmbH
 
Introduction to mobile reversing
Introduction to mobile reversingIntroduction to mobile reversing
Introduction to mobile reversingzynamics GmbH
 
0-knowledge fuzzing white paper
0-knowledge fuzzing white paper0-knowledge fuzzing white paper
0-knowledge fuzzing white paperzynamics GmbH
 
Formale Methoden im Reverse Engineering
Formale Methoden im Reverse EngineeringFormale Methoden im Reverse Engineering
Formale Methoden im Reverse Engineeringzynamics GmbH
 

Plus de zynamics GmbH (10)

How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malware
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malware
 
Architectural Diversity (German)
Architectural Diversity (German)Architectural Diversity (German)
Architectural Diversity (German)
 
Architectural Diversity (German)
Architectural Diversity (German)Architectural Diversity (German)
Architectural Diversity (German)
 
Uni mannheim debuggers
Uni mannheim debuggersUni mannheim debuggers
Uni mannheim debuggers
 
Introduction to mobile reversing
Introduction to mobile reversingIntroduction to mobile reversing
Introduction to mobile reversing
 
0-knowledge fuzzing white paper
0-knowledge fuzzing white paper0-knowledge fuzzing white paper
0-knowledge fuzzing white paper
 
Inbot10 vxclass
Inbot10 vxclassInbot10 vxclass
Inbot10 vxclass
 
ShaREing is Caring
ShaREing is CaringShaREing is Caring
ShaREing is Caring
 
Formale Methoden im Reverse Engineering
Formale Methoden im Reverse EngineeringFormale Methoden im Reverse Engineering
Formale Methoden im Reverse Engineering
 

0-knowledge fuzzing

Notes de l'éditeur

  1. babic