1
0
out-of-tree kernel {module, exploit} development tool
Go to file
2019-08-20 22:55:56 +00:00
config Implements KPTI flag 2019-08-20 00:05:19 +00:00
docs Remove bootstrap, download images on-demand 2019-08-20 09:09:38 +00:00
examples Support CentOS kernels 2019-08-20 18:58:08 +00:00
qemu Implements KPTI flag 2019-08-20 00:05:19 +00:00
tools Support CentOS kernels 2019-08-20 18:58:08 +00:00
.gitignore Remove snap support 2018-12-02 15:33:13 +00:00
.travis.yml Travis-CI: xenial -> bionic 2019-08-18 11:33:58 +00:00
CHANGELOG.md Update changelog 2019-08-20 21:58:42 +00:00
db.go Refactor [2] 2019-08-17 09:05:06 +00:00
debug.go Implements KPTI flag 2019-08-20 00:05:19 +00:00
gen.go Move upstream to code.dumpstack.io 2019-02-02 21:25:09 +00:00
go.mod Generate markdown table statistics for tag 2019-08-16 20:11:35 +00:00
go.sum Generate markdown table statistics for tag 2019-08-16 20:11:35 +00:00
images.config.go Remove bootstrap, download images on-demand 2019-08-20 09:09:38 +00:00
images.go Remove bootstrap, download images on-demand 2019-08-20 09:09:38 +00:00
kernel.go Support CentOS kernels 2019-08-20 18:58:08 +00:00
LICENSE Change license to GNU AGPLv3 2018-10-08 20:54:18 +00:00
log.go Refactor 2019-08-17 08:51:42 +00:00
main.go Set version 2019-08-20 22:55:56 +00:00
pack.go Remove bootstrap, download images on-demand 2019-08-20 09:09:38 +00:00
pew_test.go Use go timers for kill docker by timeout, fixes #12 2018-12-08 02:53:29 +00:00
pew.go Make variable names more toml-friendly 2019-08-19 19:03:59 +00:00
README.md Troubleshooting 2019-08-20 21:55:40 +00:00

Codacy Badge Build Status Go Report Card Documentation Status Donate Donate

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

Fedora

$ sudo dnf install go qemu moby-engine

Also check out docker post-installation steps.

Build from source

$ go get -u code.dumpstack.io/tools/out-of-tree

Then you can check it on kernel module example:

$ cd $GOPATH/src/code.dumpstack.io/tools/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

$ out-of-tree kernel genall --distro Ubuntu --ver 16.04

Troubleshooting

If anything happens that you cannot solve -- just remove $HOME/.out-of-tree.

But it'll be better if you'll write the bug report.

Development

Read Qemu API.

Generate images

$ cd $GOPATH/src/code.dumpstack.io/tools/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