SYZKALLER教程(一)——安装

针对官方文档https://github.com/google/syzkaller和网上教程不是很详细,在一个新的虚拟机配置时总会出现错误。我们从新建虚拟机开始进行讲解

1.安装虚拟机Ubuntu 18.04.4虚拟机

硬盘空间给到40G。

2.安装好虚拟机后先更换国内源

我们更换清华源

sudo su 
cd /etc/apt/
echo ``>sources.list
vi sources.list

#复制以下内容
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

:wq #保存退出

#重新打开一个终端
sudo apt-get update
sudo apt-get upgrade

3.安装基本依赖

sudo apt-get install debootstrap
sudo apt install qemu-kvm
sudo apt-get install subversion
sudo apt-get install git
sudo apt-get install make
sudo apt-get install qemu
sudo apt install libssl-dev libelf-dev
sudo apt-get install flex bison libc6-dev libc6-dev-i386 linux-libc-dev linux-libc-dev:i386 libgmp3-dev libmpfr-dev libmpc-dev
apt-get install g++
apt-get install build-essential 

4.安装GCC 8.1.0

CC编译需要mpfr和mpc(-->gmp、-->mpfr)库的支持,依次安装这几个库,其中mpfr可直接安装,安装mpc依赖mpfr和gmp库(对版本有要求,建议安装最新版本),然后执行configure时指定mpfr和gmp的include、lib路径。
下载 MPFR (mpfr-4.0.1), MPFR_patch、GMP (gmp-6.1.2) 和MPC(mpc-1.1.0),链接:https://gmplib.org/ https://www.mpfr.org/mpfr-current/#download

我这里用的 GCC 8.1.0 (https://ftp.gnu.org/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.gz);GMP:6.1.0;MPFR 3.1.4;MPC 1.0.3
一:安装gmp

sudo su
cd /usr/local
cp /mnt/hgfs/Ubuntu-tool/gcc-tool/gmp6.1.2.tar.bz2/ ./ -r #将文件拷贝到/usr/local目录
 tar jxvf gmp-6.1.2.tar.bz2
cd gmp-6.1.2
 ./configure  #这一部错误需要 sudo apt-get install m4
make 
make install

二:安装mpfr

cd ..
cp /mnt/hgfs/Ubuntu-tool/gcc-tool/mpfr-4.0.1.tar.gz/ ./ -r
tar zxvf mpfr-4.0.1.tar.gz
cd mpfr-4.0.1
 ./configure
make
make install

三:安装MPC

cd ..
cp /mnt/hgfs/Ubuntu-tool/gcc-tool/mpc-1.1.0.tar.gz / ./ -r
tar zxvf mpc-1.1.0.tar.gz
cd mpc-1.1.0
./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib --with-mpfr-include=/usr/local/include    --with-mpfr-lib=/usr/local/lib
make
make install

四:安装GCC
新建一个终端

cd
vi .bash_profile  
#拷贝进去
export C_INCLUDE_PATH=/usr/local/include:$C_INCLUDE_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
:wq

回到刚才的终端

cd ..
source   /root/.bash_profile
cp /mnt/hgfs/Ubuntu-tool/gcc-tool/gcc-8.1.0.tar.gz/ ./ -r
tar -zxvf gcc-8.1.0.tar.gz
mkdir gcc_temp
cd gcc_temp
sudo apt-get install gcc-multilib
../configure --prefix=/usr   --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local   
make          #很慢
make install
安装完成后 gcc -v可以查看版本

5.配置GO环境编译Syzkaller

这一步官方文档讲的很详细
打开一个终端

wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
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#配了零时环境变量,所以换了终端要重新配置
go get -u -d github.com/google/syzkaller/prog  #很慢
cd gopath/src/github.com/google/syzkaller/
make

成果后/bin/syz-manger文件

6.编译内核和准备镜像

git clone https://mirrors.tuna.tsinghua.edu.cn/git/linux.git
cd ~/source/linux

make CC="/usr/bin/gcc" defconfig
make CC="/usr/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="/usr/bin/gcc" olddefconfig
make CC="/usr/bin/gcc" -j64

准备镜像

sudo apt-get install debootstrap
mkdir image
cd image/
wget https://raw.githubusercontent.com/google/syzkaller/master/tools/create-image.sh -O create-image.sh
chmod +x create-image.sh
./create-image.sh -s 1024
最后会得到 ./stretch.img 镜像文件

7.配置虚拟环境(QEMU)

sudo usermod -aG kvm $USER
sudo apt-get install qemu-system-x86

#重新打开终端,测试qemu、内核、镜像
qemu-system-x86_64 \
 -kernel $KERNEL/arch/x86/boot/bzImage \
 -append "console=ttyS0 root=/dev/sda debug earlyprintk=serial slub_debug=QUZ"\
 -hda $IMAGE/stretch.img \
 -net user,hostfwd=tcp::10021-:22 -net nic \
 -enable-kvm \
 -nographic \
 -m 2G \
 -smp 2 \
 -pidfile vm.pid \
 2>&1 | tee vm.log
#KVM找不到或无法启动 尝试利用管理员权限或者打开IntelPT在vmware处理器设置部分

开始模糊测试

#返回syzkaller文件目录下,建立 my.cfg 文件
{
    "target": "linux/amd64",
    "http": "127.0.0.1:56741",
    "workdir": "~/fuzz/syzkalls/workdir/",
    "kernel_obj": "~/source/linux/",
    "image": "~/source/image/stretch.img",
    "sshkey": "~/source/image/stretch.id_rsa",
    "syzkaller": "~/fuzz/syzkaller",
    "procs": 8,
    "type": "qemu",
    "vm": {
        "count": 4,
        "kernel": "~/source/linux/arch/x86/boot/bzImage",
        "cpu": 2,
        "mem": 2048
    }
}
#启动manager
mkdir workdir
sudo ./bin/syz-manager -config my.cfg

image.png

有问题欢迎留言,还有很多小细节可能有遗漏。
参考:
https://www.secshi.com/16256.html
https://i-m.dev/posts/20200313-143737.html
https://www.cnblogs.com/joeat1/p/11081601.html
https://blog.csdn.net/weixin_42108484/article/details/83021957
https://blog.csdn.net/flyfish778/article/details/35276883
https://hicookie.me/2019/10/22/Syzkaller-Setup/
https://www.secshi.com/12092.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容