Cuckoo&Linux サブシステム : Windows 10 へのいく らかの愛 発行 : 2017/8/25 著者 : Gerald Carsula 私は通常マルウェア解析ラボマシンに Linux を使用しています しかし最近 Windows Subsystem for Linux(WSL) に興味を持っており それを試してみるべきだと思いました 今のところ Linux から 私たちが Trustwave SpiderLabs で使っている Windows のリバースエンジニアリングツールと並んで使う多くのツールにアクセスできるのが楽しいです Cuckoo Sandbox は 私が Linux で使用するツールの 1 つです 私は それがインストールするのが簡単ではない時代から使ってきました しかし Cuckoo 2.0 では pip install cuckoo と同じくらい簡単にできました 私は WSL の調査を始めたいので この投稿を書くことにしました Cuckoo の公式ドキュメントには現在 Windows ホスト上でセットアップする方法に関する情報がないので 試してみたいと思っている人に役立つことを願っています 始めましょう! 最初のステップとして 私は Cuckoo のコンポーネントのどれが WSL の下にインストールできるかを調べました 実際の Linux カーネルを使用していないため WSL ですべてがサポートされているわけではありません これが VirtualBox のようなアプリや tcpdump のようなネットワーキングツールのようなアプリで 現在 WSL の下ではサポートされていない理由です インストールの準備のために WSL 配下にインストール可能なコンポーネントと Windows 配下にインストールされるコンポーネントを分割します たとえば WSL 配下に LAMP サーバー (Linux-Apache-Mysql-Php) をインストールし 残りのツールは Windows ホストにインストールしました Cuckoo は組み込みの Django Web アプリケーションを使用しているので Apache は必須ではありませんが マルウェア分析のために毎日使用しているので 私は Apache をインストールしました これは私がマルウェアを騙し データの抽出プロセスを制御することを可能にします 私はまた デフォルトのデータベース SQLite の代わりに Cuckoo のために MySQL を使用しました Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 1
Linux 用 Windows サブシステムのセットアップ まず Windows Subsystem for Linux をインストールする必要があります ここに良い説明があります :https://msdn.microsoft.com/en-us/commandline/wsl/install_guide WSL をインストールしたら Bash on Ubuntu on Windows アプリを開いて 次のようにします: # 最新のアップデートを入手する $ sudo apt-get update $ sudo apt-get upgrade # LAMP サーバーをインストールする $ sudo apt-get install lamp-server ^ # MongoDB をインストールする $ sudo apt-get install mongodb # Apache MySQL MongoDB を実行する $ sudo service apache2 start $ sudo service mysql start $ sudo service mongodb start ブラウザを開き http://localhost/ に行きます 以下に示すように Apache のデフォルトページが表示されるはずです Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 2
ホストの準備 この場合 Windows 10 は私たちのホストであり そこで Cuckoo や他の依存関係をインストールします Cuckoo は 2.0 で多くの改善を行いました その 1 つはインストールプロセスで 次のように簡単です : C:\> pip install cuckoo オプションで Yara と Volatility もインストールできます Windows で Yara をインストールするには 次の手順に従ってください : http://yara.readthedocs.io/en/v3.4.0/gettingstarted.html#installing-on-windows Volatility をインストールするには 次のコマンドを実行します : C:\> pip install distorm3 C:\> pip install pycrypto C:\> pip install volatility Yara for Python と Volatility が正しくインストールされているかどうかをテストするには エラーなしで以下を実行できるか確認してください : C:\> python -c "import yara" C:\> python -c "import volatility" Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 3
MySQL 用の Python モジュールもインストールする必要があります インストールするには 次のコマンドを実行します : C:\> easy_install mysql-python 注 : この Python モジュールには easy_install を使用しました プレコンパイル済みの Python Egg がすでにリポジトリにアップロードされているようです あなたが pip を望むなら mysql-python の Wheel(.WHL) ファイルをこのリンクからダウンロードし ' pip install <WHEEL_FILE> ' を実行することができます また 適切な開発環境があり ソースから mysql-python をコンパイルしたい場合は 代わりに ' pip install mysql-python ' を実行できます Cuckoo がインストールされ その依存関係が作成されたので これを初期化することができます : C:\> cuckoo init それは次のパスに Cuckoo Working Directory (CWD) を作成します : %USERPROFILE%\.cuckoo(C:\Users\<username>\.cuckoo) CWD セットアップで Cuckoo の設定を開始できます これを行うには Windows エクスプローラーで '%USERPROFILE%.cuckoo conf' に移動し 次の設定ファイルを変更する必要があります : cuckoo.conf [ データベース ] connection = mysql://cuckoo:cuckoo@127.0.0.1/cuckoo # 注 : 私はパスワードとして cuckoo データベース名に cuckoo という MySQL ユーザー cuckoo を作成しました auxillary.conf [sniffer] enabled = yes tcpdump = c:\tools\tcpdump\tcpdump.exe # 注 : ロケーションパスは windump.exe のインストール場所によって異なります そして windump.exe の名前を tcpdump.exe に変更しました Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 4
virtualbox.conf [virtualbox] path = C: Program Files Oracle VirtualBox VBoxManage.exe interface = Device NPF_ {57998A2E-0606-4E86-A107-E7856A3794A3} # 注 : すべてのネットワークインターフェイスを一覧表示するには コマンド : # C:\tools\tcpdump> tcpdump.exe -D machines = cuckoo1 [cuckoo1] label = Win7x64 # ゲストイメージのラベル名 platform = windows ip = 192.168.56.101 # ゲストイメージの host-only adapter のスタティック IP snapshot = cuckoo # スナップショットを作成し それを cuckoo と命名 reporting.conf [mongodb] enabled = yes 次に 次のコマンドを実行して コミュニティベースの Cuckoo Signatures をダウンロードします : C:\> cuckoo community Tcpdump WinDump は基本的には Windows プラットフォーム用の tcpdump で 以下からダウンロードできます : https://www.winpcap.org/windump/install/default.htm WinDump のデフォルトのファイル名は windump.exe です インストール時に tcpdump.exe という名前に変更しました さらに Cuckoo には sniffer.py (C: Python27 Lib site-packages cuckoo auxiliary sniffer.py ) という Tcpdump のラッパーがあります tcpdump を呼び出し その出力を解析します 唯一の問題は Windows での tcpdump の出力が 出力に r を追加する場合と少し違っていることです このため 正しく動作させるためには sniffer.py を微調整する必要がありました 同じ変更を行うには sniffer.py ファイルを開き 次の行に "\r" を追加して編集する必要があります : Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 5
for line in err.split("\r\n"): if not line continue or line.startswith(err_whitelist_start): continue 注 : "\r" が追加されました 次のように編集することもできます : err_whitelist_start =( "tcpdump:listening on", "c:\\tools\\tcpdump\\tcpdump.exe:listening on", ) 注 : パスには tcpdump.exe をインストールした場所への実際のパスが反映されている必要があります また sniffer.py は インターネットアクセスと Cuckoo エージェントとの通信の両方に対して 1 つのネットワークアダプタしか想定していないようです ただしここでの練習では 2 つのネットワークアダプタを使用するようにゲストイメージをセットアップしました このブログの次のセクション ゲストの準備 でこれについてさらに述べます 私は sniffer.py で次のようなコード行を修正し パケットキャプチャの作業を行いました 注 : デフォルト設定では 'virtualbox.conf' に入力した IP からパケットをキャプチャしたいのですが 私の場合はインターネット接続が NAT アダプタを経由します マルウェアのネットワークアクティビティをキャプチャできるようにするため ホストマシンに出入りするパケット ( DESKTOP-FG7MR6D ) をキャプチャします Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 6
ゲストの準備 VirtualBox を使用して仮想マシンを作成し 2 つのネットワークアダプタをセットアップします 1 つは Host-Only で もう 1 つは NAT です Host-Only アダプタは NAT アダプタがインターネットアクセス用である間に Cuckoo によってゲストイメージ内のエージェントと通信するために使用されます Linux での Cuckoo 設定では インターネットアクセスと Cuckoo Agent の両方の通信用に Host-Only アダプタが 1 つだけ必要です 私はまだ Windows ホストでその可能性を探っていませんが もしあなたがするのであれば 私はそれを聞けてうれしいです DHCP を無効にして Host-Only アダプタを構成するには 次の手順を実行します 1. VirtualBox Manager を開く 2. File > Preferences > Network をクリックする 3. Host-only Networks タブをクリックする 4. VirtualBox Host-Only Ethernet Adapter をハイライトし Edit( スクリュードライバのようなアイコン ) をクリックする 5. DHCPServer タブをクリックする 6. Enable Server のチェックを外す Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 7
また ゲストイメージ内にホスト専用アダプタのスタティック IP アドレスがあることを確認してく ださい VirtualBox Host-only アダプタのデフォルトの IP 範囲は 192.168.56.0/24 です 最後 に Windows ファイアウォールを無効にしてください ゲストイメージ内に Python をインストールする必要があります Python インストーラは こちらからダウンロードできます (https://www.python.org/downloads/) Pillow Python モジュールもインストールする必要があります ゲスト画像のスクリーンショットを撮るために Pillow を使用します : C:\> pip install Pillow これで Python がインストールされたので Cuckoo のエージェント ( %USERPROFILE%.cuckoo agent agent.py) をゲストイメージにコピーできます agent.py を実行してから ゲストイメージのスナップショットを作成します Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 8
Cuckoo を使う Cuckoo を使用するには Cuckoo 自体と同様に 組み込みの Web アプリケーションを実行します 次のコマンドを個別に実行できます C:\> Cuckoo d # Cuckoo を実行する Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 9
C:\> cuckoo web runserver # 組み込みの Django Web アプリケーションを実行する処理のために Cuckoo にファイルを送信するには ブラウザを開き http://localhost: 8000/submit/ に行きます この Web ユーザーインターフェイスは Cuckoo のもう一つの改良点です 以下がスクリーンショットです : Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 10
結論 私の最初の興奮は WSL に Cuckoo のコンポーネントをすべてインストールすることができなかったときには小さくなりましたが WSL はまだ初期段階にあり 改善すべき点はまだまだあります ですが 私は今や私のホストとして Windows を持つことができ PC 上で多くの仮想マシンを立てることなく Linux 上で自分の好きなツールを使用することができてうれしいです Microsoft と Canonical の協力によって 最高の 2 つの世界を持つことができそうです Copyright 2017 Trustwave Holdings, Inc. All rights reserved. 11