리눅스 커널 퍼징을 위한 qemu, BusyBox 빌드
리눅스 커널 퍼징을 위한 QEMU 설치 및 BusyBox 빌드, rootfs 생성 과정
본 블로그는 로컬 환경에서 실시되었으며, wsl과 로컬 환경 동일합니다.
linux-6.17.6 버전을 기준으로 작성 되었으며, 모든 설치 과정은 동일하니 linux-6.17.6 부분만 각자 다운받은 버전으로 변경하면 됩니다.
본 블로그의 작업 디렉토리는 /usr/src/kernel 입니다.
qemu 설치
sudo apt install qemu-utils qemu-system-x86 qemu-kvm
이 명령어 한 줄이면 qemu 설치는 끝난다.
BusyBox 빌드
cd /usr/src/kernel sudo cp /Downloads/busybox-1.37.0.tar.bz2 ./ sudo tar -xvf ./busybox-1.37.0.tar.bz2 cd busybox-1.37.0 make menuconfig
menuconfig 설정 옵션:
Settings -> Build options -> build static binary 선택
Networking Utilities -> inetd 선택 해제
Networking Utilities -> tc 선택 해제
sudo apt update sudo apt install -y libncurses-dev libnl-3-dev libnl-genl-3-dev linux-headers-$(uname -r) sudo make CONFIGPREFIX=../result install
busybox 빌드 출력이 성공하면 계속 진행:
cd ../result/ mkdir var dev etc lib proc tmp sys
cat << 'EOF' > ./init #!/bin/sh
mount -t proc none /proc mount -t sysfs none /sys mount -t devtmpfs devtmpfs /dev
exec 0</dev/console exec 1>/dev/console exec 2>/dev/console
echo "7 4 1 7" > /proc/sys/kernel/printk
cp /proc/kallsyms /tmp/kallsyms
setsid cttyhack setuidgid 1000 sh
umount /proc umount /sys poweroff -d 0 -f EOF
chmod 755 ./init find . cpio -o --format=newc > ../rootfs.cpio
cd ../ mkdir rootfs mv ./rootfs.cpio ./rootfs cd ./rootfs cpio -id -v < rootfs.cpio
댓글