SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Semelhante a 0-knowledge fuzzing

Ruby object model
Ruby object modelRuby object model
Ruby object model
mbeizer
 
MLlecture1.ppt
MLlecture1.pptMLlecture1.ppt
MLlecture1.ppt
butest
 
MLlecture1.ppt
MLlecture1.pptMLlecture1.ppt
MLlecture1.ppt
butest
 

Semelhante a 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
 

Mais 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

Notas do Editor

  1. babic