2020/02/28
最近、サイバー攻撃が増加していますが、中でもゼロデイ攻撃という問題の公表や修正プログラムが提供される前に行われる攻撃が増えています。そのため、マルウェアについては、従来のウィルススキャンソフトのように既知のマルウェアのシグネチャをもとに検知を行うようなソフトウェアでは、検知できない場合が増加しています。
そこで、未知のマルウェア対策の1つとして、サンドボックス解析という、サンドボックス上で不審なプログラムを動作させて、その挙動を動的に解析し、マルウェアを検知するという技術があります。
今回は、オープンソースのサンドボックス解析ツールのCuckoo Sandboxをインストールしてマルウェア解析を行ってみたいと思います。
今回はAWS上で以下の環境にインストールを行いました。
以下の手順で、必要なソフトウェアインストールして下さい。
今回はサンドボックスとして使用する仮想マシンとして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をインストールして下さい。
$ sudo usermod -a -G vboxusers cuckoo
$ sudo pip install -U pip setuptools
$ sudo pip install -U cuckoo
以下のコマンドを実行すると、Cuckoo Sandboxの作業ディレクトリが~/.cuckooに作成されます。
$ cuckoo -d
VirtualBoxにサンドボックスとして使用する仮想マシンをインストールします。
事前にVirtualBoxのホストオンリーアダプターを設定して下さい。
$ sudo vboxmanage hostonlyif create
$ sudo vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
$ virtualbox &
今回は以下の仮想マシンを作成しました。インストール手順は割愛しますが、ネットワークはホストオンリーアダプターでvboxnet0を設定して下さい。
Windows 7には以下の設定を行って下さい。
次に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\スタート メニュー\プログラム\スタートアップ"にコピーして下さい。
ソフトウェアのインストールが完了したら、VirtualBoxでWindowsのスナップショットを取って下さい。
今回はcuckoo01という名前でスナップショットを取るものとします。
スナップショットを取ったら、Windowsをシャットダウンして下さい。
まず、事前に以下のデーモンが起動するように設定して下さい。
# 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配下の設定ファイルの以下の個所を修正します。
...
memory_dump = yes
...
connection = postgresql://dbuser:xxxxx@localhost:5432/cuckoo
guest_profile = Win7SP1x86
[memory]
enabled = yes
[mongodb]
enabled = yes
...
machines = win7
...
[win7] # [cuckoo1]を変更して下さい。
label = win7
...
snapshot = cuckoo01
...
interface = vboxnet0
最後に以下のコマンドを実行して下さい。
$ cuckoo community
以下のコマンドを実行して、Cuckoo Sandboxを起動します。
$ cuckoo
別ターミナルから以下のコマンドを実行して、Web GUIを起動します。
$ cuckoo web
Ubuntu上からFirefoxで、http://localhost:8000/にアクセスして下さい。
"SUBMIT A FILE FOR ANALYSIS"からファイルをアップロードした後、"Analyze"を押下すると、解析が行われます。
Cuckoo Sandboxは、Web GUI以外にコマンドラインやAPIで解析を実行することが可能なので、他のソフトウェアと連携することも考えられます。