준비물: ubuntu .iso 파일 or 리눅스 커널 소스코드(bzImge)

배포된 이미지에는 qemu_kuics/bin/debug/img 에 모든 파일이 다 존재함

리눅스 bzImgeahp 디렉터리 안에 있음.

sudo apt-get update
sudo apt-get upgrade

#python2 is nedded to build the bd80b59 version.
sudo apt-get install python2
sudo ln -s /usr/bin/python2 /usr/bin/python

#Download library
# 최신 qemu의 경우 ninja가 필요함
# sudo apt-get install ninja-build
sudo apt-get install zlib1g-dev libglib2.0-dev libpixman-1-dev

#Download forked qemu source
git clone <https://github.com/baehunsang/qemu_kuics.git>
cd qemu_kuics

# 취약한 버전의 커밋으로 변경
git checkout CVE-2015-5165

mkdir -p bin/debug/native
cd bin/debug/native

# 빌드 시 configure 옵션 제공 --enable-debug를 통해 심볼 붙여서 빌드
../../../configure --target-list=x86_64-softmmu \\
    --enable-debug --disable-werror

make -j `nproc`

cd bin/debug/
mkdir img
cd ./img

run1.sh

# 빌드 후 native에 qemu-img있으니 그거 쓰면 됨
# 깡통 이미지 만들기
path/to/qemu-img create -f qcow2 ubuntu.img 10G

# 해당 버전 빌드하면 native/x86_64-softmmu 안에 있음
# 부팅 usb 꽂고 부팅하는 과정이라고 생각하면 됨
# ubuntu 설정이 끝나면 ubuntu.img가 bootable image가 됨
# 상위 버전은 깡통 이미지로 아래같이 부팅이 안됨
path/to/qemu-system-x86_64 -enable-kvm -boot d \\
-cdrom /path/to/ubuntu-16.04.3-desktop-amd64.iso -m 1024 \\
-hda /path/to/ubuntu.img

run2.sh

/path/to/qemu-system-x86_64 -enable-kvm -m 2048 -drive \\
format=qcow2,file=/path/to/ubuntu.img,if=ide,cache=writeback \\
		-netdev user,id=t0, -device rtl8139,netdev=t0,id=nic0 \\
		-netdev user,id=t1, -device pcnet,netdev=t1,id=nic1 \\
		-net user,hostfwd=tcp::2222-:22 -net nic

이후 vnc 서버를 통해 접속하거나 guest안에서 openssh-server를 다운받아 ssh로 접속

Untitled

Untitled

안되면 컴퓨터 한번 재부팅

[!deprecated!] 커널 + 파일시스템으로 부팅하려는 경우