40
MICHAEL EDDINGTON [email protected] Advanced Fuzzing with Peach 2

Advanced Fuzzing with Peach 2

  • Upload
    deon

  • View
    155

  • Download
    0

Embed Size (px)

DESCRIPTION

Advanced Fuzzing with Peach 2. Michael Eddington [email protected]. Agenda. Introduction to Peach 2 Data mutations Peach State Machine Peach Farm Peach in The Middle. Introduction to Peach 2. Peach 1. Framework for writing fuzzers Instrumentation via wrapper APIs - PowerPoint PPT Presentation

Citation preview

Page 1: Advanced Fuzzing with Peach 2

MICHAEL [email protected]

Advanced Fuzzing with Peach 2

Page 2: Advanced Fuzzing with Peach 2

Agenda

Introduction to Peach 2

Data mutations

Peach State Machine

Peach Farm

Peach in The Middle

Page 3: Advanced Fuzzing with Peach 2

Introduction to Peach 2

Page 4: Advanced Fuzzing with Peach 2

Peach 1

Framework for writing fuzzers

Instrumentation via wrapper APIs

No data definition layer (DDL), just fuzzer

Steep learning curve

Complex fuzzers result in complex fuzzer code

Page 5: Advanced Fuzzing with Peach 2

Peach 2

Reduce creation time and simplify fuzzer generation

Fuzzer platform, not framework

Modeling based approach

Fault detection

Lower learning curve

Page 6: Advanced Fuzzing with Peach 2

Modeling Based Fuzzing

Model types and data

Model state machine

Support models with data sets

Mutate models with mutators

Page 7: Advanced Fuzzing with Peach 2

Model Data: Types

INTINT INTINT INTINT FlagsFlags

INTLenINTLen STRINGSTRING

DATADATA

INTLenINTLen

INTINT INTINT INTINT

DATADATA

Page 8: Advanced Fuzzing with Peach 2

Model Data: Relationships

INTINT INTINT INTINT FlagsFlags

INTLenINTLen STRINGSTRING

DATADATA

INTLenINTLen

INTINT INTINT INTINT

DATADATA

Page 9: Advanced Fuzzing with Peach 2

Model Data: State Model

Packet A

Packet A

Packet B-1

Packet B-1

Packet C-1

Packet C-1

Packet C-2

Packet C-2

Packet D

Packet D

Packet B-2

Packet B-2

Page 10: Advanced Fuzzing with Peach 2

Benefits of Modeling

Easy reuse of definitions

Complex mutations can be applied to a model

Improvements to data generation or mutation independent of model

Data read into definition as well as generated

Page 11: Advanced Fuzzing with Peach 2

Data Modeling

Define structure of data

Define relations in data

Reuse definitions

BlockSequenceChoiceStringNumberFlags/FlagBlob

RelationTransformer

Page 12: Advanced Fuzzing with Peach 2

State Modeling

Page 13: Advanced Fuzzing with Peach 2

StreamStream CallCall

TCP, UDP, Files

ConnectAcceptInputOutputClose

COM, RPC, SOAP

Call Method Parameters Result

State Modeling

Page 14: Advanced Fuzzing with Peach 2

State Modeling: Stream

State MachineState Machine

State 1State 1

ConnectConnect

OutputOutput

InputInput

OutputOutput

Change State

Change State

State 2State 2

InputInput

OutputOutput

InputInput

OutputOutput

Change State

Change State

State 3State 3

InputInput

OutputOutput

InputInput

CloseClose

11 22

33

4455

Page 15: Advanced Fuzzing with Peach 2

State Modeling: Stream

State MachineState Machine

State 1State 1

AcceptAccept

OutputOutput

InputInput

OutputOutput

Change State

Change State

State 2State 2

InputInput

OutputOutput

InputInput

OutputOutput

Change State

Change State

State 3State 3

InputInput

OutputOutput

InputInput

CloseClose

11

55

Page 16: Advanced Fuzzing with Peach 2

State Modeling: Stream

State MachineState Machine

State 1State 1

ConnectConnect

OutputOutput

InputInput

CloseClose

Change State

Change State

State 2State 2

ConnectConnect

OutputOutput

