• Stars
    star
    1,612
  • Rank 27,910 (Top 0.6 %)
  • Language
    OCaml
  • Created almost 7 years ago
  • Updated 3 months ago

Reviews

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

Repository Details

Binary code static analyser, with IDA integration. Performs value and taint analysis, type reconstruction, use-after-free and double-free detection

Introduction

What is BinCAT?

BinCAT is a static Binary Code Analysis Toolkit, designed to help reverse engineers, directly from IDA or using Python for automation.

It features:

  • value analysis (registers and memory)
  • taint analysis
  • type reconstruction and propagation
  • backward and forward analysis
  • use-after-free and double-free detection

In action

You can check (an older version of) BinCAT in action here:

Check the tutorial out to see the corresponding tasks.

Quick FAQ

Supported host platforms:

  • IDA plugin: all, version 7.4 or later (Only Python 3 is supported)
  • analyzer (local or remote): Linux, Windows, macOS (maybe)

Supported CPU for analysis (for now):

  • x86-32
  • x86-64
  • ARMv7
  • ARMv8
  • PowerPC

Installation

Only IDA v7.4 or later is supported

Older versions may work, but we won't support them.

Binary distribution install (recommended)

The binary distribution includes everything needed:

  • the analyzer
  • the IDA plugin

Install steps:

  • Extract the binary distribution of BinCAT (not the git repo)
  • In IDA, click on "File -> Script File..." menu (or type ALT-F7)
  • Select install_plugin.py
  • BinCAT is now installed in your IDA user dir
  • Restart IDA

Manual installation

Analyzer

The analyzer can be used locally or through a Web service.

On Linux:

On Windows:

IDA Plugin

BinCAT should work with IDA on Wine, once pip is installed:

Using BinCAT

Quick start

  • Load the plugin by using the Ctrl-Shift-B shortcut, or using the Edit -> Plugins -> BinCAT menu

  • Go to the instruction where you want to start the analysis

  • Select the BinCAT Configuration pane, click <-- Current to define the start address

  • Launch the analysis

Configuration

Global options can be configured through the Edit/BinCAT/Options menu.

Default config and options are stored in $IDAUSR/idabincat/conf.

Options

  • "Use remote bincat": select if you are running docker in a Docker container
  • "Remote URL": http://localhost:5000 (or the URL of a remote BinCAT server)
  • "Autostart": autoload BinCAT at IDA startup
  • "Save to IDB": default state for the save to idb checkbox

Documentation

A manual is provided and check here for a description of the configuration file format.

A tutorial is provided to help you try BinCAT's features.

Article and presentations about BinCAT

Licenses

BinCAT is released under the GNU Affero General Public Licence.

The BinCAT OCaml code includes code from the original Ocaml runtime, released under the LGPLv2.

The BinCAT IDA plugin includes code from python-pyqt5-hexview by Willi Ballenthin, released under the Apache License 2.0.

BinCAT includes a modified copy of newspeak.

Automated builds

Windows

Automated builds are performed automatically (see azure-pipelines.yml). The latest builds and test results can be accessed here

Linux

Automated builds are performed automatically using GitHub Actions (see here), results can be obtained on GitHub's Actions tab.

More Repositories

1

qemu_blog

A series of posts about QEMU internals:
1,286
star
2

cpu_rec

Recognize cpu instructions in an arbitrary binary file
Python
610
star
3

ilo4_toolbox

Toolbox for HPE iLO4 & iLO5 analysis
Python
404
star
4

warbirdvm

An analysis of the Warbird virtual-machine protection for the CI!g_pStore
Ruby
203
star
5

diffware

An extensively configurable tool providing a summary of the changes between two files or directories, ignoring all the fluff you don't care about.
Python
196
star
6

gustave

GUSTAVE is a fuzzing platform for embedded OS kernels. It is based on QEMU and AFL (and all of its forkserver siblings). It allows to fuzz OS kernels like simple applications.
Python
195
star
7

powersap

Powershell SAP assessment tool
PowerShell
186
star
8

crashos

A tool dedicated to the research of vulnerabilities in hypervisors by creating unusual system configurations.
C
181
star
9

ramooflax

a bare metal (type 1) VMM (hypervisor) with a python remote control API
C
178
star
10

c-compiler-security

Security-related flags and options for C compilers
Python
168
star
11

bta

Open source Active Directory security audit framework.
Python
128
star
12

android_emuroot

Android_Emuroot is a Python script that allows granting root privileges on the fly to shells running on Android virtual machines that use google-provided emulator images called Google API Playstore, to help reverse engineers to go deeper into their investigations.
Python
116
star
13

AutoResolv

Python
71
star
14

elfesteem

ELF/PE/Mach-O parsing library
Python
48
star
15

GEA1_break

Implementation of the key recovery attack against GEA-1 keys (Eurocrypt 2021)
C
47
star
16

airbus-seclab.github.io

Conferences, tools, papers, etc.
43
star
17

AFLplusplus-blogpost

Blogpost about optimizing binary-only fuzzing with AFL++
Shell
34
star
18

nbutools

Tools for offensive security of NetBackup infrastructures
Python
30
star
19

rebus

REbus facilitates the coupling of existing tools that perform specific tasks, where one's output will be used as the input of others.
Python
25
star
20

usbq_core

USB man in the middle linux kernel driver
C
19
star
21

AppVsWild

application process protection hypervisor virtualization encryption
9
star
22

gunpack

Generic unpacker (dynamic)
C
8
star
23

usbq_userland

User land program to be used with usbq_core
Python
8
star
24

ramooflax_scripts

ramooflax python scripts
Python
6
star
25

cpu_doc

Curated set of documents about CPU
3
star
26

c2newspeak

C
3
star
27

rebus_demo

REbus demo agents
Python
2
star
28

security-advisories

2
star
29

pwnvasive

semi-automatic discovery and lateralization
Python
1
star
30

afl

Airbus seclab fork of AFL
C
1
star
31

pok

forked from pok-kernel/pok
C
1
star