內核模糊測試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=<stretch.img路徑>,format=raw -kernel <linux-master路徑>/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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章