您现在的位置是:首页 > 编程 > 

syzkaller的安装与运行

2025-07-25 22:36:38
syzkaller的安装与运行 syzkaller是一种无监督的覆盖引导内核模糊器。支持的操作系统:Akaros, FreeBSD, Fuchsia, gVisor, Linux, etBSD, OpenBSD, Windows.对linux的支持最全面总览syz-manager 1、启动、监控多个vm实例 2、复制syz-fuzzer到vm里面,并启动它 、存储corpus和crashes

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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1207060.html

相关标签:无
上传时间: 2025-07-24 12:25:19
留言与评论(共有 7 条评论)
本站网友 宝宝喝哪种奶粉好
6分钟前 发表
启动syz-executor syz-executor 执行每个input(就是系统调用的序列) 用C++编写
本站网友 黄浦江游轮
15分钟前 发表
就加-debug输出调试信息
本站网友 赤字增加的时期是
27分钟前 发表
"syzkaller"
本站网友 武汉酒吧
7分钟前 发表
变异
本站网友 孕妇可以吃百香果吗
12分钟前 发表
"/root/image/stretch.id_rsa"
本站网友 大牛播放器
8分钟前 发表
//ip