InputInput

OutputOutput

Change State

Change State

State 3State 3

InputInput

OutputOutput

InputInput

CloseClose

11

22

33

44

Page 17: Advanced Fuzzing with Peach 2

State Modeling: Call

State MachineState Machine

State 1State 1

StartStart

CallCall

CallCall

Change State

Change State

State 2State 2

CallCall

CallCall

CallCall

StopStop

11

22

33

Page 18: Advanced Fuzzing with Peach 2

Data Mutations

Page 19: Advanced Fuzzing with Peach 2

Mutation: String

“?k1=v+1&k2=v2”

40,000+ variations

Page 20: Advanced Fuzzing with Peach 2

Mutation: Number

00

Interesting Edge Cases

FFFFFFFFFFFFFFFF

Page 21: Advanced Fuzzing with Peach 2

Mutation: Size Relation #1

Length:

Data: 200 Bytes

200

Page 22: Advanced Fuzzing with Peach 2

Mutation: Size Relation #2

Length:

Data: 200 Bytes

200

Page 23: Advanced Fuzzing with Peach 2

Mutation: Size Relation #3

Data & Length:

00 FFFFFFFFFFFFFFFF

Page 24: Advanced Fuzzing with Peach 2

Mutation: State

Packet A

Packet A

Packet B-1

Packet B-1

Packet C-1

Packet C-1

Packet C-2

Packet C-2

Packet D

Packet D

Packet B-2

Packet B-2

Page 25: Advanced Fuzzing with Peach 2

Mutation: State

Packet A

Packet A

Packet B-1

Packet B-1

Packet D

Packet D

Packet B-2

Packet B-2

Page 26: Advanced Fuzzing with Peach 2

Mutation: State

Packet A

Packet A

Packet B-1

Packet B-1

Packet D

Packet D

Packet B-2

Packet B-2

Page 27: Advanced Fuzzing with Peach 2

Add Custom Mutators

Sling some Python

Add additional mutations

Specific mutations

Etc.

Page 28: Advanced Fuzzing with Peach 2

AND DATA COLLECTION

Fault Detection

Page 29: Advanced Fuzzing with Peach 2

Agents & Monitors

Peach

Page 30: Advanced Fuzzing with Peach 2

2 Tier Configuration

Agent 1Agent 1

DebuggerDebugger

TargetTarget

Network CaptureNetwork Capture

Agent 2Agent 2

DebuggerDebugger

BackendBackend

Network CaptureNetwork Capture

PeachPeach

EngineEngine

Agent Manager

Agent Manager

LoggingLogging

11

22 33

44

5566

Page 31: Advanced Fuzzing with Peach 2

Monitors

DebuggersProcess MonitorMemory MonitorNetwork CaptureVM Control (snapshot, revert)Networked Power Strips (cycle power)

Easy to implement custom monitors

Page 32: Advanced Fuzzing with Peach 2

Peach Development

Page 33: Advanced Fuzzing with Peach 2

Documented XML Schema

Page 34: Advanced Fuzzing with Peach 2

Peach Builder

Page 35: Advanced Fuzzing with Peach 2

Peach Shark

Page 36: Advanced Fuzzing with Peach 2

MASSIVELY PARALLEL FUZZING

Peach Farm

Page 37: Advanced Fuzzing with Peach 2

Peach Farm

Adam Cecchetti Massively Parallel Fuzzing

Scales from 1 to 10,000 nodes

Choose your Virtual Platform/Hosting EC2, Xen, VMWare, Etc

Utilizes Map/Reduce Algorithm Map: Maps the fuzzing cases to indexes and results Reduce: Reduces fuzzing results to interesting cases

Metric based : Time, size, diff, expected errors, OS faults, crashes

Page 38: Advanced Fuzzing with Peach 2

WHAT’S NEXT?

Peach in The Middle

Page 39: Advanced Fuzzing with Peach 2

Peach in The Middle

ClientClient ServerServer

PeachPeach

Controller

Controller AgentAgent

Data ModelData Model

Page 40: Advanced Fuzzing with Peach 2

HTTP://PEACHFUZZ.SF.NET

HTTP://PHED.ORG

[email protected]

Q & A