「CAPE v2」ではじめる実践マルウェア解析 3

「CAPE v2」で実際にマルウェア解析を試してみよう

第3回の今回は、前回までに構築した解析環境を活用して、実際に「CAPE v2」でマルウェア解析を行うための設定と解析手順、補足事項について解説します。

中村 行宏

6:30

はじめに

前回までに、マルウェアを動作させるための環境構築として、ベースOS(Windows 11)とHost OS(Ubuntu 22.04)、さらにGuest OS (Windows 10 Pro)のインストールと設定手順について解説しました。

今回は、これまでに構築した解析環境で「CAPE v2」によるマルウェア解析を行なっていきます。まず、解析環境(Host OS)に対する設定を行い、続けてCAPE v2のインストールおよび設定を進めて行きましょう。

Host OS(Ubuntu 22.04)の設定

  1. Host OS(Ubuntu 22.04)で/etc/inetsim/inetsim.confファイルを編集します(図1)。
    (編集できないときはsudo systemctl stop inetsimを実行し、編集後はsudo systemctl restart inetsimを実行します)

     

    図1:INetSim設定

  2. Host OSで下記コマンドを実行し、Detect it Easyをインストールします。

    $ cd
    $ wget https://github.com/horsicq/DIE-engine/releases/download/3.10/die_3.10_Ubuntu_22.04_amd64.deb
    $ sudo dpkg -i die_3.10_Ubuntu_22.04_amd64.deb   #(エラーになりますが、無視)
    $ sudo apt install -f
  3. Host OSで下記コマンドを実行し、volatility用の環境設定をします。

    $ sudo mkdir -p /mnt/tmpfs
    $ sudo mount -t tmpfs -o size=50g ramfs /mnt/tmpfs
    $ sudo chown cape:cape /mnt/tmpfs
    
    $ sudo gedit /etc/fstab &
    (最終行に、下記1行を追記)
    tmpfs	/mnt/tmpfs	tmpfs	nodev,nosuid,noexec,nodiratime,size=50g	0 0
    $ sudo crontab -e
    (最終行に、下記1行を追記)
    @reboot chown cape:cape /mnt/tmpfs –R
    
    $ sudo crontab -l    #(上記設定を確認)
    $ sudo reboot
  4. Host OSで下記コマンドを実行し、suricataを7.0.13から6.0.xにダウングレードします。

    $ sudo apt remove suricata suricata-update
    $ sudo apt autoremove
    $ sudo add-apt-repository ppa:oisf/suricata-6.0
    $ sudo apt update
    $ apt-cache policy suricata  # バージョンを確認(例: 1:6.0.20-0ubuntu2 )
    $ sudo apt install suricata=1:6.0.20-0ubuntu2  # 実際のバージョンを指定
    (途中で、選択肢が表示されたら、「Y」と入力)
    $ sudo apt install suricata-update
    $ sudo suricata-update
    $ sudo suricata -T -c /etc/suricata/suricata.yaml   # エラーが無いことを確認
    $ sudo systemctl restart suricata
    $ sudo systemctl restart cape*
    $ sudo systemctl status suricata
    $ sudo systemctl status cape*
  5. Host OSで/etc/suricata/suricata.yamlファイルを編集します(図2)。ファイルが編集できない場合は下記コマンドを実行し、ファイル編集してみてください。

    $ sudo systemctl stop suricata

    図2:suricata設定

  6. Host OSで下記コマンドを実行し、GeoLite2-Countryをダウンロードします。

    $ cd /opt/CAPEv2/data
    $ wget https://git.io/GeoLite2-Country.mmdb

CAPE v2のインストールと設定

