2018-10-05 07:47:49 +00:00
|
|
|
# out-of-tree
|
|
|
|
|
|
|
|
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-10-05 07:47:49 +00:00
|
|
|
## Installation
|
|
|
|
|
|
|
|
Read [Qemu API](qemu/README.md).
|
|
|
|
|
2018-10-26 06:43:09 +00:00
|
|
|
### 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
|
|
|
|
|
2018-10-06 17:47:13 +00:00
|
|
|
### Generate kernels
|
|
|
|
|
|
|
|
cd $GOPATH/src/github.com/jollheef/out-of-tree/tools/kernel-factory
|
|
|
|
./bootstrap.sh # more than 6-8 hours for all kernels
|
2018-10-08 20:15:31 +00:00
|
|
|
|
|
|
|
### "I just want to see how it works"
|
|
|
|
|
2018-10-26 21:27:55 +00:00
|
|
|
If you already have Go, Qemu and Docker installed, there's cross-platform installation checklist:
|
2018-10-08 20:15:31 +00:00
|
|
|
|
|
|
|
$ go get github.com/jollheef/out-of-tree
|
2018-10-25 23:38:12 +00:00
|
|
|
$ cd $GOPATH/src/github.com/jollheef/out-of-tree/tools/qemu-debian-img/
|
|
|
|
$ ./bootstrap.sh
|
2018-10-26 06:43:09 +00:00
|
|
|
$ docker run --privileged -v $(pwd):/shared -e IMAGE=/shared/ubuntu1604.img -e RELEASE=xenial -t gen-ubuntu1804-image
|
2018-10-08 20:15:31 +00:00
|
|
|
$ cd ../kernel-factory
|
|
|
|
$ rm -rf {Debian,CentOS,Ubuntu/{14.04,18.04}} # speed up :)
|
|
|
|
$ ./bootstrap.sh
|
|
|
|
$ # wait several hours...
|
2018-10-27 07:48:06 +00:00
|
|
|
$ export OUT_OF_TREE_KCFG=$GOPATH/src/github.com/jollheef/out-of-tree/tools/kernel-factory/output/kernels.toml
|
2018-10-08 20:15:31 +00:00
|
|
|
$ cd ../../examples/kernel-exploit
|
|
|
|
$ # test kernel exploit
|
2018-10-26 18:26:43 +00:00
|
|
|
$ out-of-tree pew
|
2018-10-08 20:15:31 +00:00
|
|
|
$ cd ../kernel-module
|
|
|
|
$ # test kernel module
|
2018-10-26 18:26:43 +00:00
|
|
|
$ out-of-tree pew
|
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
|