SHARE
TWEET

katagaitai ctf study session #3 - setup

bata_24 Oct 31st, 2015 (edited) 596 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ■概要
  2. 動的解析やシェルコード開発をしたい人向けの,qemu-systemを使ったUbuntu 14.04 ARMv7 qemu環境作成方法です.
  3. 別にこの環境と全く同じものを用意する必要はなく,lxcでもdockerでもラズパイでも良いです.
  4. (要は,ARMのシェルコードを作成したり,ARMバイナリを動的解析するためのARM版gdbがある環境をお持ちであればそれでOKです.)
  5.  
  6. とはいえ,資料は下記環境がある前提で進めていくのと,CTFではqemu-systemなARM環境を準備しておいて損は無いと思うので,なるべく準備頂くことをお勧めします.
  7. ※AWS上に環境を作ってログインして頂いたり,VMイメージ配布したほうが良いという意見もあったのですが,
  8. 自前の環境を持っていたほうが何かと便利ですし,qemuの環境構築も勉強になるかなと思い,敢えて各自で作ってもらうことにしました.
  9.  
  10. ■構成
  11. 下記手順で想定しているNW環境は以下のとおりです(NWアドレスまで合わせる必要はありませんが,参考までに書いている次第です).
  12.  
  13. +----------------------------------+
  14. |Ubuntu 14.04 x86_64 on VMware     |
  15. |192.168.164.100/24                |
  16. |  +---------------------------+   |
  17. |  |Ubuntu 14.04 ARMv7 on qemu |   |
  18. |  |192.168.164.200/24         |   |
  19. |  +-------eth0----------------+   |
  20. |           |                      |
  21. |  .100 -- br0                     |
  22. |           |                      |
  23. +----------eth0--------------------+
  24.             |
  25.      192.168.164.2(VMwareデフォゲ)
  26.             |
  27.            ...
  28.  
  29. ■Ubuntu 14.04 ARMv7 qemu環境作成
  30. $ apt-get install qemu-system uml-utilities bridge-utils
  31. $ wget http://odroid.us/odroid/users/osterluk/qemu-example/qemu-example.tgz
  32. $ tar zxf qemu-example.tgz ./zImage
  33. $ wget http://releases.linaro.org/14.10/ubuntu/trusty-images/developer/linaro-trusty-developer-20141024-684.tar.gz
  34. $ tar zxf linaro-trusty-developer-20141024-684.tar.gz
  35. $ qemu-img create -f raw rootfs.img 3G && mkfs.ext3 rootfs.img
  36. $ mkdir mnt && mount -o loop rootfs.img mnt && rsync -a binary/ mnt/ && umount mnt && rm -rf binary && rmdir mnt
  37.  
  38. ■qemuホスト側ブリッジ設定
  39. $ vi /etc/network/interfaces
  40. ---------------------------
  41. auto lo
  42. iface lo inet loopback
  43.  
  44. auto eth0
  45. iface eth0 inet static
  46.   address 0.0.0.0 ★eth0をプロミスキャスモードに変更
  47.  
  48. auto br0 ★ここからqemuホストとqemuゲストをブリッジする設定
  49. iface br0 inet static
  50.   address 192.168.164.100 ★br0にはホストのIPを指定する.(ゲストIPはゲスト上で指定するのでここでは書かない)
  51.   netmask 255.255.255.0
  52.   network 192.168.164.0
  53.   broadcast 192.168.164.255
  54.   gateway 192.168.164.2
  55.   bridge_ports eth0 ★eth0とbr0のブリッジインターフェースを作成
  56.   bridge_stp off
  57.   bridge_maxwait 1
  58. ---------------------------
  59. $ reboot
  60.  
  61. ■qemu起動
  62. $ 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
  63. ※qemuを終了したいときはホスト側でpkill -9 qemuすると楽です
  64. ※当初-m 1024と書いていたのですが,-m 256でも十分だったため修正しました.-m 128でも良いでしょう.
  65.  
  66. ■qemuゲスト側設定
  67. $ passwd
  68.   → rootのパスワード設定
  69. $ vi /etc/resolv.conf
  70.   → ネームサーバ設定(nameserver 192.168.164.2 など)
  71. $ vi /etc/resolvconf/resolv.conf.d/base
  72.   → ネームサーバ設定(nameserver 192.168.164.2 など)
  73. $ vi /etc/network/interfaces
  74.   → eth0のコンフィグ作る(以下は例)
  75. ---------------------------
  76. auto eth0
  77. iface eth0 inet static
  78.   address 192.168.164.200
  79.   netmask 255.255.255.0
  80.   network 192.168.164.0
  81.   broadcast 192.168.164.255
  82.   gateway 192.168.164.2
  83. ---------------------------
  84. $ ifup eth0
  85.  
  86. $ vi /etc/ssh/sshd_config
  87.   → PermitRootLogin yes に変更
  88. $ service ssh restart
  89.  
  90. $ apt-get update && apt-get upgrade
  91. $ apt-get install netcat socat busybox aptitude zip tcpdump automake telnet xinetd # よく使うやつを適当に突っ込む
  92.  
  93. ■補足(作った環境でnokia_uiを動かしてみたい人向け)
  94. (1) ライブラリ関連
  95. $ ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3
  96. $ apt-get install libsqlite3-dev
  97.  
  98. (2) baseband接続の不要化
  99. fon.tar.gz以外の環境では,以下のパッチをnokia_uiに当てないと動きません(ただしSMSは使えなくなります)
  100. 00001203: E1 -> E3
  101.  
  102. ※資料内ではgdbのリモートデバッグ機能を使って解析しますので,上記補足(1)(2)は正直実施不要です.
  103. あくまで構築した環境でnokia_uiを動かしてみたい人向けの補足です.
  104.  
  105. ■補足その2
  106. 最終的に,qemuは以下のように2台動かす事になります(左側がfon.tar.gzに同梱されていたqemu環境,右側が自作していただいたqemu環境です).
  107. メモリ不足にならないよう2台同時に動かせるか,事前に確認しておくことをおすすめします.
  108.  
  109. +----------------------------------------------------------------+
  110. |Ubuntu 14.04 x86_64 on VMware                                   |
  111. |192.168.164.100/24                                              |
  112. |  +---------------------------+  +---------------------------+  |
  113. |  |qemu (from fon.tar.gz)     |  |Ubuntu 14.04 ARMv7 on qemu |  |
  114. |  |                           |  |192.168.164.200/24         |  |
  115. |  +-------eth0----------------+  +-------eth0----------------+  |
  116. |                                          |                     |
  117. |                                 .100 -- br0                    |
  118. |                                          |                     |
  119. +-----------------------------------------eth0-------------------+
  120.                                            |
  121.                                     192.168.164.2(VMwareデフォゲ)
  122.                                            |
  123.                                           ...
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top