Loading...
ブログとストーリー

SpiderLabsブログ

年間50万人以上の読者を魅了しているブログがセキュリティ コミュニティの主要目的地になっているのは、最新の脅威の技術的な分析、重要な脆弱性に関する開示、最先端の研究が掲載されているからです。

Cuckoo&Linux サブシステム: Windows 10 へのいく らかの愛

私は通常マルウェア解析ラボマシンに 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 を使用し ました。

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 を実行するB
$ sudo service apache2 start
$ sudo service mysql start
$ sudo service mongodb start

ブラウザを開き、http://localhost/に行きます。以下に示すように Apache のデフォルトページ が表示されるはずです。

Apache

ホストの準備

この場合、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"

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 'を実行でき ます。

C:\> cuckoo init

Cuckoo がインストールされ、その依存関係が作成されたので、これを初期化することができま す:

%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 に変更しました

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 # The label name of my guest image
platform = windows
ip = 192.168.56.101 # The static IP of my guest image host-only adapter
snapshot = cuckoo # I created a snapshot and called it 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"を追加して編集する必要がありま す:

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 で次のようなコード行を 修正し、パケットキャプチャの作業を行いました。

Sniffer

注:デフォルト設定では、 'virtualbox.conf'に入力した IP からパケットをキャプチャしたいのです が、私の場合はインターネット接続が NAT アダプタを経由します。マルウェアのネットワークア クティビティをキャプチャできるようにするため、ホストマシンに出入りするパケット (「DESKTOP-FG7MR6D」)をキャプチャします。

ゲストの準備

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”のチェックを外す。

Vbox_network

また、ゲストイメージ内にホスト専用アダプタのスタティック IP アドレスがあることを確認してく ださい。VirtualBox Host-only アダプタのデフォルトの IP 範囲は 192.168.56.0/24 です。最後 に、Windows ファイアウォールを無効にしてください。

Vbox_guest_fw

ゲストイメージ内に Python をインストールする必要があります。Python インストーラは、こちら からダウンロードできます(https://www.python.org/downloads/)。Pillow Python モジュールも インストールする必要があります。ゲスト画像のスクリーンショットを撮るために Pillow を使用 します:

C:\> pip install Pillow

これで Python がインストールされたので、Cuckoo のエージェント( %USERPROFILE%¥.cuckoo¥agent¥agent.py)をゲストイメージにコピーできます。agent.py を実 行してから、ゲストイメージのスナップショットを作成します。

Vbox_guest_agent

Cuckoo を使う

Cuckoo を使用するには、Cuckoo 自体と同様に、組み込みの Web アプリケーションを実行しま す。次のコマンドを個別に実行できます。

C:\> cuckoo -d # To Run Cuckoo

Cuckoo

C:\> cuckoo web runserver # 組み込みの Django Web アプリケーションを実行する

処理のために Cuckoo にファイルを送信するには、ブラウザを開き、http://localhost: 8000/submit/に行きます。この Web ユーザーインターフェイスは Cuckoo のもう一つの改良点 です。以下がスクリーンショットです:

Cuckoo_result

結論

私の最初の興奮は、WSL に Cuckoo のコンポーネントをすべてインストールすることができな かったときには小さくなりましたが、WSL はまだ初期段階にあり、改善すべき点はまだまだあり ます。ですが、私は今や私のホストとして Windows を持つことができ、PC 上で多くの仮想マシ ンを立てることなく Linux 上で自分の好きなツールを使用することができてうれしいです。 Microsoft と Canonical の協力によって、最高の 2 つの世界を持つことができそうです。