준비물: ubuntu .iso 파일 or 리눅스 커널 소스코드(bzImge)
배포된 이미지에는 qemu_kuics/bin/debug/img 에 모든 파일이 다 존재함
리눅스 bzImge 는 ahp 디렉터리 안에 있음.
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
# 빌드 후 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
/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로 접속


안되면 컴퓨터 한번 재부팅