1
0
out-of-tree kernel {module, exploit} development tool
Go to file
2018-12-02 03:10:01 +00:00
config Implements fallback if rootfs image not found 2018-12-01 20:18:43 +00:00
examples Print kernel config skeleton to stdout 2018-11-28 23:53:47 +00:00
qemu Fix typo 2018-12-02 00:11:06 +00:00
snap Snap: stable/classic 2018-12-02 02:55:56 +00:00
tools Remove CentOS and Debian from kernel factory 2018-11-17 13:09:42 +00:00
.gitignore Support snap 2018-12-02 02:26:30 +00:00
.travis.yml Travis-CI: add last stable go 1.x version 2018-12-02 00:53:36 +00:00
bootstrap.config.go Implements bootstrap, fixes #3 2018-12-01 17:34:57 +00:00
bootstrap.go Implements bootstrap, fixes #3 2018-12-01 17:34:57 +00:00
debug.go Move gdb listen address to params 2018-11-25 14:53:56 +00:00
gen.go Implements skeleton module/exploit config generator 2018-11-23 09:11:18 +00:00
kernel.go Allow to force bump docker container 2018-12-01 15:11:43 +00:00
LICENSE Change license to GNU AGPLv3 2018-10-08 20:54:18 +00:00
main.go Check for qemu-system-x86_64 not qemu 2018-12-02 03:10:01 +00:00
pew.go Make executable only if test copied successfully 2018-12-01 20:33:06 +00:00
README.md Update README.md 2018-12-02 05:04:15 +02:00

Build Status Snap Status

out-of-tree

out-of-tree kernel {module, exploit} development tool

Screenshot

Requirements

Qemu, docker and golang is required.

Also do not forget to set GOPATH and PATH e.g.:

$ echo 'export GOPATH=$HOME' >> ~/.bashrc
$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
$ source ~/.bashrc

Gentoo

# emerge app-emulation/qemu app-emulation/docker dev-lang/go

macOS

$ brew install go qemu
$ brew cask install docker

Installation

Get it from the Snap Store

Build from source

$ go get github.com/jollheef/out-of-tree
$ out-of-tree bootstrap

Then you can check it on kernel module example:

$ cd $GOPATH/github.com/jollheef/out-of-tree/examples/kernel-module
$ out-of-tree kernel autogen # generate kernels based on .out-of-tree.toml
$ out-of-tree pew

Examples

Run by absolute path

$ out-of-tree --path /path/to/exploit/directory pew

Test only with one kernel:

$ out-of-tree pew --kernel='Ubuntu:4.10.0-30-generic'

Run debug environment:

$ out-of-tree debug --kernel='Ubuntu:4.10.0-30-generic'

Test binary module/exploit with implicit defined test ($BINARY_test)

$ out-of-tree pew --binary /path/to/exploit

Test binary module/exploit with explicit defined test

$ out-of-tree pew --binary /path/to/exploit --test /path/to/exploit_test

Guess work kernels:

$ out-of-tree pew --guess

Use custom kernels config

$ out-of-tree --kernels /path/to/kernels.toml pew

Generate all kernels

Does not required if you dont need to use --guess.

$ cd $GOPATH/src/github.com/jollheef/out-of-tree/tools/kernel-factory
$ ./bootstrap.sh # more than 6-8 hours for all kernels
$ export OUT_OF_TREE_KCFG=$GOPATH/src/github.com/jollheef/out-of-tree/tools/kernel-factory/output/kernels.toml

Development

Read Qemu API.

Generate images

$ cd $GOPATH/src/github.com/jollheef/out-of-tree/tools/qemu-debian-img/
$ docker run --privileged -v $(pwd):/shared -e IMAGE=/shared/ubuntu1404.img -e RELEASE=trusty -t gen-ubuntu1804-image
$ docker run --privileged -v $(pwd):/shared -e IMAGE=/shared/ubuntu1604.img -e RELEASE=xenial -t gen-ubuntu1804-image