ここからは、CAPE v2を使用するために設定ファイルを編集していきます。

  1. Host OSで/opt/CAPEv2/conf/api.confファイルを編集します(図3)。

    図3:CAPE v2の設定(1/10)

  2. Host OSで/opt/CAPEv2/conf/auxiliary.confファイルを編集します(図4)。

    図4:CAPE v2の設定(2/10)

  3. Host OSで/opt/CAPEv2/conf/cuckoo.confファイルを編集します(図5)。【補足】machinery_screenshots = offの設定を「on」に変更するとスクリーンショットが作成されません。バグなのかは不明です。

    図5:CAPE v2の設定(3/10)

  4. Host OSで/opt/CAPEv2/conf/memory.confファイルを編集します(図6)。

    図6:CAPE v2の設定(4/10)

  5. Host OSで/opt/CAPEv2/conf/mitmdump.confファイルを編集します(図7)。

    図7:CAPE v2の設定(5/10)

  6. Host OSで/opt/CAPEv2/conf/processing.confファイルを編集します(図8)。

    図8:CAPE v2の設定(6-1/10)

  7. 同一ファイル(processing.conf)を編集します(図9)。

    図9:CAPE v2の設定(6-2/10)

  8. Host OSで/opt/CAPEv2/conf/reporting.confファイルを編集します(図10)。

    図10:CAPE v2の設定(7/10)

  9. Host OSで/opt/CAPEv2/conf/routing.confファイルを編集します(図11)。

    図11:CAPE v2の設定(8/10)

  10. Host OS(Ubuntu 22.04)で/opt/CAPEv2/conf/virtualbox.confファイルを編集します(図12)。

    図12:CAPE v2の設定(9/10)

  11. Host OSで/opt/CAPEv2/conf/web.confファイルを編集します(図13)。

    図13:CAPE v2の設定(10/10)

  12. Host OSでTerminalを起動し、下記のコマンドを実行します。

    $ cd /opt/CAPEv2
    $ /etc/poetry/bin/poetry run pip3 install certvalidator asn1crypto mscerts
    $ /etc/poetry/bin/poetry run pip3 install -U git+https://github.com/DissectMalware/batch_deobfuscator
    $ /etc/poetry/bin/poetry run pip3 install -U git+https://github.com/DissectMalware/XLMMacroDeobfuscator.git
    $ /etc/poetry/bin/poetry run pip3 install -U git+https://github.com/CAPESandbox/httpreplay
    $ /etc/poetry/bin/poetry run pip3 install git+https://github.com/CAPESandbox/pyattck
    $ /etc/poetry/bin/poetry run pip3 install network graphviz pydot
    $ /etc/poetry/bin/poetry run pip3 install cybox==2.1.0.17 maec==4.1.0.17 mixbox==1.0.5
    $ sudo apt install python3-tk python3-distorm3 python3-pycryptodome -y
    $ cd /opt/CAPEv2/web
    $ /etc/poetry/bin/poetry run python3 manage.py migrate
    $ sudo systemctl restart suricata
    $ sudo systemctl restart cape
    $ sudo systemctl restart cape-*
    $ sudo systemctl status suricata
    $ sudo systemctl status cape
    $ sudo systemctl status cape-*

お疲れ様でした。以上でCAPE v2のインストールと設定は完了です。

CAPE v2でマルウェア解析を試してみよう

ここからは、CAPE v2の使用方法(マルウェア解析方法)について簡単に解説していきます。なお、マルウェアの解析前にGuest OS(Windows 10 Pro)の電源をOFFしておきましょう。

  1. Host OSでFirefox を起動し、下記のURLにアクセスします(図14)。
    http://localhost:8000/

    図14:マルウェアの解析(1/8)

  2. 画面上部の「Submit」をクリックすると図15のような画面になります。そこで解析したいファイルを[Select]し、解析したいマシンをプルダウンから選択するとファイルの解析が開始します。なお、デフォルトの[First available]で[Analyze]してもエラーになるため注意が必要です。

    図15:マルウェアの解析(2/8)

    ・解析結果(概要)(図16)

    図16:マルウェアの解析(3/8)

    ・解析結果(スクリーンショット)(図17)

    図17:マルウェアの解析(4/8)

    ・解析結果(ネットワーク通信)(図18)

    図18:マルウェアの解析(5/8)

    ・解析結果(メモリ解析)(図19)
    Full Memory Dump Stringsはダウンロードできません。バグかどうかは不明です。

    図19:マルウェアの解析(6/8)

    ・PCAPファイル解析結果(ネットワーク通信)(図20)

    図20:マルウェアの解析(7/8)

  3. 次は、各種Windowsイベントログの取得についてです。下記フォルダに各種のWindowsイベントログを圧縮したevtx.zipが保存されます。解凍後は図21のようになります。
    /opt/CAPEv2/storage/analyses/<task_id>/evtx/evtx.zip

    図21:マルウェアの解析(8-1/8)

    【補足】本来であれば、図22のように管理コンソールからダウンロードできるようです。バグかどうかは不明です。

    図22:マルウェアの解析(8-2/8)

以上で、マルウェア解析は完了です。あとは、ご自身で怪しげなファイルがあればファイル解析やPCAP解析を行なってみてください!

CAPE v2に関する補足

ここからは、CAPE v2に関する補足事項について説明します。

[重要] 補足1 – VirtualBox for Linux(vboxnet0が存在しない)

Host OSでNIC(vboxnet0)が存在しない場合は、一度Guest OS(Windows 10 Pro)を起動し、電源をOFFします(図23)。すると、vboxnet0 が作成されます(図24)。NIC(vboxnet0)が毎回消えてしまうのは、VirtualBoxの仕様のようです。

