零基础syzkaller挖掘Linux内核漏洞( 二 )


CONFIG_KCOV=yCONFIG_DEBUG_INFO=yCONFIG_KASAN=yCONFIG_KASAN_INLINE=yCONFIG_CONFIGFS_FS=yCONFIG_SECURITYFS=y
再执行如下命令:
make CC="/usr/bin/gcc" olddefconfig
如果出现如下图所示:
再次打开.文件发现刚才添加的配置被删除了,那是因为配置文件中存在如下图所示:
重新执行之前的所有配置命令,然后在.文件中,删除我们想添加配置的注释命令所在的行如:#is not set,最后在上面重新添加配置,然后执行make CC="/usr/bin/gcc" 命令可以发现不会出现 。
如果不删除在之后进行qemu虚拟化时会出现 to startRoot andFile 的错误 。
最后执行如下命令即可完成编译 。
make CC="/usr/bin/gcc" -j64
3.5 制作文件系统
使用如下命令:
wget https://raw.githubusercontent.com/google/syzkaller/master/tools/create-image.sh -O create-image.shchmod +x create-image.sh./create-image.sh
wget命令下载文件失败,可以直接浏览器访问拷贝一份也不影响使用 。
可以看到目录下出现.、..pub、.img文件即为成功 。
3.6 运行
这里需要打开虚拟机的虚拟化 。
安装qemu虚拟工具 。
sudo apt-get install qemu-system-x86
在当前目录创建boot.sh文件,文件内容如下:
qemu-system-x86_64 \-kernel linux/arch/x86/boot/bzImage \-append "console=ttyS0 root=/dev/sda debug earlyprintk=serial slub_debug=QUZ"\-hda ./stretch.img \-net user,hostfwd=tcp::10021-:22 -net nic\-enable-kvm \-nographic \-m 2560M \-smp 2 \-pidfile vm.pid \2>&1 | tee vm.log
运行boot.sh,出现 to startRoot andFile 是上面配置文件没配置好,出现不能访问KVM为虚拟机设置问题 。
运行qemu虚拟机有登录提示输入root如下图所示,无密码登录 。
在虚拟机使用如下命令,以是否能登录qemu虚拟机判断qemu虚拟机的ssh服务是否成功启动(需要使用ssh) 。
ssh -i stretch.id_rsa -p 10021 -o "StrictHostKeyChecking no" root@localhost
进入之前下载的目录,创建my.cfg配置文件,文件内容如下:
{"target": "linux/amd64","http": "127.0.0.1:56741","workdir": "/home/test/git/syzkaller/workdir","kernel_obj": "/home/test/git/linux","image": "/home/test/git/stretch.img","sshkey": "/home/test/git/stretch.id_rsa","syzkaller": "/home/test/git/syzkaller","procs": 8,"type": "qemu","vm": {"count": 4,"kernel": "/home/test/git/linux/arch/x86/boot/bzImage","cpu": 2,"mem": 2048}}
使用./bin/syz- - my.cfg命令运行 。运行时稍微有些慢需要等待一下 。
四、解决 to start Raise错误
执行syz-或qemu模拟运行的时候经常会出现 to start Raise错误 。
执行boot.sh脚本,运行起虚拟机,执行命令,发现不存在此命令 。
目前qemu虚拟机ping不通外网不能使用apt命令进行安装,所以这里选择下载net-tools离线包编译好,拷贝进qemu虚拟机 。
qemu虚拟机初始有默认的ip为10.0.2.15,同时也会初始化物理机ip为10.0.2.2 。
可以使用如下命令进行文件拷贝操作:
ip link set enp0s3 upscp -r test@10.0.2.2:/home/test/Desktop/net-tools-2.10 ./
拷贝完成后就可以执行命令了,如下图所示:
当使用boot.sh脚本运行qemu虚拟机,出现报错 to start Raise的时候,再次执行命令发现只存在lo网卡、网卡未启动或未分配ip地址 。进行删除qemu虚拟机中的/etc//文件,新建文件,文件内容如下,拷贝到到qemu虚拟机/etc//路径 。
auto eth0iface eth0 inet dhcpauto enp0s3iface enp0s3 inet dhcp
多次使用boot.sh启动qemu虚拟机,有时报错 to start Raise,然后使用命令查看结果依旧存在ip地址 。
本机网卡名不为eth0可以使用如下命令进行更改: