LoginSignup
2
3

More than 5 years have passed since last update.

Cuckoo Sandbox on KVM(ゲスト編)

Posted at

前回、Cuckoo Sandboxのホスト構築についての記事を書きました。
本記事はその続きで、ゲスト編です。
VM側の設定をしていきます。ホストほど苦労はしません。

環境

  • ホストOS
    • Ubuntu 14.04
  • ゲストOS
    • Windows 7
  • KVM
    • virsh 1.2.2
  • cuckoo
    • 1.2-dev

参考

前提

  • ホストの構築は完了している
  • Windowsのイメージやライセンスキーを持っている

ゲストの設定

今回はVMとしてWindows 7を用います。
予めISOなどは入手してホストマシン上に置いておいて下さい。

ネットワークの設定

VMを作成する前に、ネットワークの設定を行います。
KVMではインストール時にdefaultというネットワークが作成されているはずです。
普通にVMを作成すればdefautに所属するはずです。
このネットワークではDHCPによってVMにIPアドレスが付与されます。
しかし、Cuckooでは固定IPアドレスじゃないと色々と不具合が生じます。
なので、KVMに新たにネットワークを作成しようと思います。
KVMでホストオンリーネットワークを作るの最後に書いたように、固定IPアドレスのNATネットワークを作成しておきます。

$ virsh net-dumpxml hostonly0
<network connections='1'>
  <name>hostonly0</name>
  <uuid>17c993d1-f917-47c8-8cf8-3edbcc2605b6</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='hostonly0' stp='on' delay='0'/>
  <mac address='52:54:00:d6:87:cc'/>
  <domain name='hostonly0.local'/>
  <ip address='192.168.124.1' netmask='255.255.255.0'>
  </ip>
</network>

このようになっていれば設定はOKです。
一応startしておきます。

$ virsh net-start hostonly0

既に起動していると言われれば問題無いです。

イメージの作成

VMのイメージを作成する上で注意があります。
Cuckooで利用するためにはsnapshotが作成できる必要があります。
マルウェアを動作させたあと、元の状態に戻すためです。
KVMではqcow2でsnapshotの作成が可能なので、VMを作成するときにqcow2を指定しなくてはなりません。
今回はvirt-managerを使います。
まず、virt-managerを起動して下さい。分からない人はKVMでVMのセットアップ方法とかに書いてあります。
起動すると以下の様な画面が開かれます。

kobito.1413271975.325882.png

上部で「New」をクリックします。
次に適当なVM名を指定します(ここではWindows7)。
予めISOを入手してあるので、「Local install media(ISO image or CDROM)」を選びます。

kobito.1413967504.267005.png

「Use ISO image」の「Browse」からローカルのISOを指定します。
ついでに「OS type」をWindowsとかにしておきました。

kobito.1413967653.106948.png

メモリやCPUの数などを指定したあと、storageの設定画面になりますが、ここで「Select managed or other existing storage」を選び、「Browse】を押します。

kobito.1413967745.448786.png

その後、下にある「New Volume】ボタンを押します。
適当なイメージ名を指定し(ここではWindows7.img)、Formatをqcow2にします。
これが重要です。
あとはサイズの指定ですが、今回は20GBとしました。

kobito.1413967800.419717.png

次の画面に進んで「Advanced options」のところを開き、ネットワークの設定を変えます。
今回の場合はhostonly0というネットワークを指定すればよいです。
正しくNATになっているか確認して下さい(Storageとかは8GBになってますが無視して下さい)。
kobito.1413968613.704829.png

これで「Finish」を押せば完了です。
その後、「Run」を押してVMを起動し、普通にWindowsのインストールを行って下さい。

Windowsの設定

インストールが終わったらWindowsの設定を行っていきます。

固定IPアドレスを振る

DHCPでアドレスを振らないように設定したので、自分でアドレスを振ります。
IPアドレスは192.168.124.2~254ならなんでも良いです。
DNSですが、プロバイダなどのDNSサーバを指定しても良いですし、何でも良いですが、今回は分かりやすく8.8.8.8としてあります。
kobito.1413968849.680418.png

Windows FirewallとWindows Updatesの無効化

そのままですが、FirewallとUpdateを切ります。
kobito.1413969425.756773.png
このように両方オフにします。

PythonとPILのインストール

Pythonをインストールします。
http://www.python.org/getit/
上記サイトからPython2.7をインストールして下さい。

PIL(Python Image Library)はスクリーンショットを撮る際に必要なので下記サイトからインストールして下さい。
http://www.pythonware.com/products/pil/
なお、Windowsの64bit版を使う場合、上記のインストーラだと失敗します。
非公式ですが、Unofficial Windows Binaries for Python Extension Packagesから64bit版のインストーラを落とすことが出来ます。

共有フォルダの作成

どうやら今は共有フォルダなくても動くようなのですが、あると便利なので作成しておきます。
VirtualBoxだと簡単なのですが、KVMだと少し苦戦したのでSambaを使いました。
KVM上のWindowsとホストOSでフォルダを共有する。

agent.pyの実行

agent.pyをWindows上で実行する必要があります。
これはホストのcuckooディレクトリに存在しています。
私はホームディレクトリ直下にcuckooをcloneしたので、
/home/cuckoo/cuckoo/agent/agent.py
にありました。
これを先ほどの共有フォルダ経由でWindows上に保存します。
今回はDesktopに置きました。

保存できたら、コマンドプロンプトを管理者権限で実行します。
管理者権限なのは大事です。これをし忘れたせいでしばらくハマりました。
起動したら、agent.pyを実行します。
kobito.1413969736.553426.png
画像のようにListenし始めたら成功です。

スナップショットの作成

この状態でスナップショットを作成します。
ホストマシンにログインして、以下のコマンドを打ちます。

$ virsh snapshot-create "Windows7"
Domain snapshot 1413969823 created
$ virsh snapshot-list "Windows7"
 Name                 Creation Time             State
------------------------------------------------------------
 1413969823           2014-10-22 18:23:43 +0900 running

snapshot-listで作成されているのを確認したらOKです。

これで全設定は終わりです。

次のCuckoo Sandbox on KVM(実行編)で最後です。

2
3
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
3