図23:VirtualBox for Linux(vboxnet0が存在しない)(1/2)

図24:VirtualBox for Linux(vboxnet0が存在しない)(2/2)

次に、Host OSでTerminalを起動し、下記コマンドを実行します。

$ sudo systemctl restart cape
$ sudo systemctl restart cape-*
$ sudo systemctl status cape
$ sudo systemctl status cape-*

[重要] 補足2 – “utf-8”系のエラー対処方法

解析時に”utf-8”系のエラーが表示された際は、Terminalで下記コマンドを実行し、cobweb.pyファイルを編集します(図25)。

$ cd /home/cape/.cache/pypoetry/virtualenvs/capev2-*/lib/python3.10/site-packages/httpreplay
$ gedit cobweb.py &

図25:“utf-8” 系のエラー対処方法

【補足】Python言語なので、編集時にはインデント(空白)に留意してください。

[重要] 補足3 – VMware Workstation for Linux(共有フォルダ)

共有フォルダにアクセスできない場合は、一度「無効」にして、再度「有効」にしてみてください(図26)。

図26:VMware Workstation for Linux(共有フォルダ)

[情報] 補足4 – CAPE v2 エラー確認(cape)

sudo systemctl restart capeコマンドを実行してエラーになる場合は、下記コマンドを実行してエラーになるかを確認してみてください(図27)。

$ cd /opt/CAPEv2
$ /etc/poetry/bin/poetry run python cuckoo.py

図27:CAPE v2 エラー確認(cape)

[情報] 補足4 – CAPE v2 エラー確認(cape-web)

sudo systemctl restart cape-webコマンドを実行してエラーになる場合は、下記のコマンドを実行してエラーになるかを確認してみてください(図28) 。

$ cd /opt/CAPEv2/web
$ /etc/poetry/bin/poetry run python manage.py runserver_plus 0.0.0.0:8000 --traceback --keep-meta-shutdown

図28:CAPE v2 エラー確認(cape-web)

[情報] 補足4 – CAPE v2 エラー確認(cape-processor)

sudo systemctl restart cape-processorコマンドを実行してエラーになる場合は、下記のコマンドを実行してエラーになるかを確認してみてください(図29) 。

$ cd /opt/CAPEv2/utils/
$ /etc/poetry/bin/poetry run python process.py -p7 auto -pt 900

図29:CAPE v2 エラー確認(cape-processor)

[情報] 補足5 – agentとの通信確認

Guest OS(Windows 10 Pro (x64) JP)のタスクスケジューラーに設定した(ファイル名変更前)agent.pyと通信できない場合、下記コマンドを実行してagentと通信できるか確認してみてください。

$ curl http://<Guest OS の IP アドレス>:8000/

事前にGuest OS(Windows 10 Pro (x64) JP)を起動しログインが必要です。通信が成功すると図30のようなメッセージが表示されます。

図30:agentとの通信確認

[情報] 補足6 – CAPE v2 関連のサービス状況確認

CAPE v2サービスとCAPE v2関連のサービス状況を確認するには、下記コマンドを実行します(図31) 。

$ sudo systemctl status cape
$ sudo systemctl status cape-*

図31:CAPE v2関連のサービス状況を確認

[情報] 補足7 – 各種エラー確認

下記ファイルにエラーが存在するかもしれないため、確認します(図32) 。

  • /opt/CAPEv2/log/cuckoo.log
  • /opt/CAPEv2/log/process.log
  • /opt/CAPEv2/storage/analyses/<task_id>/analysis.log
  • /opt/CAPEv2/storage/analyses/<task_id>/cuckoo.log

図32:各種エラーの確認

[情報] 補足8 – NoReverseMatchエラー画面

解析時間のタイムアウトなどでNoReverseMatchエラーが出ることがあります(図33)。解析完了後に、画面の更新(リフレッシュ)などをすると正常に解析結果が見えることがあります。

図33:NoReverseMatchエラーの画面

[情報] 補足9 – CAPE v2 アップデート

CAPE v2をアップデートする際は、Host OSのTerminalで下記のコマンドを実行します。

$ cd /opt/CAPEv2
$ sudo ./cape2.sh update

【補足】CAPE v2をアップデートする前に、ベースOS(Windows 11)上のVMware Workstation for WindowsでHost OSのスナップショットを取ることを強くお勧めします。

[情報] 補足10 – 標準ソフトのインストール

Guest OS(Windows 10 Pro)には、Windows環境でよく使用されるソフト(例: Adobe Acrobat Reader、Microsoft Office等)をインストールした後でsnapshot1を作成すると、より実環境に近いサンドボックス環境を作成できます(特にOffice系のマクロ)。


 



【参考情報】

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored