syzkaller安装

本文详细介绍了如何在Ubuntu22.04.1系统上安装必要的依赖,更新GCC,获取和配置Linux内核,生成DebianBullseye镜像,使用QEMU创建虚拟机环境,以及配置和运行syzkaller进行安全漏洞检测的过程。
摘要由CSDN通过智能技术生成

平台:Ubuntu 22.04.1

1. 安装依赖

sudo apt update
sudo apt install make gcc flex bison libncurses-dev libelf-dev libssl-dev

2. GCC

  • 推荐使用较新版本的GCC,本机11.4.0版本没问题

3. 建立文件夹,设置工作目录(供参考)

~/fuzzing 
 |--- linux
 |--- IMAGE
 |--- syzkaller

4. Kernel

  • 进入fuzzing文件夹,获得linux内核源代码
git clone --branch v6.2 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git $KERNEL
  • 进入linux文件夹,生成默认的配置文件
cd linux
make defconfig
make kvm_guest.config
  • linux文件夹中,选择显示隐藏文件,可找到.config文件。对该文件进行编辑,使所需的配置选项能够发挥作用
# Coverage collection.
CONFIG_KCOV=y

# Debug info for symbolization.
CONFIG_DEBUG_INFO_DWARF4=y

# Memory bug detector
CONFIG_KASAN=y
CONFIG_KASAN_INLINE=y

# Required for Debian Stretch and later
CONFIG_CONFIGFS_FS=y
CONFIG_SECURITYFS=y

# 这两行若没加,最终启动syzkaller后可能没办法连接到虚拟机
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="net.ifnames=0"
  • 重新生成配置文件
make olddefconfig
  • 编译内核
make -j`nproc`

编译内核成功后,可在~/linux目录下可找到vmlinux文件,在~/linux/arch/x86/boot目录下可找到bzImage文件

5. Image

  • 安装debootstrap

    测试Linux内核时,只有内核没有办法运行,还需要发行版外环境的支持,所以需要使用debootstrap来生成一个小型的Linux发行版用于测试

sudo apt install debootstrap
  • 生成Debian Bullseyes Linux 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

完成后在IMAGE文件夹下会生成bullseyes.img文件

作者在这一步出现了依赖包无法下载的情况,换源和手动安装均无法解决,尝试关闭vpn后成功

6. QEMU

一般测试的Linux内核需要运行在虚拟机上进行测试,需要安装qemu支持硬件虚拟机

  • 安装qemu
sudo apt install qemu-system-x86
  • 验证:确保kernel boots和sshd启动
qemu-system-x86_64 \
	-m 2G \
	-smp 2 \
	-kernel $KERNEL/arch/x86/boot/bzImage \   #此处$KERNEL替换为linux文件夹目录
	-append "console=ttyS0 root=/dev/sda earlyprintk=serial net.ifnames=0" \
	-drive file=$IMAGE/bullseye.img,format=raw \   #此处$IMAGE替换为IMAGE文件夹目录
	-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

启动成功后会出现以下界面,输入root登录

登录后可进入虚拟机

此外,新开一个终端,可通过以下命令连接到QEMU虚拟机

ssh -i $IMAGE/bullseye.id_rsa -p 10021 -o "StrictHostKeyChecking no" root@localhost

连接成功后的界面如下,可输入poweroff命令关闭连接

7. syzkaller

  • Go: syzkaller是以go语言写的,在build syzkaller时需要Go 1.20+(可将go直接安装在fuzzing目录下,此时$GOROOT即为~/fuzzing/go
wget https://dl.google.com/go/go1.21.4.linux-amd64.tar.gz
tar -xf go1.21.4.linux-amd64.tar.gz
export GOROOT=`pwd`/go
export PATH=$GOROOT/bin:$PATH
  • 进入fuzzing文件夹,下载安装syzkaller
git clone https://github.com/google/syzkaller
cd syzkaller
make
  • 新建syz-manager配置文件my.cfg,文件内容如下(需要将$GOPATH, $KERNEL, $IMAGE替换为实际的路径),将该文件放置在syzkaller目录下
{
	"target": "linux/amd64",
	"http": "127.0.0.1:56741",
	"workdir": "$GOPATH/src/github.com/google/syzkaller/workdir",
	"kernel_obj": "$KERNEL",
	"image": "$IMAGE/bullseye.img",
	"sshkey": "$IMAGE/bullseye.id_rsa",
	"syzkaller": "$GOPATH/src/github.com/google/syzkaller",
	"procs": 8,
	"type": "qemu",
	"vm": {
		"count": 4,
		"kernel": "$KERNEL/arch/x86/boot/bzImage",
		"cpu": 2,
		"mem": 2048
	}
}
  • 在syzkaller目录下新建workdir文件夹,并运行syzkaller manager
mkdir workdir
./bin/syz-manager -config=my.cfg

运行成功后界面如下:

(这一步,作者因之前未设置步骤4中的CONFIG_CMDLINE_BOOLCONFIG_CMDLINE两个选项,导致连接失败)

可通过浏览器观察manager的状态,IP:127.0.0.1:56741

syzkaller搭建完成!

参考:

https://github.com/google/syzkaller/blob/master/docs/linux/setup.md#go-and-syzkaller

  • 32
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值