Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ■概要
- 動的解析やシェルコード開発をしたい人向けの,qemu-systemを使ったUbuntu 14.04 ARMv7 qemu環境作成方法です.
- 別にこの環境と全く同じものを用意する必要はなく,lxcでもdockerでもラズパイでも良いです.
- (要は,ARMのシェルコードを作成したり,ARMバイナリを動的解析するためのARM版gdbがある環境をお持ちであればそれでOKです.)
- とはいえ,資料は下記環境がある前提で進めていくのと,CTFではqemu-systemなARM環境を準備しておいて損は無いと思うので,なるべく準備頂くことをお勧めします.
- ※AWS上に環境を作ってログインして頂いたり,VMイメージ配布したほうが良いという意見もあったのですが,
- 自前の環境を持っていたほうが何かと便利ですし,qemuの環境構築も勉強になるかなと思い,敢えて各自で作ってもらうことにしました.
- ■構成
- 下記手順で想定しているNW環境は以下のとおりです(NWアドレスまで合わせる必要はありませんが,参考までに書いている次第です).
- +----------------------------------+
- |Ubuntu 14.04 x86_64 on VMware |
- |192.168.164.100/24 |
- | +---------------------------+ |
- | |Ubuntu 14.04 ARMv7 on qemu | |
- | |192.168.164.200/24 | |
- | +-------eth0----------------+ |
- | | |
- | .100 -- br0 |
- | | |
- +----------eth0--------------------+
- |
- 192.168.164.2(VMwareデフォゲ)
- |
- ...
- ■Ubuntu 14.04 ARMv7 qemu環境作成
- $ apt-get install qemu-system uml-utilities bridge-utils
- $ wget http://odroid.us/odroid/users/osterluk/qemu-example/qemu-example.tgz
- $ tar zxf qemu-example.tgz ./zImage
- $ wget http://releases.linaro.org/14.10/ubuntu/trusty-images/developer/linaro-trusty-developer-20141024-684.tar.gz
- $ tar zxf linaro-trusty-developer-20141024-684.tar.gz
- $ qemu-img create -f raw rootfs.img 3G && mkfs.ext3 rootfs.img
- $ mkdir mnt && mount -o loop rootfs.img mnt && rsync -a binary/ mnt/ && umount mnt && rm -rf binary && rmdir mnt
- ■qemuホスト側ブリッジ設定
- $ vi /etc/network/interfaces
- ---------------------------
- auto lo
- iface lo inet loopback
- auto eth0
- iface eth0 inet static
- address 0.0.0.0 ★eth0をプロミスキャスモードに変更
- auto br0 ★ここからqemuホストとqemuゲストをブリッジする設定
- iface br0 inet static
- address 192.168.164.100 ★br0にはホストのIPを指定する.(ゲストIPはゲスト上で指定するのでここでは書かない)
- netmask 255.255.255.0
- network 192.168.164.0
- broadcast 192.168.164.255
- gateway 192.168.164.2
- bridge_ports eth0 ★eth0とbr0のブリッジインターフェースを作成
- bridge_stp off
- bridge_maxwait 1
- ---------------------------
- $ reboot
- ■qemu起動
- $ qemu-system-arm -M vexpress-a9 -m 256 -kernel zImage -sd rootfs.img -append "root=/dev/mmcblk0 rw physmap.enabled=0 console=ttyAMA0" -net nic -net tap -k ja -nographic
- ※qemuを終了したいときはホスト側でpkill -9 qemuすると楽です
- ※当初-m 1024と書いていたのですが,-m 256でも十分だったため修正しました.-m 128でも良いでしょう.
- ■qemuゲスト側設定
- $ passwd
- → rootのパスワード設定
- $ vi /etc/resolv.conf
- → ネームサーバ設定(nameserver 192.168.164.2 など)
- $ vi /etc/resolvconf/resolv.conf.d/base
- → ネームサーバ設定(nameserver 192.168.164.2 など)
- $ vi /etc/network/interfaces
- → eth0のコンフィグ作る(以下は例)
- ---------------------------
- auto eth0
- iface eth0 inet static
- address 192.168.164.200
- netmask 255.255.255.0
- network 192.168.164.0
- broadcast 192.168.164.255
- gateway 192.168.164.2
- ---------------------------
- $ ifup eth0
- $ vi /etc/ssh/sshd_config
- → PermitRootLogin yes に変更
- $ service ssh restart
- $ apt-get update && apt-get upgrade
- $ apt-get install netcat socat busybox aptitude zip tcpdump automake telnet xinetd # よく使うやつを適当に突っ込む
- ■補足(作った環境でnokia_uiを動かしてみたい人向け)
- (1) ライブラリ関連
- $ ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3
- $ apt-get install libsqlite3-dev
- (2) baseband接続の不要化
- fon.tar.gz以外の環境では,以下のパッチをnokia_uiに当てないと動きません(ただしSMSは使えなくなります)
- 00001203: E1 -> E3
- ※資料内ではgdbのリモートデバッグ機能を使って解析しますので,上記補足(1)(2)は正直実施不要です.
- あくまで構築した環境でnokia_uiを動かしてみたい人向けの補足です.
- ■補足その2
- 最終的に,qemuは以下のように2台動かす事になります(左側がfon.tar.gzに同梱されていたqemu環境,右側が自作していただいたqemu環境です).
- メモリ不足にならないよう2台同時に動かせるか,事前に確認しておくことをおすすめします.
- +----------------------------------------------------------------+
- |Ubuntu 14.04 x86_64 on VMware |
- |192.168.164.100/24 |
- | +---------------------------+ +---------------------------+ |
- | |qemu (from fon.tar.gz) | |Ubuntu 14.04 ARMv7 on qemu | |
- | | | |192.168.164.200/24 | |
- | +-------eth0----------------+ +-------eth0----------------+ |
- | | |
- | .100 -- br0 |
- | | |
- +-----------------------------------------eth0-------------------+
- |
- 192.168.164.2(VMwareデフォゲ)
- |
- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement