2019-06-20 10:11:30 +00:00
|
|
|
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/aba4aad2046b4d1a9a99cf98e22c018b)](https://app.codacy.com/app/jollheef/out-of-tree?utm_source=github.com&utm_medium=referral&utm_content=jollheef/out-of-tree&utm_campaign=Badge_Grade_Dashboard)
|
2018-12-02 02:29:58 +00:00
|
|
|
[![Build Status](https://travis-ci.org/jollheef/out-of-tree.svg?branch=master)](https://travis-ci.org/jollheef/out-of-tree)
|
2019-02-02 21:24:29 +00:00
|
|
|
[![Go Report Card](https://goreportcard.com/badge/code.dumpstack.io/tools/out-of-tree)](https://goreportcard.com/report/code.dumpstack.io/tools/out-of-tree)
|
2019-08-16 20:51:45 +00:00
|
|
|
[![Documentation Status](https://readthedocs.org/projects/out-of-tree/badge/?version=latest)](https://out-of-tree.readthedocs.io/en/latest/?badge=latest)
|
2019-08-18 18:00:29 +00:00
|
|
|
[![Donate](https://img.shields.io/badge/donate-paypal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R8W2UQPZ5X5JE&source=url)
|
|
|
|
[![Donate](https://img.shields.io/badge/donate-bitcoin-green.svg)](https://blockchair.com/bitcoin/address/bc1q23fyuq7kmngrgqgp6yq9hk8a5q460f39m8nv87)
|
2018-10-05 07:47:49 +00:00
|
|
|
|
2018-12-02 02:29:58 +00:00
|
|
|
# [out-of-tree](https://out-of-tree.io)
|
2018-12-02 00:27:07 +00:00
|
|
|
|
2018-10-05 07:47:49 +00:00
|
|
|
out-of-tree kernel {module, exploit} development tool
|
|
|
|
|
2018-11-19 19:39:03 +00:00
|
|
|
![Screenshot](https://cloudflare-ipfs.com/ipfs/Qmb88fgdDjbWkxz91sWsgmoZZNfVThnCtj37u3mF2s3T3T)
|
2018-10-08 19:35:54 +00:00
|
|
|
|
2018-12-01 17:58:16 +00:00
|
|
|
## Requirements
|
|
|
|
|
|
|
|
[Qemu](https://www.qemu.org), [docker](https://docker.com) and [golang](https://golang.org) is required.
|
|
|
|
|
2018-12-01 18:15:34 +00:00
|
|
|
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
|
|
|
|
|
2018-12-01 17:58:16 +00:00
|
|
|
### Gentoo
|
|
|
|
|
|
|
|
# emerge app-emulation/qemu app-emulation/docker dev-lang/go
|
|
|
|
|
|
|
|
### macOS
|
|
|
|
|
|
|
|
$ brew install go qemu
|
|
|
|
$ brew cask install docker
|
|
|
|
|
2018-12-16 23:45:36 +00:00
|
|
|
### Fedora
|
|
|
|
|
|
|
|
$ sudo dnf install go qemu moby-engine
|
|
|
|
|
2018-12-16 23:50:58 +00:00
|
|
|
Also check out [docker post-installation steps](https://docs.docker.com/install/linux/linux-postinstall/).
|
2018-12-16 23:45:36 +00:00
|
|
|
|
2018-12-02 03:04:15 +00:00
|
|
|
## Build from source
|
|
|
|
|
2019-02-02 21:24:29 +00:00
|
|
|
$ go get -u code.dumpstack.io/tools/out-of-tree
|
2018-12-01 17:05:40 +00:00
|
|
|
$ out-of-tree bootstrap
|
2018-10-06 17:47:13 +00:00
|
|
|
|
2018-12-01 17:05:40 +00:00
|
|
|
Then you can check it on kernel module example:
|
2018-10-08 20:15:31 +00:00
|
|
|
|
2019-02-02 21:24:29 +00:00
|
|
|
$ cd $GOPATH/src/code.dumpstack.io/tools/out-of-tree/examples/kernel-module
|
2018-12-01 17:05:40 +00:00
|
|
|
$ out-of-tree kernel autogen # generate kernels based on .out-of-tree.toml
|
|
|
|
$ out-of-tree pew
|
2018-10-08 20:15:31 +00:00
|
|
|
|
2018-10-27 15:00:41 +00:00
|
|
|
## Examples
|
|
|
|
|
2018-10-27 17:37:58 +00:00
|
|
|
Run by absolute path
|
|
|
|
|
|
|
|
$ out-of-tree --path /path/to/exploit/directory pew
|
|
|
|
|
2018-10-27 15:00:41 +00:00
|
|
|
Test only with one kernel:
|
|
|
|
|
|
|
|
$ out-of-tree pew --kernel='Ubuntu:4.10.0-30-generic'
|
2018-10-27 15:33:54 +00:00
|
|
|
|
2018-11-25 14:46:29 +00:00
|
|
|
Run debug environment:
|
|
|
|
|
|
|
|
$ out-of-tree debug --kernel='Ubuntu:4.10.0-30-generic'
|
|
|
|
|
2018-10-27 20:07:52 +00:00
|
|
|
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
|
|
|
|
|
2018-10-27 15:33:54 +00:00
|
|
|
Guess work kernels:
|
|
|
|
|
|
|
|
$ out-of-tree pew --guess
|
2018-10-27 17:37:58 +00:00
|
|
|
|
|
|
|
Use custom kernels config
|
|
|
|
|
|
|
|
$ out-of-tree --kernels /path/to/kernels.toml pew
|
2018-12-01 17:05:40 +00:00
|
|
|
|
2018-12-02 19:54:09 +00:00
|
|
|
Generate all kernels
|
2018-12-01 17:16:34 +00:00
|
|
|
|
2018-12-02 19:54:09 +00:00
|
|
|
$ out-of-tree kernel genall --distro Ubuntu --ver 16.04
|
2018-12-01 17:16:34 +00:00
|
|
|
|
2018-12-01 17:05:40 +00:00
|
|
|
## Development
|
|
|
|
|
|
|
|
Read [Qemu API](qemu/README.md).
|
|
|
|
|
|
|
|
### Generate images
|
|
|
|
|
2019-02-02 21:24:29 +00:00
|
|
|
$ cd $GOPATH/src/code.dumpstack.io/tools/out-of-tree/tools/qemu-debian-img/
|
2018-12-01 17:05:40 +00:00
|
|
|
$ 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
|