• Stars
    star
    103
  • Rank 333,046 (Top 7 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 10 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Windows NT ioctl bruteforcer and modular fuzzer

DIBF

Windows Driver IOCTL Tool Suite.

DIBF

Dynamic Ioctl Brute-Forcer (and fuzzers)

This tool encompasses two distinct features. It guesses the IOCTL values that the driver accepts and also their valid size limitations and store the results are in a file for future reuse. The second feature is comprised of 3 dumb fuzzers: a pure random fuzzer, a sliding DWORD fuzzer and an asynchronous fuzzer. You can run any combination of the 3 sequentially and can set time limits for each fuzzer run. The sync fuzzers will also warn you if too many requests fail in a row (indicating further fuzzing might be pointless due to lack permission for instance) and the async fuzzer allows you to set the percentage of requests to attempt cancelation on and the concurrency level (how many pending requests at once). Other features include control over the verbosity level and the ability to stop any fuzzer run cleanly with ctrl-c. Upon completion each fuzzer will display cumulative statistics.

Usage

dibf.exe <options> <device name>
Options:
	-h You're looking at it
	-i Ignore previous logfile - THIS WILL OVERWRITE IT
	-l Specify custom logfile name to read from/write to (default dibf-bf-results.txt)
	-d Deep IOCTL bruteforce (8-9 times slower)
	-v [0-3] Verbosity level
	-s [ioctl] Start IOCTL value
	-e [ioctl] End IOCTL value
	-t [d1,d2,d4] Timeout for each fuzzer in seconds -- no spaces and decimal input ONLY
	-p [max requests] Max number of async pending requests (loosely enforced, default 64)
	-a [max threads] Max number of threads, default is 2xNbOfProcessors, max is 128
	-c [% cancelation] Async cancelation attempt percent rate (default 15)
	-f [0-7] Fuzz flag. OR values together to run multiple
			 fuzzer stages. If left out, it defaults to all
      		 stages.
      0 = Brute-force IOCTLs only
      1 = Sliding DWORD (sync)
      2 = Random (async)
      4 = Named Pipe (async)
Examples:
	dibf \\.\MyDevice
	dibf -v -d -s 0x10000000 \\.\MyDevice
	dibf -f 0x3 \\.\MyDevice
Notes:
	- The bruteforce stage will generate a file named "dibf-bf-results.txt"
	  in the same directory as the executable. If dibf is started with no
	  arguments, it will look for this file and start the fuzzer with the values
	  from it The -l flag can be used to specify a custom results file name.
	- If not specified otherwise, command line arguments can be passed as decimal or hex (prefix with "0x")
	- CTRL-C interrupts the current stage and moves to the next if any. Current statistics will be displayed.
	- The statistics are cumulative.
	- The command-line flags are case-insensitive.

Using the Named Pipe fuzzing provider

In order to provide fuzzed packet to the Named Pipe fuzzer, connect to \\.\pipe\dibf_pipe in PIPE_TYPE_MESSAGE mode and send the fuzzed data. The last 4 bytes of the packet will be interpreted as the IOCTL code. Additionally the named pipe peach publisher can be used to fuzz named pipe endpoints outside of DIBF scope.

Connecting to Peach

The provided Peach publisher can be used to connect Peach to the DIBF's Named Pipe Fuzzing Provider. A sample Peach XML file peach_np.xml leveraging this provider can be found under the PeachNamedPipePublisher folder:

<?xml version="1.0" encoding="utf-8"?>
<Peach xmlns="http://peachfuzzer.com/2012/Peach" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://peachfuzzer.com/2012/Peach ../peach.xsd">

    <!-- DataModel containing a single string -->
    <DataModel name="TheDataModel">
        <String value="Hello World!" />
        <Number name="IOCTL0" value="EFBEADDE" valueType="hex" size="32" mutable="false" />
    </DataModel>

    <!-- StateModel referencing data model above -->
    <StateModel name="DibfState" initialState="DibfState0">
        <State name="DibfState0">
            <Action type="output">
                <DataModel ref="TheDataModel"/>
            </Action>
        </State>
    </StateModel>

    <!-- The test with pipe publisher -->
    <Test name="Default">
        <StateModel ref="DibfState"/>
        <Publisher class="NamedPipe">
            <Param name="host" value="." />
            <Param name="pipeName" value="dibf_pipe" />
            <Param name="impersonationLevel" value="1" />
        </Publisher>
    </Test>
</Peach>
<!-- end -->

DIBF Sample Output

<<<< RUNNING RANDOM FUZZER >>>>
RUN STARTED: 3/17/2014 4:14 PM
---------------------------------------
Sent Requests : 4233
Completed Requests : 4233 (4233 sync, 0 async)
SuccessfulRequests : 1254
FailedRequests : 2979
CanceledRequests : 0
RUN ENDED: 3/17/2014 4:14 PM
---------------------------------------

<<<< RUNNING SLIDING DWORD FUZZER >>>>
RUN STARTED: 3/17/2014 4:14 PM
---------------------------------------
Sent Requests : 6339
Completed Requests : 6339 (6339 sync, 0 async)
SuccessfulRequests : 1254
FailedRequests : 5085
CanceledRequests : 0
RUN ENDED: 3/17/2014 4:14 PM
---------------------------------------

<<<< RUNNING ASYNC FUZZER >>>>
RUN STARTED: 3/17/2014 4:14 PM
---------------------------------------
Sent Requests : 8272
Completed Requests : 8272 (6339 sync, 1933 async)
SuccessfulRequests : 1738
FailedRequests : 6414
CanceledRequests : 120
RUN ENDED: 3/17/2014 4:14 PM
---------------------------------------

IOCODE

Simple encoding/decoding utility for IO codes

This very simple tool encodes and decodes windows IOCTL control codes. It provides a user-friendly way to deal with IO encoding of device types, function number, transfer method and access type.

iocode.exe [IOCODE] or iocode.exe [DEVICE_TYPE] [FUNCTION] [METHOD] [ACCESS]

IOSEND

Sending single IOCTL to a driver

This is a tool intended for proofing vulnerabilities and is meant to be used in conjunction with a hex-editor. Once the request of interest has been crafted in it, this utility will send it to the driver using command line parameters. The response gets sent to stdout. Arbitrary addresses can also be used as input and output buffer addresses.

iosend [Device] [IOCODE] [InputBufFilePath|InputAdress] [InputLen] [[OutputAddress]] [OutputLen] > [Output file]
Notes:
 - This utility prints error/status messages to stderr
 - Input can be provided as an arbitrary address or a file name
 - An output buffer is allocated and its contents eventually written to stdout unless the optional OutputAddress parameter is provided

License

GPLv2

More Repositories

1

ScoutSuite

Multi-Cloud Security Auditing Tool
Python
6,664
star
2

Scout2

Security auditing tool for AWS environments
Python
1,728
star
3

sobelow

Security-focused static analysis for the Phoenix Framework
Elixir
1,671
star
4

Winpayloads

Undetectable Windows Payload Generation
Python
1,519
star
5

demiguise

HTA encryption tool for RedTeams
Python
1,326
star
6

house

A runtime mobile application analysis toolkit with a Web GUI, powered by Frida, written in Python.
JavaScript
1,321
star
7

PMapper

A tool for quickly evaluating IAM permissions in AWS.
Python
1,279
star
8

redsnarf

RedSnarf is a pen-testing / red-teaming tool for Windows environments
PowerShell
1,182
star
9

featherduster

An automated, modular cryptanalysis tool; i.e., a Weapon of Math Destruction
Python
1,087
star
10

SocksOverRDP

Socks5/4/4a Proxy support for Remote Desktop Protocol / Terminal Services / Citrix / XenApp / XenDesktop
C++
1,067
star
11

singularity

A DNS rebinding attack framework.
JavaScript
1,018
star
12

exploit_mitigations

Knowledge base of exploit mitigations available across numerous operating systems, architectures and applications and versions.
865
star
13

AutoRepeater

Automated HTTP Request Repeating With Burp Suite
Java
742
star
14

fuzzowski

the Network Protocol Fuzzer that we will want to use.
Python
719
star
15

aws-inventory

Discover resources created in an AWS account.
Python
703
star
16

BurpSuiteHTTPSmuggler

A Burp Suite extension to help pentesters to bypass WAFs or test their effectiveness using a number of techniques
Java
654
star
17

Sniffle

A sniffer for Bluetooth 5 and 4.x LE
C
648
star
18

sadcloud

A tool for standing up (and tearing down!) purposefully insecure cloud infrastructure
HCL
636
star
19

TriforceAFL

AFL/QEMU fuzzing with full-system emulation.
C
624
star
20

nmap-nse-vulnerability-scripts

NMAP Vulnerability Scanning Scripts
Lua
618
star
21

LoggerPlusPlus

Advanced Burp Suite Logging Extension
Java
608
star
22

nccfsas

Information released publicly by NCC Group's Full Spectrum Attack Simulation (FSAS) team.
C
598
star
23

freddy

Automatically identify deserialisation issues in Java and .NET applications by using active and passive scans
Java
572
star
24

phantap

Phantom Tap (PhanTap) - an ‘invisible’ network tap aimed at red teams
C
560
star
25

azucar

Security auditing tool for Azure environments
PowerShell
559
star
26

tracy

A tool designed to assist with finding all sinks and sources of a web application and display these results in a digestible manner.
JavaScript
553
star
27

VCG

VisualCodeGrepper - Code security scanning tool.
Visual Basic .NET
523
star
28

Cyber-Defence

Information released publicly by NCC Group's Cyber Incident Response Team
Python
474
star
29

scrying

A tool for collecting RDP, web and VNC screenshots all in one place
Rust
450
star
30

autochrome

This tool downloads, installs, and configures a shiny new copy of Chromium.
HTML
431
star
31

wssip

Application for capturing, modifying and sending custom WebSocket data from client to server and vice versa.
JavaScript
425
star
32

blackboxprotobuf

Blackbox protobuf is a Burp Suite extension for decoding and modifying arbitrary protobuf messages without the protobuf type definition.
Python
380
star
33

idahunt

idahunt is a framework to analyze binaries with IDA Pro and hunt for things in IDA Pro
Python
376
star
34

autopwn

Specify targets and run sets of tools against them
Python
376
star
35

CrossSiteContentHijacking

Content hijacking proof-of-concept using Flash, PDF and Silverlight
HTML
372
star
36

Solitude

Solitude is a privacy analysis tool that enables anyone to conduct their own privacy investigations. Whether a curious novice or a more advanced researcher, Solitude makes the process of evaluating user privacy within an app accessible for everyone.
CSS
370
star
37

vlan-hopping---frogger

Easy 802.1Q VLAN Hopping
Shell
346
star
38

shocker

A tool to find and exploit servers vulnerable to Shellshock
Python
333
star
39

DriverBuddy

DriverBuddy is an IDA Python script to assist with the reverse engineering of Windows kernel drivers.
Python
331
star
40

WMIcmd

A command shell wrapper using only WMI for Microsoft Windows
C#
319
star
41

acCOMplice

Tools for discovery and abuse of COM hijacks
PowerShell
272
star
42

SusanRTTI

Another RTTI Parsing IDA plugin
Python
269
star
43

umap

The USB host security assessment tool
Python
265
star
44

metasploitavevasion

Metasploit AV Evasion Tool
Shell
257
star
45

keimpx

Check for valid credentials across a network over SMB
Python
256
star
46

umap2

Umap2 is the second revision of NCC Group's python based USB host security assessment tool.
Python
250
star
47

depthcharge

A U-Boot hacking toolkit for security researchers and tinkerers
Python
245
star
48

UPnP-Pentest-Toolkit

UPnP Pentest Toolkit for Windows
C#
244
star
49

GTFOBLookup

Offline command line lookup utility for GTFOBins (https://github.com/GTFOBins/GTFOBins.github.io), LOLBAS (https://github.com/LOLBAS-Project/LOLBAS), WADComs (https://wadcoms.github.io), and HijackLibs (https://hijacklibs.net/).
Python
238
star
50

G-Scout

Google Cloud Platform Security Tool
Python
232
star
51

asatools

Main repository to pull all NCC Group Cisco ASA-related tool projects.
Shell
224
star
52

cisco-SNMP-enumeration

Automated Cisco SNMP Enumeration, Brute Force, Configuration Download and Password Cracking
Shell
216
star
53

thetick

A simple embedded Linux backdoor.
Python
195
star
54

AWS-recipes

A number of Recipes for AWS
Python
195
star
55

kube-auto-analyzer

Kubernetes Auto Analyzer
HTML
192
star
56

TPMGenie

TPM Genie is an I2C bus interposer for discrete Trusted Platform Modules
C++
189
star
57

BinProxy

BinProxy is a proxy for arbitrary TCP connections. You can define custom message formats using the BinData gem.
Ruby
172
star
58

TriforceLinuxSyscallFuzzer

A linux system call fuzzer using TriforceAFL
C
170
star
59

DetectWindowsCopyOnWriteForAPI

Enumerate various traits from Windows processes as an aid to threat hunting
C++
168
star
60

pybeacon

A collection of scripts for dealing with Cobalt Strike beacons in Python
Python
167
star
61

BKScan

BlueKeep scanner supporting NLA
Shell
167
star
62

typofinder

A finder of domain typos showing country of IP address
Python
166
star
63

BLESuite

BLESuite is a Python package that provides an easier way to test Bluetooth Low Energy (BLE) device
Python
165
star
64

SteppingStones

A Red Team Activity Hub
Python
162
star
65

libslub

Python
161
star
66

tcpprox

A small command-line TCP proxy utility written in Python
Python
156
star
67

requests-racer

Small Python library that makes it easy to exploit race conditions in web apps with Requests.
Python
152
star
68

LazyDroid

bash script to facilitate some aspects of an Android application assessment
Shell
151
star
69

chuckle

An automated SMB relay exploitation script.
Shell
151
star
70

whalescan

Whalescan is a vulnerability scanner for Windows containers, which performs several benchmark checks, as well as checking for CVEs/vulnerable packages on the container
Python
143
star
71

gitpwnd

GitPwnd is a network penetration tool that lets you use a git repo for command and control of compromised machines
Python
139
star
72

Carnivore

Tool for assessing on-premises Microsoft servers authentication such as ADFS, Skype, Exchange, and RDWeb
C#
139
star
73

CollaboratorPlusPlus

Java
139
star
74

Change-Lockscreen

Offensive tool to trigger network authentications as SYSTEM
C#
138
star
75

Decoder-Improved

Improved decoder for Burp Suite
Java
134
star
76

OutlookLeakTest

The Outlook HTML Leak Test Project
C#
131
star
77

Wubes

Qubes containerization on Windows
Python
130
star
78

port-scan-automation

Automate NMAP Scans and Generate Custom Nessus Policies Automatically
Shell
128
star
79

Hodor

Hodor! Fuzzer..
Python
126
star
80

Zulu

The Zulu fuzzer
Python
125
star
81

WinShareEnum

Windows Share Enumerator
C#
121
star
82

memscan

Searches for strings, regex, credit card numbers of magnetic stripe card tracks in a Windows process's memory space
C#
120
star
83

ebpf

eBPF - extended Berkeley Packet Filter tooling
Python
120
star
84

argumentinjectionhammer

A Burp Extension designed to identify argument injection vulnerabilities.
Python
118
star
85

cq

Python
115
star
86

DroppedConnection

Python
113
star
87

SCOMDecrypt

SCOMDecrypt is a tool to decrypt stored RunAs credentials from SCOM servers
C#
112
star
88

GOATCasino

This is an intentionally vulnerable smart contract truffle deployment aimed at allowing those interested in smart contract security to exploit a wide variety of issues in a safe environment.
JavaScript
112
star
89

OneLogicalMyth_Shell

A HTA shell to assist with breakout assessments.
HTML
112
star
90

BLE-Replay

BLE-Replay is a Bluetooth Low Energy (BLE) peripheral assessment tool
Python
110
star
91

cloud_ip_ranges

Identify IP addresses owned by public cloud providers
Python
109
star
92

web3-decoder

Python
108
star
93

ccs

Python
107
star
94

WindowsDACLEnumProject

A collection of tools to enumerate and analyse Windows DACLs
C++
105
star
95

raccoon

Salesforce object access auditor
Python
104
star
96

go-pillage-registries

Pentester-focused Docker registry tool to enumerate and pull images
Go
103
star
97

DatajackProxy

Datajack Proxy allows you to intercept TLS traffic in native x86 applications across platforms
JavaScript
100
star
98

pcap-burp

Pcap importer for Burp
Java
100
star
99

jwt-reauth

Java
100
star
100

Berserko

Burp Suite extension to perform Kerberos authentication
Java
99
star