内核模糊测试syzkaller安装教程

0x00 背景

   最近看论文看到了Google官方的内核模糊测试软件syzkaller,想要安装一下试试看。没想到百度出来的教程只有两三篇,而且过程讲的及其模糊,按照其中的一篇进行搭建了两天也没成功。后来对比了官方的安装说明才发现那篇教程有很多地方是错的。果然还是不能偷懒找中文安装教程。接下来介绍下我此次的安装过程,以及遇到的各种问题。

0x01 安装过程

首先下载好安装要用到的包,因为Ubuntu上直接wget请求实在是太慢了,所以还是通过windows下载好再传到Ubuntu上比较快。这里是我下载好的所有要用到的包

链接:https://pan.baidu.com/s/1HxRHJCAdUzLvGZ21lxj9UQ 
提取码:gp0v 

包括:gmp-6.1.0   mpc-1.0.3  mpfr-3.1.0

           syzkaller-master   Linux-master go1.14.2.linux

下面进入安装环节。

0x02 安装GCC 8.0.1

虽然网上有人说gcc的版本和Linux的内核版本没有关系,但官方的建议是把gcc升级到最新的版本,这样会使编译内核的过程更顺畅。我实测也是gcc 8.0.1更为顺畅,所以还是建议安装gcc8.0.1。

首先建立gcc目录

mkdir gcc-build-8.0.1

安装gmp,一定要先安装gmp

tar -Jxvf gmp-6.1.0.tar.xz

mkdir temp #在与gmp-6.1.0同级别的目录下建一个新文件夹,叫temp(自己命名)

cd temp

../gmp-6.1.0/configure –prefix=/usr/local/gmp-6.1.0  --#这句是说,安装路径是/usr/local/,名字叫gmp-6.1.0;

make

sudo make install

安装mpfr

tar -Jxvf mpfr-3.1.4.tar.bz2

cd temp

#先清空temp内的文件,这样安装两个包互补影响,当然也可以另外新建一个文件夹,在你新的文件夹下:

../mpfr-3.1.4/configure --prefix=/usr/local/mpfr-3.1.3 --with-gmp=/usr/local/gmp-8.0.1     

make

sudo make install

安装mpc

tar -zxvf mpc-1.0.3.tar.gz

cd temp

#同样先清空temp文件夹

../mpc-1.0.3/configure –prefix=/usr/local/mpc-1.0.3 –with-gmp=/usr/local/gmp-8.0.1 –with-mpfr=/usr/local/mpfr-3.1.4

make

sudo make install

安装gcc

tar -zxvf gcc-8.0.1.tar.gz

#再次清空temp首先配置GCC,在temp文件夹中执行以下命令,注意,此时temp和gcc-8.0.·在同级目录下

../gcc-8.0.1/configure --prefix=/usr/local/gcc-8.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --with-mpc=/usr/local/mpc-1.0.3

make

sudo make install

配置环境变量

sudo ln -s /usr/local/gcc-8.0.1/bin/gcc /usr/local/bin/gcc8

sudo ln -s /usr/local/gcc-8.0.1/bin/g++ /usr/local/bin/g++8

0x03 安装要测试的Linux内核

解压linux-master,并cd到该目录下

unzip linux-master.zip
cd linux-master

生成配置文件,用我们刚安装好的gcc进行编译

make CC="usr/local/bin/gcc" defconfig
make CC="usr/local/bin/gcc" kvmconfig

完成后在当前的目录下找到 .config 文件,如果没有按 ctrl+H 显示隐藏文件,在文档的相应位置加入以下字段,保存

CONFIG_KCOV=y

CONFIG_DEBUG_INFO=y

CONFIG_KASAN=y
CONFIG_KASAN_INLINE=y

CONFIG_CONFIGFS_FS=y
CONFIG_SECURITYFS=y

 保存配置

make CC="$GCC/bin/gcc" olddefconfig

最后编译

make CC="$GCC/bin/gcc" -j64   -j后面的数字越大编译越快 主要看机器的配置

编译成功后,会有两个文件 bzImage 以及 vmlinux 分别位于

linux-master/vmlinux
linux-master/arch/x86/boot/bzImage

0x04 安装Image镜像

安装 debootstrap

sudo apt-get install debootstrap

建立imge目录,将create-image.sh拷贝到目录下

mkdir image

给sh权限,并运行下载

chmod +x create-image.sh
./create-image.sh -s 1024

最后会得到 ./stretch.img 镜像文件

 

0x05 安装qemu虚拟机

直接使用命令安装即可

sudo apt-get install qemu-system-x86

使用以下命令测试编译好的内核以及生成的镜像文件

qemu-system-x86_64 -m 1G -enable-kvm -drive file=,format=raw -kernel /arch/x86/boot/bzImage -append root=/dev/sda

如果虚拟机正常启动到命令行界面 则成功。

 

0x06 安装go环境

解压go安装包 并编译安装,设置环境变量

tar -xf go1.14.2.linux-amd64.tar.gz
mv go goroot
mkdir gopath
export GOPATH=`pwd`/gopath
export GOROOT=`pwd`/goroot
export PATH=$GOPATH/bin:$PATH
export PATH=$GOROOT/bin:$PATH

0x07 安装syzkaller

解压syzkaller安装包到 /gopath/src/github.com/,执行make安装

cd gopath/src/github.com/google/syzkaller/
make

安装成功后,会有/bin/syz-manger文件。

返回syzkaller文件目录下,建立 my.cfg 文件

{
	"target": "linux/amd64",
	"http": "127.0.0.1:56741",
	"workdir": "$GOPATH/src/github.com/google/syzkaller/workdir",
	"kernel_obj": "linux-mater文件夹目录",
	"image": "image文件夹目录/stretch.img",
	"sshkey": "image文件夹目录/stretch.id_rsa",
	"syzkaller": "$GOPATH/src/github.com/google/syzkaller",
	"procs": 8,
	"type": "qemu",
	"vm": {
		"count": 4,
		"kernel": "linux-master文件夹目录/arch/x86/boot/bzImage",
		"cpu": 2,
		"mem": 2048
	}
}

运行syzkaller

mkdir workdir
./bin/syz-manager -config=my.cfg

 

你可能感兴趣的:(内核模糊测试,内核模糊测试,syzkaller)