2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

東北大学 計算機科学研究会Advent Calendar 2017

Day 16

pyrebox超入門1 ~インストール&ゲストOSの準備編~

Last updated at Posted at 2017-12-15

#0. はじめに

##pyreboxって何? 何のの役に立つの?
pyreboxは、qemu(Vbox,VMwareみたいなものです)をベースにして作られたリバースエンジニアリングサンドボックスです。pyreboxを使えば、

  • 特定の命令、基本ブロック(basic block)の実行
  • NICのデータ送受信
  • メモリの読み書き
  • プロセス作成
  • キーボード入力
  • etc...

が発生したときにpythonスクリプトを起動して、

  • volatility frameworkのライブラリから仮想マシンを解析
  • メモリの編集

などができます。

##対象とする読者

  • pyreboxを導入したいが英語をバリバリ読むのは嫌な人(バリバリ読める人はこちらを読めばおK
  • qemu使ったことないのでpyrebox導入をどうすればいいのかよくわかんなかった人

あとVirtualBox/VMwareを使った経験があるといいかも(なくてもダイジョブですが、”ホストOS”等の用語は解説しません。)

##注意事項

  • ホストOSはdebian系を想定して書きます。それ以外の方は、この記事を流し読みした後、これを見ながら導入するのがいいと思います。
  • 2017年12月の情報を基に書いています。最新の情報は、こちらから仕入れてください。

#1. pyreboxのインストール
現時点では、インストーラによるインストールはサポートされてないそうです。なのでまずはgitでもとのリポジトリをクローン(ホームディレクトリ以外にクローンするなら以下は適宜読み替えてください。)

$ cd ~
$ git clone https://github.com/Cisco-Talos/pyrebox/

次に必要なパッケージをインストールしてください。

# apt-get install build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython-dev python-pip virtualenv python-capstone

pyreboxディレクトリに移動してpyrebox用のvirtualenvを作成して必要なモジュールなどをインストール

$ cd ~/pyrebox/
$ virtualenv pyrebox_venv
$ source pyrebox_venv/bin/activate
$ pip install -r requirements.txt

以降pyreboxを使うときは忘れずにvirtualenvをactivateしてください。
$ source pyrebox_venv/bin/activate
最後にビルド

$ ./build.sh

これでインストールは完了です。

#2. pyrebox用仮想マシンの起動
すでに述べた通りpyreboxはqemuベースなので、qemuの仮想マシンを扱う要領でpyreboxように仮想マシンを作成、起動します。qemuの詳しい使い方は次回述べることとして、今回は仮想マシンを作ってゲストOSをインストールするところまで行きます。

##仮想ハードディスクの作成

$ cd ~/pyrebox
$ mkdir images
$ ./qemu/qemu-img create -f qcow2 -o compat=0.10 images/centos.qcow2 8G 

もともとqemuにもqemu-img というコマンドがありますが、pyrebox/qemu下にあるバイナリを使わないといらん面倒に巻き込まれるらしいので気を付けてください。コマンドの軽い解説をしておくと、

  • qemu-img は仮想ハードディスクを扱うコマンド
  • createは新規作成意味する
  • -f はフォーマット、qcow2はqemuで使われる仮想ハードディスクの形式(VMware,Vboxでいう.vmdk, .vdiです)で、compat=0.10はqcow2のバージョン番号みたいなもの
  • images/centos.qcow2が出来上がる仮想ハードディスクのパス
  • 8G 仮想ハードディスクの大きさ(使うゲストOSによって変えてください)

という感じです。

##ゲストOSの起動
まずゲストOSのインストールディスクを用意してください。(ここではこちらからダウンロードしてきたcentosのisoを使います)

いよいよ起動....といきたいところですが、その前にpyrebox.confというファイルを作らないといけないので、お好みのエディタで~/pyrebox/下にpyrebox.conf`というファイルを作って以下を書いてください。

~/pyrebox/pyrebox.conf
[MODULES]

[VOL]
profile: [ゲストOSに合わせたプロファイル名(補足1参照)]

[MODULES]は起動時に読み込むpyrebox moduleのことで、今は空で大丈夫です。
[VOL]はvolatility framework のプロファイル名らしいので、ここではテキトーにCentosとしています。(追記:ここを適当にするとvolatility がうまく動かないので、補足1を見て適切なのを選んでください。)

ではいよいよ起動です。

$ ./pyrebox-x86_64 -m 4096 -drive file=images/centos.qcow2,index=0,media=disk,format=qcow2,cache=unsafe -monitor stdio -cdrom ../Downloads/CentOS-7-x86_64-Everything-1708.iso  -boot d

解説

  • i386のOSを起動したいなら./pyrebox-i386を代わりに使ってください。
  • -m 4096 はメモリを4096MBに設定するという意味です。必要に応じて変えてください。
  • -monitor stdioはqemuモニターをstdioに出せという意味で、これの使い方は次回にやります。
  • -cdrom ~ で起動ディスクの選択をしています。

成功すれば以下のような行が現れると思います。
VNC server running on 127.0.0.1:5900
なのでVNCクライアントでつなぎます。vncviewer,remmina などお好みのクライアントを使ってください。
vncveiwer なら、$ vncviewer ‘サーバーのアドレス‘
remmina なら $ remmina と打てばGUIインターフェイスが出るはずです。
VNCクライアントの詳しい使い方は必要に応じて調べてください。

##ゲストOSのインストールなど
vboxなどと同じ要領でOSをインストールすればOKです。画面に出る指示に従ってインストールしてください。
(2017/12/17追記:インストールが済んで正常に起動できるようになったら、仮想ハードディスクをバックアップしたほうがいいかもしれません。HDDの容量が許すならですが、事故が起こったときにインストールをやり直すのは結構骨なので。)
今回はここまでです。もう少し仮想マシン関連で必要な手順がありますが、次回にします。

お疲れさまでした。

#参考になるであろうURL
pyreboxドキュメント

#次回はこちらー>超入門2

#補足1 volatility framework のプロファイルの設定
#1. ゲストOSがWindowsの場合
pyrebox/volatilityに移動してvol.pyを実行してください。

$ cd pyrebox/volatility/
$ python vol.py --info |less

すると上のほうに次のようなセクションが出るはずです。

profiles
--------
VistaSP0x86    - A profile for Windows Vista SP0 x86
VistaSP0x64    - A profile for WIndows Vista SP0 x64
(以下略)

このVistaSP0x86だのWinXPSP3x86だのの中から使用するゲストOSにあったものをpyrebox.confにコピーアンドペーストすればOKです。

#2. ゲストOSがLinuxなどの場合。
まずプロファイルを入手

$ cd ~
$ git clone:https://github.com/volatilityfoundation/profiles

そこから対応するOSのプロファイルを探す。例えばx86のUbuntuなら、profiles/linux/Ubuntu/x86にZIPファイルがたくさんあるので、適切なものを選んでそれをpyrebox/volatility/volatility/plugins/overlays/linux下にコピー
cp ~/profiles/Linux/Ubuntu/x86/Ubuntu12044.zip ~/pyrebox/volatility/volatility/plugins/overlays/linux

次にプロファイル名を調べます。

$ cd ~/pyrebox/volatility/
$ python vol.py --info |less

するとおそらくProfilesの先頭に

Profiles
--------
LinuxUbuntu....(以下略)

みたいなのが現れるはずなので、LinuxCentOS65x86だのLinuxUbuntu14043x64だのから適切なものをpyrebox.confにコピーアンドペーストすればOKです。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?