Cuckoo Sandboxでマルウェアのサンドボックス解析

schedule 2020/02/28  refresh 2023/11/08

 

最近、サイバー攻撃が増加していますが、中でもゼロデイ攻撃という問題の公表や修正プログラムが提供される前に行われる攻撃が増えています。

 

そのため、マルウェアについては、従来のウィルススキャンソフトのように既知のマルウェアのシグネチャをもとに検知を行うようなソフトウェアでは、検知できない場合が増加しています。

 

そこで、未知のマルウェア対策の1つとして、サンドボックス解析という、サンドボックス上で不審なプログラムを動作させて、その挙動を動的に解析し、マルウェアを検知するという技術があります。

 

今回は、オープンソースのサンドボックス解析ツールのCuckoo Sandboxをインストールしてマルウェア解析を行ってみたいと思います。

 

環境

今回はAWS上で以下の環境にインストールを行いました。

 

  • インスタンスタイプ:t3a.medium
  • vCPU: 2
  • メモリ: 4GB
  • OS: Ubuntu 18.04.4 LTS

 

必要なソフトウェアのインストール

以下の手順で、必要なソフトウェアインストールして下さい。


今回はサンドボックスとして使用する仮想マシンとしてVirtualBoxを使用します。

 

$ sudo apt-get install python python-pip python-dev libffi-dev libssl-dev
$ sudo apt-get install python-virtualenv python-setuptools
$ sudo apt-get install libjpeg-dev zlib1g-dev libfuzzy-dev swig
$ sudo apt-get install mongodb
$ sudo apt-get install postgresql libpq-dev
$ sudo apt-get install virtualbox
$ sudo apt-get install tcpdump apparmor-utils
$ sudo apt-get install ubuntu-desktop tigervnc-standalone-server
$ sudo adduser cuckoo
$ sudo groupadd pcap
$ sudo usermod -a -G pcap cuckoo
$ sudo chgrp pcap /usr/sbin/tcpdump
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
$ sudo pip install distorm3
$ sudo pip intall m2crypto
$ sudo pip install psycopg2

 

pydeepをインストールします。

 

$ git clone https://github.com/kbandla/pydeep.git
$ cd pydeep
$ python setup.py build
$ python setup.py test
$ sudo python setup.py install

 

Volatilityをインストールします。

 
$ git clone https://github.com/volatilityfoundation/volatility.git
$ cd volatility
$ python setup.py build
$ sudo python setup.py install

 

 

Cuckoo Sandboxのインストール

以下の手順でCuckoo Sandboxをインストールして下さい。

 

$ sudo usermod -a -G vboxusers cuckoo
$ sudo pip install -U pip setuptools
$ sudo pip install -U cuckoo

 

以下のコマンドを実行すると、Cuckoo Sandboxの作業ディレクトリが~/.cuckooに作成されます。

 

$ cuckoo -d
 

 

仮想マシン(Windows 7)のインストール

VirtualBoxにサンドボックスとして使用する仮想マシンをインストールします。


事前にVirtualBoxのホストオンリーアダプターを設定して下さい。

 
$ sudo vboxmanage hostonlyif create
$ sudo vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
$ virtualbox &

 

今回は以下の仮想マシンを作成しました。インストール手順は割愛しますが、ネットワークはホストオンリーアダプターでvboxnet0を設定して下さい。

 

  • OS: Windows 7
  • メモリ: 2GB
  • HDD: 32GB
  • 仮想マシンの名前: win7(任意)

 

Windows 7には以下の設定を行って下さい。

 

  • Windows Updateの重要な更新プログラム
    →[更新プロブラムを確認しない]を選択
  • ネットワークの場所の設定
    →[社内ネットワーク]を選択
  • ユーザアカウント制御設定を”通知しない”に変更する
  • Windowsファイアウォールを無効にする
  • フォルダーオプション
    →[隠しファイル、隠しフォルダー、および隠しドライブを表示する]をチェック
    →[登録されている拡張子は表示しない]のチェックを外す
  • TCP/IP設定
    IPアドレス: 192.168.56.101
    サブネットマスク: 255.255.255.0
    デフォルトゲートウェイ: 192.168.56.1

 

次にVirtualBoxの[Devices] →[Insert Guest Additions CD image...]をクリックして、エクスプローラのCD ドライブの”VBoxWindowsAdditions”から「VirtualBox Guest Additions」をインストールして下さい。


UbuntuとWindows 7でのファイル共有を行うため、Ubuntu上に共有用のフォルダを作成し、VirutalBoxの”win7”のメニューの[共有フォルダー]から先程作成した共有用のフォルダを設定します。

 

次に以下のソフトウェアをインストールして下さい。


Pythonをインストールするときは、[Add python.exe to Path]オプションを有効にして下さい。
agent.pyはUbuntuの"~/.cuckoo/agent/agent.py"を共有フォルダを使って、Windowsの"C:\ユーザー\<ユーザ名>/AppData\Roaming\Microsoft\Windows\スタート メニュー\プログラム\スタートアップ"にコピーして下さい。

 

  • Python 2.7
  • PIL 1.1.7
  • agent.py
  • Adobe Acrobat Reader
  • Microsoft Office
  • Flash Player
  • Java
  • .NET Framework
  • etc

 

ソフトウェアのインストールが完了したら、VirtualBoxでWindowsのスナップショットを取って下さい。
今回はcuckoo01という名前でスナップショットを取るものとします。
スナップショットを取ったら、Windowsをシャットダウンして下さい。

 

Cuckoo Sandboxの設定

まず、事前に以下のデーモンが起動するように設定して下さい。

 

# systemctl start postgresql
# systemctl enable postgresql
# systemctl start mongodb
# systemctl enable mongodb
# su postgres
# psql
# CREATE USER dbuser WITH PASSWORD 'xxxxx';
# CREATE DATABASE cuckoo;
# GRANT ALL PRIVILEGES ON DATABASE cuckoo TO dbuser;

 

~/.cuckoo/conf配下の設定ファイルの以下の個所を修正します。

 

 

cuckoo.conf

 

...
memory_dump = yes
...
connection = postgresql://dbuser:xxxxx@localhost:5432/cuckoo

 

 

momory.conf

 

guest_profile = Win7SP1x86

 

 

processing.conf

 

[memory]
enabled = yes
 

 

reporing.conf

 

[mongodb]
enabled = yes

 

 

virtualbox.conf

 

...
machines = win7
...
[win7] # [cuckoo1]を変更して下さい。
label = win7
...
snapshot = cuckoo01
...
interface = vboxnet0

 

最後に以下のコマンドを実行して下さい。

 

$ cuckoo community

 

 

Cuckoo Sandboxの実行

以下のコマンドを実行して、Cuckoo Sandboxを起動します。

 

$ cuckoo

 

別ターミナルから以下のコマンドを実行して、Web GUIを起動します。

 

$ cuckoo web

 

Ubuntu上からFirefoxで、http://localhost:8000/にアクセスして下さい。


"SUBMIT A FILE FOR ANALYSIS"からファイルをアップロードした後、"Analyze"を押下すると、解析が行われます。

 

 

 

Cuckoo Sandboxは、Web GUI以外にコマンドラインやAPIで解析を実行することが可能なので、他のソフトウェアと連携することも考えられます。