Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

878 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ctf-tools

This is a Nix flake packaging various security research tools. Of course, this isn't a hard problem, but it's really nice to have them in one place that's easily deployable to new machines and so forth. The packages are checked every once in a while, so things should hopefully have a decent chance of working!

The following tools are included. The first table lists tools packaged in this repo (under nix/pkgs/); the second lists tools taken from nixpkgs.

NIX??????

Long-time ctf-tools users might be surprised by this development, but it is a good development. Nix provides isolated packaging and can be deployed into a dev/hack environment, locally into a user's home directory, or globally system/container-wide. It also happily installs alongside your normal OS and package manager (e.g., ubuntu and apt) with zero interference. Trust me, I was as skeptical as you are for years, but it is the way.

Packaged in this repo

Category Tool Description
binary angr Next-generation binary analysis engine from Shellphish.
binary angr-management A GUI reverse engineering and decompilation tool.
binary beef Last Build Browser exploitation framework.
binary crosstool Last Build Cross-compilers and cross-architecture tools.
binary cross2 A set of cross-compilation tools from a Japanese book on C.
binary decomp2dbg Last Build A plugin to introduce interactive symbols into your debugger from your decompiler.
binary elfparser Last Build Multiplatform CLI and GUI tool to show information about ELF files.
binary evilize Last Build Tool to create MD5 colliding binaries
binary ida Decompilation and reversing tool (proprietary: you download it yourself — drop the Hex-Rays tarball in ~/Downloads, or set IDA_HOME to an unpacked install).
binary ida-pro-mcp MCP server that drives IDA Pro (headless via idalib, or attached to a running IDA; set up with ida --activate-idalib).
binary manticore Last Build Manticore is a prototyping tool for dynamic binary analysis, with support for symbolic execution, taint analysis, and binary instrumentation.
binary preeny Last Build A collection of helpful preloads (compiled for 64- and 32-bit x86).
binary pwndbg Last Build Enhanced environment for gdb. Especially for pwning.
binary pwnsh Last Build Useful shell scripts for assembly, exploitation, etc.
binary qiling A dynamic binary instrumentation framework. Entry point is qltool.
binary qira Last Build Parallel, timeless debugger.
binary shellnoob Last Build Shellcode writing helper.
binary taintgrind Last Build A valgrind taint analysis tool. Builds and runs, but upstream's IR translator aborts on many binaries (tnt_translate: expr2vbits_Unop).
binary villoc Last Build Visualization of heap operations.
binary xrop Last Build Gadget finder.
forensics firmware-mod-kit Last Build Tools for firmware packing/unpacking.
forensics peepdf Last Build Powerful Python tool to analyze PDF documents.
forensics scrdec18 Last Build A decoder for encoded Windows Scripts.
forensics volatility Last Build Analyzer for system memory dumps (classic python2 version; requires python2 tool).
crypto codext Last Build Python codecs extension featuring CLI tools for encoding/decoding anything including AI-based guessing mode.
crypto cribdrag Last Build Interactive crib dragging tool (for crypto).
crypto fastcoll Last Build An md5sum collision generator.
crypto foresight Last Build A tool for predicting the output of random number generators. To run, launch "foresee".
crypto featherduster Last Build An automated, modular cryptanalysis tool. WARNING: needs python2 (which can be installed with ctf-tools).
crypto galois Last Build A fast galois field arithmetic library/toolkit.
crypto hashpump-partialhash Hashpump, supporting partially-unknown hashes.
crypto libc-database Last Build Build a database of libc offsets to simplify exploitation. Ships the scripts only: run libc-database-get all once to populate the database.
crypto nonce-disrespect Last Build Nonce-Disrespecting Adversaries: Practical Forgery Attacks on GCM in TLS.
crypto pemcrack Last Build SSL PEM file cracker.
crypto reveng Last Build CRC finder.
crypto rsactftool Last Build RSA attack tool.
crypto ssh_decoder Last Build A tool for decoding ssh traffic. You will need ruby1.8 from https://launchpad.net/~brightbox/+archive/ubuntu/ruby-ng to run this. Run with ssh_decoder --help for help, as running it with no arguments causes it to crash.
crypto yafu Last Build Automated integer factorization.
web burpsuite Web proxy to do naughty web stuff.
web subbrute Last Build A DNS meta-query spider that enumerates DNS records, and subdomains.
web webgrep Last Build grep for Web pages, with JS deobfuscation, CSS unminifying and OCR on images.
stego steganabara Last Build Another image stenography solver.
stego stegano-tools Last Build A collection of text and image steganography tools (incl LSB, PVD, PIT).
stego stegdetect Last Build Stenography detection/breaking tool.
stego stegosaurus Last Build A steganography tool for embedding arbitrary payloads in Python bytecode (pyc or pyo) files.
misc jdgui Last Build Java decompiler.
misc python2 Last Build For when you really need it...
misc social-analyzer Last Build Social media reconnaissance tool...
misc veles Last Build Binary data analysis and visualization tool.
misc xspy Last Build Tiny tool to spy on X sessions.
game df Last Build Dwarf Fortress! Something to help you relax after a CTF!

