自社内でファイル解析
例えば、取引先(お客様)から添付ファイルが届いたとき、ウイルス対策ソフトでスキャンするか、サンドボックスで解析するといったことを行うと思います。ウイルス対策ソフトでは検知できない可能性もあり、またサンドボックスは高額で導入できていないケースも多いでしょう。そのようなときに社内にファイル解析環境があれば、セキュリティベンダーにファイル解析依頼をせずに、自社内でファイル解析できます。
「CAPE v2」(ケイプ)とは
「Config And Payload Extraction v2」はマルウェアを安全な仮想環境で実行し、その挙動・通信・生成ファイル(ペイロード)を自動解析するためのオープンソース・マルウェアサンドボックスです。もともと「Cuckoo Sandbox」を拡張・発展させたプロジェクトで、実運用・研究レベルの解析に向いています。
CAPE v2で何ができるのか
CAPE v2は、自動で次のことを実行します。
- マルウェアを隔離された仮想マシン(VM)で実行
- 実行中の挙動を詳細に監視
- 通信内容(C2通信など)を記録
- ドロップされたファイル・復号されたペイロードを抽出
- 解析レポートをWeb画面で可視化
これらのことから、「実際に感染させて何が起きるかを見る」ための解析基盤であると言えます。
マルウェア解析環境を構築してみよう
それでは、マルウェア解析環境を構築していきましょう。その前に、ここで今回作成するマルウェア解析環境の仕様を説明します。
- ベースOS: Windows 11(x64) JP with VMware Workstation Pro for Windows
- メモリ: 32GB以上
- ストレージ: 500GB以上
- Host OS: Ubuntu 22.04(x64) with VirtualBox for Linux
- Guest OS: Windows 10 Pro(x64) JP
ベースOSである「Windows 11(x64) JP」に「VMware Workstation Pro for Windows」をインストールし、その上にHost OSとして「Ubuntu 22.04」を構築します。さらに、このUbuntu 22.04に「VirtualBox for Linux」をインストールし、その仮想環境上にGuest OSとして「Windows 10 Pro(x64) JP」を導入します。
Windows 10 Proを選択した理由は、Proエディション以上であればgpeditコマンドが使用できるためです。Homeエディションでは、標準では gpeditコマンドを実行できません。ベースOS、Host OS、Guest OSの構成は図1のようになります。
前提として、ベースOSのWindows 11(x64)がインストール済みでメモリが32GB以上あり、ストレージも500GB以上あるものとします。
- VMware Workstation Pro for WindowsをBroadcom社の公式サイトからダウンロードします。ダウンロード先フォルダはどこでも構いませんが、ここでは「C:¥VM_share」フォルダに保存します。
ダウンロードにはBroadcom社のアカウントが必要になります。画面右上の「LOGIN」プルダウンから無償でアカウント登録(REGISTER)可能です。
図2:ProductDownloads - Support Portal - Broadcom support portal - Host OSであるUbuntu 22.04のインストールISOをダウンロードして(図3)「C:¥VM_share」フォルダに保存します(C:\VM_shareフォルダは作成推奨)。
図3:Ubuntu 22.04 ダウンロード - Guest OSであるWindows10 (x64) JPをダウンロードします。すぐにISOファイルだけをダウンロードできないので、まず、ISOイメージダウンロード用のソフトウェア「MediaCreationTool_22H2.exe」をダウンロードします(図4)。
ダウンロードしたexeファイルを実行後、[同意する]→[別のPCのインストールメディアを作成する(USBフラッシュドライブ、DVD、またはISOファイル)]→[次へ]→[ISOファイル]→ここでは「C:¥VM_share」フォルダに保存します。ファイル名は「win10x64jp.iso」とします。
図4:Windows 10のISOイメージダウンロード用のソフトウェア - Guest OSにインストールが必要な「Python 3.12 for Windows」をダウンロードします(図5)。なお、注意点として必ず32-bit版をダウンロードしてください。64-bit版でもARM64版でもありません。
図5:Python 3.12 for Windowsダウンロード - ベースOSが「INTEL VT-x」に対応しているか確認します。簡単な確認方法として、仮想化支援機能に関するCPUの対応状況を手軽にチェックできるツール「VirtualChecker」を活用するやり方があります。
INTEL VT-xが有効になっていると、図6のように「VIRTUALIZATION INTEL VT-x/AMD-V [Enabled]」と表示されます。「Enabled」になっていない場合は、BIOS/UEFIなどでINTEL VT-xを有効にする必要があります。多くの低電圧PC向けCPUでもサポートされていますが、特定のモデルや世代によっては非対応の場合もあるため確認が必要です。
図6:INTEL VT-xに対応しているかを確認 - ベースOS(Windows 11)にVMware Workstation Pro for Windowsをインストールします。インストールは全てデフォルト設定でOKです。
- VMware Workstation Pro for Windowsで、Host OS(Ubuntu 22.04)をインストールします。設定例は下記のとおりです。
- メモリ: 16,384MB以上
- プロセッサ: 2以上
([Intel VT-x/EPTまたはAMD-V/RVIを仮想化]を有効(図7)) - ハードディスク: 500GB以上
- ネットワークアダプタ: NAT
- USBコントローラ: USBの互換性[USB 3.2]
- ホスト名: (例: capev2)[任意]
- ユーザ名: (例: yuki)[任意]
補足になりますが、サウンドカードは不要なので削除しました(図7)。また、Ubuntu 22.04インストール後にVMware Workstation Pro for Windowsでスナップショットを取っておくと便利なので、強くお勧めします。
図7:Ubuntu 22.04インストール - Ubuntu 22.04インストール時に作成したユーザでUbuntu 22.04にログインし、Terminalを起動して下記コマンドを実行します。
これ以降のUbuntu 22.04での操作は、全てcapeユーザで実行します。$ sudo passwd #(root ユーザに、任意のパスワードを設定) $ sudo adduser cape #(cape ユーザに、任意のパスワードを設定) $ sudo usermod -aG sudo cape $ groups cape #(“cape sudo” と表示されたら、OK) $ sudo apt update $ sudo apt install git curl net-tools gedit open-vm-tools-desktop -y $ sudo reboot #(Ubuntu 22.04 再起動) $ sudo apt install gcc-12 g++-12 -y $ sudo swapoff -a $ sudo rm -f /swapfile $ sudo fallocate -l 16G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile $ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab $ sudo gedit /etc/sysctl.conf & vm.swappiness=10 #(末尾に追記) $ sudo sysctl -p - Host OS(Ubuntu 22.04)に「VirtualBox 7.2.4 for Linux」をインストールします。Host OS(Ubuntu 22.04)でTerminalを起動して、下記コマンドを実行します。
$ sudo apt install libxcb-cursor0 gcc make perl -y $ wget https://download.virtualbox.org/virtualbox/7.2.4/virtualbox-7.2_7.2.4-170995~Ubuntu~jammy_amd64.deb $ sudo dpkg -i virtualbox-7.2_7.2.4-170995~Ubuntu~jammy_amd64.deb - ベースOS(Windows 11)でVMware Workstation Pro for Windowsの仮想マシンのプロパティを変更([共有フォルダ]を有効)します(図8)。共有フォルダには、先に作成した「C:¥VM_share」を設定します。
図8:共有フォルダ設定 - Host OS(Ubuntu 22.04)で[共有フォルダ(/mnt/hgfs/VM_share)]にアクセスし、「python-3.12.0.exe」と「win10x64jp.iso」ファイルをHomeにコピーします(図9)。
図9:.exeファイルと.isoファイルのコピー - Ubuntu 22.04でTerminalを起動し、下記コマンドを実行します。
$ cd /opt $ sudo git clone https://github.com/kevoreilly/CAPEv2.git $ sudo chown -R cape:cape * $ cd CAPEv2 $ sudo ./installer/cape2.sh all cape #(10分程度 待機) $ sudo -u cape /etc/poetry/bin/poetry run pip install -r extra/optional_dependencies.txt $ sudo reboot $ sudo chmod a+x /opt/CAPEv2/data/NETReactorSlayer.CLI $ /etc/poetry/bin/poetry run pip3 install ImageHash $ sudo apt install p7zip-full $ sudo chown cape:cape /opt/CAPEv2/data/7zz $ sudo chmod +x /opt/CAPEv2/data/7zz - Ubuntu 22.04でVirtualBox for Linuxを起動し、[File]→[Tools]→[Network]→[Create]を選択すると「vboxnet0」が作成されます(図10)。
図10:Host-only Networks作成 - 続けて、VirtualBox for Linuxで[File]→[Tools]→[Network]→[NAT Networks]→[Create]を選択すると「NatNetwork」が作成されます(図11)。
図11:NAT Networks作成
以上で「CAPE v2」のインストールは完了です。お疲れさまでした。次回も、引き続きマルウェア分析環境の構築を行なっていきます。次回はGuest OS(Windows 10 Pro)をインストールします。