syzkaller的安装与运行
syzkaller的安装与运行
syzkaller是一种无监督的覆盖引导内核模糊器。
支持的操作系统:Akaros, FreeBSD, Fuchsia, gVisor, Linux, etBSD, OpenBSD, Windows.
对linux的支持最全面
总览
syz-manager 1、启动、监控多个vm实例 2、复制syz-fuzzer到vm里面,并启动它 、存储corpus和crashes syz-fuzzer 1、fuzzing(输入生成、变异、最小化等) 2、通过RPC发送触发新路径的input给到syz-manager 、启动syz-executor syz-executor 执行每个input(就是系统调用的序列) 用C++编写,静态二进制,使用共享内存进行通信
安装
依赖安装
代码语言:javascript代码运行次数:0运行复制apt install build-essential flex bison libssl-dev libelf-dev bc
下载源码编译
代码语言:javascript代码运行次数:0运行复制git clone git://git.kernel/pub/scm/linux/kernel/git/torvalds/linux.git kernel
cd kernel
# 生成默认配置
make defconfig
make kvm_
在.config文件中加入以下配置 vim .config
代码语言:javascript代码运行次数:0运行复制# Coverage collection.
COFIG_KCOV=y
# Debug info for symbolization.
COFIG_DEBUG_IFO=y
# Memory bug detector
COFIG_KASA=y
COFIG_KASA_ILIE=y
# Required for Debian Stretch
COFIG_COFIGFS_FS=y
COFIG_SECURITYFS=y
代码语言:javascript代码运行次数:0运行复制# 由于启用这些选项会导致更多子选项可用,我们需要重新生成配置
make olddefconfig
make -j 16
创建镜像
代码语言:javascript代码运行次数:0运行复制apt-get install debootstrap
cd $IMAGE/
wget .sh -O create-image.sh
chmod +x create-image.sh
./create-image.sh
安装qemu
代码语言:javascript代码运行次数:0运行复制apt-get install qemu-system-x86
测试
代码语言:javascript代码运行次数:0运行复制qemu-system-x86_64 \
-m 2G \
-smp 2 \
-kernel ./kernel/arch/x86/boot/bzImage \
-append "cole=ttyS0 root=/dev/sda earlyprintk=serial net.ifnames=0" \
-drive file=./image/stretch.img,format=raw \
-net user,host=10.0.2.10,hostfwd=tcp:127.0.0.1:10021-:22 \
-net nic,model=e1000 \
-enable-kvm \
-nographic \
-pidfile vm.pid \
2>&1 | tee vm.log
试一下是否能够连接
代码语言:javascript代码运行次数:0运行复制 -i image/stretch.id_rsa -p 10021 -o "StrictHostKeyChecking no" root@localhost -v
Go and syzkaller
下载配置go
代码语言:javascript代码运行次数:0运行复制wget .16.5.gz
tar -xvf go1.16.5.gz
mv go goroot
mkdir gopath
export GOPATH=`pwd`/gopath
export GOROOT=`pwd`/goroot
export PATH=$GOPATH/bin:$PATH
export PATH=$GOROOT/bin:$PATH
下载syzkaller源码并编译,先配置代理
代码语言:javascript代码运行次数:0运行复制export https_proxy=http://XXX.XXX.XXX.XXX:1080
go get -u -d github/google/syzkaller/prog
cd gopath/src/github/google/syzkaller
make
编辑配置文件,路径注意修改
代码语言:javascript代码运行次数:0运行复制vim
{
"target": "linux/amd64",
"http": "127.0.0.1:56741",
"workdir": "/root/gopath/src/github/google/syzkaller/workdir",
"kernel_obj": "/root/kernel",
"image": "/root/image/stretch.img",
"key": "/root/image/stretch.id_rsa",
"syzkaller": "/root/gopath/src/github/google/syzkaller",
"procs": 8,
"type": "qemu",
"vm": {
"count": 4,
"kernel": "/root/kernel/arch/x86/boot/bzImage",
"cpu": 2,
"mem": 2048
}
}
启动syzkaller
代码语言:javascript代码运行次数:0运行复制$ ./bin/syz-manager -config=/root/
假如起不来,就加-debug输出调试信息,看看哪里报错了
代码语言:javascript代码运行次数:0运行复制./bin/syz-manager -config=/root/ -debug
问题与解决
1、go没有下载到syzkaller源码问题
需要设置代理,注意不要设置GO111MODULE环境变量,建议使用export https_proxy=http://ip:port
方式进行代理
2、 qemu的服务没起来
这个可能是kernel编译的问题,可以尝试重新编译kernel
make mrproper 之后按步骤再编译一次内核
、网卡没起来
后来发现syzkaller的qemu启动命令与测试的qemu命令不一样
将syzkaller的命令复制出来,并启动qemu
通过systemctl status networking.service
查看网络服务状态
再查看网络接口,然而并没有eth0
最后使用测试qemu的命令启动,之后修改/etc/network/interfaces中的eth0改为enp0s4即可
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2021-06-25,如有侵权请联系 cloudcommunity@tencent 删除配置源码编译测试代理#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
推荐阅读
留言与评论(共有 7 条评论) |
本站网友 宝宝喝哪种奶粉好 | 6分钟前 发表 |
启动syz-executor syz-executor 执行每个input(就是系统调用的序列) 用C++编写 | |
本站网友 黄浦江游轮 | 15分钟前 发表 |
就加-debug输出调试信息 | |
本站网友 赤字增加的时期是 | 27分钟前 发表 |
"syzkaller" | |
本站网友 武汉酒吧 | 7分钟前 发表 |
变异 | |
本站网友 孕妇可以吃百香果吗 | 12分钟前 发表 |
"/root/image/stretch.id_rsa" | |
本站网友 大牛播放器 | 8分钟前 发表 |
//ip |