From nixpkgs

Category Tool Description
binary elfkickers A set of utilities for working with ELF files.
binary gdb Up-to-date gdb with python2 bindings.
binary gef Enhanced environment for gdb.
binary ghidra Open-source reverse engineering and decompilation tool.
binary honggfuzz A general-purpose, easy-to-use fuzzer with interesting analysis options.
binary one_gadget Magic gadget search for libc.
binary pwninit Script to automate starting pwning challenges.
binary pwntools Useful CTF utilities.
binary qemu Latest version of qemu!
binary rappel A linux-based assembly REPL.
binary ropper Another gadget finder.
binary rp++ Another gadget finder.
binary seccomp-tools Provides powerful tools for seccomp analysis
binary valgrind A Dynamic Binary Instrumentation framework with some built-in tools.
forensics pdf-parser Tool for digging in PDF files
forensics volatility3 Analyzer for system memory dumps (latest version).
crypto hash-identifier Simple hash algorithm identifier.
crypto msieve Msieve is a C library implementing a suite of algorithms to factor large integers.
crypto pkcrack PkZip encryption cracker.
crypto sslsplit SSL/TLS MITM.
crypto xortool XOR analysis tool.
web commix Command injection and exploitation tool.
web mitmproxy CLI Web proxy and python library.
stego stegsolve Image stenography solver.
stego zsteg detect stegano-hidden data in PNG & BMP.
web tor-browser Useful when you need to hit a web challenge from different IPs.

Usage

Every tool is a flake output. To use, do:

# install a tool into your Nix profile
nix profile install github:zardus/ctf-tools#gdb

# run a tool without installing it
nix run github:zardus/ctf-tools#ropper

# run a shell with a tool in it
nix shell github:zardus/ctf-tools#ropper

# list every available tool
nix flake show github:zardus/ctf-tools

A bin/manage-tools wrapper around nix profile is also provided, for the familiar CLI:

# (once) configure Nix + the binary cache
/path/to/ctf-tools/bin/manage-tools setup

manage-tools list                 # list the available tools
manage-tools install pwntools
manage-tools uninstall gdb
manage-tools search preload

Tools install into your Nix profile, and uninstalling removes them cleanly.

Cross-compiler toolchains (cross2, crosstool)

Two of the tools are toolchain builders rather than single programs, so they expose one output per target instead of one output overall. Install only the target you need — each is an independent package.

crosstool is the crosstool-NG ct-ng driver, and only the driver — unlike the old shell tool, it puts no cross compilers on your PATH. Installing crosstool gives you ct-ng itself, ready to build your own toolchain from a config:

nix profile install github:zardus/ctf-tools#crosstool
ct-ng list-samples

The compilers themselves are separate outputs: 77 of crosstool-NG's 146 samples are prebuilt as crosstool-ng-<sample>, so you can install a ready-made toolchain (say, arm-none-eabi-gcc) instead of spending an hour building one:

# a bare-metal ARM toolchain: arm-none-eabi-gcc, -gdb, -objdump, ...
nix profile install github:zardus/ctf-tools#crosstool-ng-arm-none-eabi

# a full Linux/glibc cross toolchain, with sysroot
nix profile install github:zardus/ctf-tools#crosstool-ng-aarch64-unknown-linux-musl

# see all of them (bare-metal newlib/picolibc plus Linux
# glibc/uClibc/musl, and the mingw-w64 Windows targets)
nix flake show github:zardus/ctf-tools | grep crosstool-ng-

The sample name is the crosstool-NG sample id with any character outside [a-zA-Z0-9_-] replaced by - (so x86_64-ubuntu16.04-linux-gnu becomes crosstool-ng-x86_64-ubuntu16-04-linux-gnu).

The other 69 samples that ct-ng list-samples prints have no crosstool-ng-* output — build them yourself with ct-ng <sample> && ct-ng build, or pin one as a flake output by running nix/pkgs/crosstool/pin-samples.sh and folding the hash it prints into nix/pkgs/crosstool/hashes.nix (anything in there is surfaced automatically).

cross2 is the companion toolchain set for the kozos.jp assembly book — binutils 2.21.1 + gcc 3.4.6 + newlib 1.20.0 (+ gdb 7.3.1 where it still builds, or just its CPU simulator, <target>-run, where it does not), for 34 mostly-retro bare-metal targets. Installing cross2 gives you the book's six "major architecture" toolchains (arm, h8300, i386, mips, powerpc, sh); the other targets are individual cross2-<target> outputs:

# the major-architecture bundle
nix profile install github:zardus/ctf-tools#cross2

# or just one target, e.g. mmix or vax
nix profile install github:zardus/ctf-tools#cross2-mmix-elf
nix profile install github:zardus/ctf-tools#cross2-vax-netbsdelf

These are large, from-source gcc builds, so install them with the binary cache configured — otherwise Nix will build the whole toolchain locally (tens of minutes to hours each).

Help!

Something not working? I didn't write (almost) any of these tools, but hit up the discord if you're desperate. Maybe some kind soul will help!

Binary cache

CI builds the tools packaged in this repo and pushes them to a public Cachix cache, so installs download prebuilt binaries instead of compiling. Trusted Nix users pick this up automatically from the flake's nixConfig; otherwise run cachix use ctftools once (or pass --accept-flake-config).

Dockerized Tools

You can get the tools packaged in this repo in prebuilt containers from dockerhub. For example:

$ echo hi | docker run -i ctftools/taintgrind taintgrind --taint-stdin=yes /bin/cat

The images are generated by CI, which installs the tool into a nixos/nix base with nix profile install.

Adding Tools

To add a tool (say, named toolname):

  1. If it is already in nixpkgs, add a line to nix/passthrough.nix.
  2. Otherwise, create nix/pkgs/toolname/default.nix — a callPackage-style derivation with its sources pinned by hash — and build it with nix build .#toolname.
  3. Add it to the README.

The flake discovers nix/pkgs/* automatically; the output name is the directory name.

License

The individual tools are all licensed under their own licenses. As for ctf-tools itself, it is licensed under BSD 2-Clause License. If you find it useful, star it on GitHub (https://github.com/zardus/ctf-tools).

Good luck!

See Also

There's a curated list of CTF tools, but without installers, here: https://github.com/apsdehal/aWEsoMe-cTf.

There's a Vagrant config with a lot of the bigger frameworks here: https://github.com/thebarbershopper/epictreasure.

Useful CTF tools in apt repos

As tools get officially packaged, we switch to just suggesting that you apt install them!

Category Source Tool Description
binary apt aflplusplus State-of-the-art fuzzer.
binary apt checksec Check binary hardening settings.
binary apt radare2 Some crazy thing crowell likes.
binary apt rr Record and Replay Debugging Framework
binary apt wcc The Witchcraft Compiler Collection is a collection of compilation tools to perform binary black magic on the GNU/Linux and other POSIX platforms.
forensics apt binwalk Firmware (and arbitrary file) analysis tool.
forensics apt foremost File carver.
forensics apt dislocker Tool for reading Bitlocker encrypted partitions.
forensics apt origami-pdf PDF manipulator.
forensics apt testdisk Testdisk and photorec for file recovery.
web apt dirb Web path scanner.
web apt dirsearch Web path scanner.
web apt sqlmap SQL injection automation engine.
stego apt pngtools PNG's analysis tool.
stego apt sonic-visualizer Audio file visualization.
networking apt dsniff Grabs passwords and other data from pcaps/network streams.
networking apt bettercap Network shenanigans swiss army knife.
misc apt z3 Theorem prover from Microsoft Research.
osint apt sherlock Tools for Hunt down social media accounts by username across 400+ social networks .

Useful CTF tools in docker images

Previously, this repository included some scripts that were wrappers around docker pull. We trust that you can do that yourself :-)

Category Source Tool Description
binary docker panda Platform for Architecture-Neutral Dynamic Analysis.
stego Docker stego-toolkit A docker image with dozens of steg tools.

Useful CTF Libraries

Previously, this repository included library installers. Because of how bespoke library install preferences are (e.g., unlike a tool, it's not clear if per-library venvs are a desired thing), we've stopped shipping them, and link them here for posterity.

Category Source Tool Description
binary Library capstone Multi-architecture disassembly framework.
binary Library keystone Lightweight multi-architecture assembler framework.
binary Library lief Library to Instrument Executable Formats.
binary Library miasm Reverse engineering framework in Python.
binary Library unicorn Multi-architecture CPU emulator framework.
binary Library virtualsocket A nice library to interact with binaries.
crypto Library cryptanalib3 The surviving core of featherduster cryptanalysis tool, updated for python3.
crypto Library python-paddingoracle Padding oracle attack automation.

About

Some setup scripts for security research tools.

Resources

Stars

9.5k stars

Watchers

281 watching

Forks

Releases

Packages

Used by

Contributors

Languages