arm pwn 环境搭建
qemu 简介
qemu是一款可执行硬件虚拟化的虚拟机,与他类似的还有Bochs、PearPC,但qemu具有高速(配合KVM)、跨平台的特性
qemu主要有两种运行模式:qemu-user 和 qemu-system
安装 qemu-user
1 | $sudo apt-get install qemu qemu-user qemu-user-static |
此时可以运行静态链接的arm程序,而要运行动态链接的程序,需要安装对应架构的动态链接库:1
$ apt search "libc6-" | grep "arm"
安装 qemu-system1
$ sudo apt-get install qemu qemu-user-static qemu-system uml-utilities bridge-utils
Ubuntu 16.04(deepin)
安装 gdb、gdb-multiarch1
$ sudo apt-get install gdb gdb-multiarch
安装 gdb plugin(peda、pwndbg、gef)
peda_arm:https://github.com/alset0326/peda-arm
pwndbg:https://github.com/pwndbg/pwndbg
gef:https://github.com/hugsy/gef
配置qemu-system网络
qemu-system模式配置网络常见的方法是tap桥接
安装网络配置的依赖文件:
$ sudo apt install uml-utilities bridge-utils
修改Ubuntu主机网络接口配置文件:
$sudo vim /etc/network/interfaces
1 | # interfaces(5) file used by ifup(8) and ifdown(8) |
创建并编写qemu网络接口启动脚本:
1 | $ sudo vim /etc/qemu-ifup |
将原来的内容注释,换成下面的内容:
1 | echo "Executing /etc/qemu-ifup" |
保存文件后使用如下命令修改qemu-ifup的权限:
$ sudo chmod a+x /etc/qemu-ifup
重启网络使配置生效:
$ sudo /etc/init.d/networking restart
启动桥接网络:
$ sudo ifdown ens33 && sudo ifup br0
运行之后,桥br0代替ens33接管了ubuntu虚拟机的网口:
下载qemu的镜像和磁盘:
https://people.debian.org/~aurel32/qemu/armhf/
启动 qemu
./start.sh
1 | #!/bin/sh |
也可以使用docker运行一个qemu arm容器,比较方便
https://island123.github.io/2020/01/15/Docker%E8%BF%90%E8%A1%8Cqemu%20arm%E5%AE%B9%E5%99%A8%20/#%E4%BD%BF%E7%94%A8Docker%E8%BF%90%E8%A1%8Cqemu-arm%E5%AE%B9%E5%99%A8
https://github.com/fireundubh/IDA7-Rizzo ida7.0,把rizzo.py放到ida插件文件夹里