Who am I? NCC Group Research Director >20 years in information - - PowerPoint PPT Presentation

who am i
SMART_READER_LITE
LIVE PREVIEW

Who am I? NCC Group Research Director >20 years in information - - PowerPoint PPT Presentation

Who am I? NCC Group Research Director >20 years in information security Still very hands-on Enjoy testing more unusual technologies Also developing tools to test them What is Zulu? Zulu is an interactive GUI-based fuzzer


slide-1
SLIDE 1
slide-2
SLIDE 2

Who am I?

  • NCC Group Research Director
  • >20 years in information security
  • Still very hands-on
  • Enjoy testing more unusual technologies
  • Also developing tools to test them
slide-3
SLIDE 3

What is Zulu?

  • Zulu is an interactive GUI-based fuzzer
  • Written in Python
  • As much as possible, input and output-agnostic
  • Multiple modules
  • Extendible via ZuluScript
slide-4
SLIDE 4

Motivations behind the tool

  • I had lots of unique “fuzzer scripts”
  • Fuzzing frameworks have a steep learning curve
  • Fuzzers should be quick and easy to setup
  • Wanted a point-and-click solution
  • Needed to be scriptable to add complexity where

required

slide-5
SLIDE 5

Zulu basics – the GUI

slide-6
SLIDE 6

Zulu basics – typical data

slide-7
SLIDE 7

Zulu basics – the console

slide-8
SLIDE 8

File structure

  • /bin - Zulu binaries and custom.py (ZuluScript Python)
  • /crashfiles - When file fuzzing, files that have caused the target to

crash

  • /fuzzdb - the fuzzer testcase files
  • /images - images used by the GUI
  • /logs - log files
  • /pcap - when Wireshark integration is enabled, auto-generated PCAP

files

  • /PoC - when a crash occurs a PoC is auto-generated
  • /sessions - configuration options and captured packets
  • /tempfiles - when file fuzzing, temp manipulated files are stored here
  • /templates - the template used to generate the PoC files is in here
slide-9
SLIDE 9

Proxy-based network module

slide-10
SLIDE 10

Configure the proxy

slide-11
SLIDE 11

Use the standard network client

slide-12
SLIDE 12

Select some fuzz points

slide-13
SLIDE 13

Select mutators

slide-14
SLIDE 14

Select output method

slide-15
SLIDE 15

Start fuzzing

slide-16
SLIDE 16

Instrumentation and triage

slide-17
SLIDE 17

Other inputs: PCAP files

slide-18
SLIDE 18

Wireshark captures

slide-19
SLIDE 19

Importing a PCAP

slide-20
SLIDE 20

File module

slide-21
SLIDE 21

Select input file

slide-22
SLIDE 22

Select file fuzzer + fuzz process

slide-23
SLIDE 23

Fuzz process + debugging

slide-24
SLIDE 24

USB module

slide-25
SLIDE 25

Graphic USB

slide-26
SLIDE 26

Import generator script

slide-27
SLIDE 27

Select USB fuzzer

slide-28
SLIDE 28

Fuzzer running

slide-29
SLIDE 29

Serial module

slide-30
SLIDE 30

Serial settings

slide-31
SLIDE 31

Serial data capture

slide-32
SLIDE 32

Serial fuzzing

slide-33
SLIDE 33

Wireshark integration

slide-34
SLIDE 34

Point to Wireshark binary

slide-35
SLIDE 35

Auto-load Wireshark

slide-36
SLIDE 36

VMware integration

slide-37
SLIDE 37

Select file fuzzer + fuzz process

slide-38
SLIDE 38

GUI-power

slide-39
SLIDE 39

Adding a length field

slide-40
SLIDE 40

No need to watch! Email alerts

slide-41
SLIDE 41

Select email settings

slide-42
SLIDE 42

Advanced features - ZuluScript

slide-43
SLIDE 43

Using ZuluScript

  • How do you modify a packet after the mutator but before being

processed by the target?

  • The answer is by using ZuluScript
  • Python script stored in a special file (/bin/custom.py)
  • Includes a sample UpdateContentLengthField() function
slide-44
SLIDE 44

Access to data

  • self.packets_selected_to_send = list of packets selected to

send [[packet number, data],[packet number, data]...]

  • self.all_packets_captured = list of all packets captured

[[[source IP,source port],data], [[source IP,source port],data]...]

  • self.modified_data = list of all the data in the current packet

(after any modification with fuzzpoint data) [byte1, byte2, byte3...]

  • self.current_packet_number = the number of the current

packet being processed (packet 0 is the first packet)

slide-45
SLIDE 45

Bugs that Zulu has found

  • Samba 'AndX' request remote heap overflow (CVE-2012-0870)
  • Oracle 11g TNS listener remote null pointer dereference
  • Apple OS X USB Hub Descriptor bNbrPorts Field Handling

Memory Corruption

  • …and many others that haven’t been fixed yet
slide-46
SLIDE 46

Zulu is available on Github

Zulu can be downloaded today at: https://github.com/nccgroup/zulu

slide-47
SLIDE 47