オフラインマルチ(ウイルス)スキャナ「Malice」「IRMA」を使ってみよう
はじめに
前回は、サンドボックス解析によるマルウェア対策ツール「cuckoo」について解説しました。今回はOSSのオフラインマルチ(ウイルス)スキャナ「Malice」と「IRMA」について、インストール手順と簡単な使用方法を解説します。
マルチ(ウイルス)スキャナとは
そもそも、「マルチ(ウイルス)スキャナ」とは何でしょうか。少し平たく言えば、「複数のウイルススキャナ」のことです。通常ウイルススキャナは単体のスキャナで動かしますが、マルチウイルススキャナは複数のスキャナを使用します。そのため、VirusTotalのように1つの検体に対して複数のウイルススキャナでスキャンするといった挙動をします。しかも、設定次第ではVirusTotalも併用できます。
Maliceのインストール
Maliceはスキャン結果をElasticsearchに保存し、Kibanaでグラフィカルに表示します。その“裏方さん”としてDockerが動いています。
それでは、さっそくMaliceをインストールしてみましょう。以降のインストール手順を辿っていけばMaliceを使えるようになります(ただし、このインストール方法は執筆時点での環境のため、今後のバージョンや連携するソフトウェアのバージョンにより動作しないことがあります)。
今回のインストール環境は以下の通りです。
CPU数:2
メモリ:8GB(※注:8GB以上が必須条件)
HDD:1TB
OS:Kali Linux 2017.1 (64bit) English
前回の環境がない方は、まずKali Linux(https://www.kali.org/)をインストールしましょう。筆者は一番馴染みのあるDebian系のKali Linuxを使用しています。なおKali Linuxの詳細なインストール方法は割愛しますが、日本語ではなくEnglishでインストールすることをお勧めします。
インストールが終了したらKali Linux起動し、rootユーザでログインして以下のコマンドを実行します(補足が必要な箇所については適宜コメントを記載していきます)。
# apt update
# apt upgrade
# cd /etc/apt/sources.list.d/
# gedit backports.list &
(下記1行を追加)
deb http://http.debian.net/debian wheezy-backports main
# apt update
# apt install apt-transport-https ca-certificates gnupg2 dirmngr
# apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
# gedit /etc/apt/sources.list.d/docker.list &
(下記1行を追加)
deb https://apt.dockerproject.org/repo debian-jessie main
# apt update
# apt-cache policy docker-engine
(Version 1.12.5が存在することを確認)
# apt install docker-engine=1.12.5-0~debian-jessie
# usermod -aG docker $USER
# docker version
(Version 1.12.5であることを確認)
# apt install golang
# go version
(Version 1.7.6であることを確認)
# cd
# gedit .bashrc &
(最終行に下記2行を追加)
export GOPATH=$HOME
export PATH=$PATH:$GOPATH/bin
# source .bashrc
# cd /opt
# wget https://github.com/maliceio/malice/releases/download/v0.3.4/malice_linux_amd64.tar.gz
# tar xvzf malice_linux_amd64.tar.gz
# cp malice /usr/local/bin/
# echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# sysctl -w vm.max_map_count=262144
# apt-get install sysv-rc-conf
# systemctl enable docker
# sysv-rc-conf
(dockerが自動起動になっているかを確認)
# malice
# cd
# gedit .malice/config/config.toml &
(下記のように編集)
[編集前]
image = "blacktop/elasticsearch:5.3"
[編集後]
image = "blacktop/elasticsearch:5.4"
# malice plugin update --all
(updateに15分程度時間がかかる。ネットワーク環境に依存)
# malice plugin list --all --detail
# service docker restart
# malice elk
(Maliceを起動。ElasticsearchコンテナとKibanaコンテナも起動する)
# cd /opt
# mkdir Virus
# cd Virus
# wget http://www.eicar.org/download/eicar.com.txt
(擬似マルウェア「EICAR」をダウンロード)
これでMaliceのインストールは終了です。ここで、Maliceを使用するための設定を行っておきましょう。
まず、Maliceを起動し、下記のコマンドラインで擬似マルウェアにスキャンを実行します(図1)。
# malice scan eicar.com.txt
次に、Firefoxを起動してhttp://localhost/にアクセスします。図2の画面が表示されるので、画面中央の文字列「logstash-*」を「malice*」と変更します。
図3のように画面に「scan_date」と表示され、[Create]ボタンがアクティブになります。[Create]ボタンをクリックしてください。
以上で、Maliceの設定も完了です。なお、MaliceはKibanaを使用しているため、簡単にスキャン結果のグラフを作成することもできます(図4)。
Maliceの便利な機能
Maliceには「Watch」という便利な機能があります。Watch機能を使用するとMaliceは特定のフォルダを監視し続け、特定のフォルダにファイルが作成・移動されると自動的にスキャンしてくれます(図5)。
MaliceでVirusTotalを使う
次に、組織にとっては非常に重要なVirusTotalについて触れておきます。第2回でも解説しましたが、VirusTotalの有償ユーザはアップロードされたファイルをダウンロードできるため、不審なファイルでも機密性の高いファイル(文書)はアップロードすべきではありません。MaliceではVirusTotalの使用/不使用を設定できます。設定するには、下記のファイルを変更するだけです。
~/.malice/plugins/plugins.toml
[使用する場合]
[[plugin]]
enabled = true
name = "virustotal"
[使用しない場合]
[[plugin]]
enabled = false
name = "virustotal"
(設定状況はmalice plugin list --detailコマンドで確認できる(図6))
VirusTotalにファイルをアップロードしたい場合は、上記ファイル(pluglins.toml)の”virustotal”設定値(upload)をtrueに変更します(デフォルトはfalse)。
また、OS(Kali Linux)を再起動した際には、下記コマンドを実行してdockerが起動しているかを確認します。
# service docker status
起動していなければ、service docker restartコマンドで再起動します。次に、下記コマンドを実行してコンテナの状態とコンテナIDを確認します。
# docker ps -a
コンテナの状態とコンテナIDが表示されたら、elasticsearchコンテナのIDを探します(図7)。コンテナIDが「118c4fc6963f」と判明するため、このelasticsearchコンテナを再起動します(コマンドはdocker restart 118c4fc6963f)。kibanaコンテナも再起動しましょう(コマンドはdocker restart 6c670f2e0375)。
最後にFirefoxを実行して、Maliceが起動できているかを確認します(アクセスURLはhttp://localhost/)。正常であれば、図8のような画面が表示されます。
IRMAのインストール
ここからは、IRMA(Incident Response Malware Analysis)[http://irma.quarkslab.com/index.html]のインストール方法ついて解説します。IRMAもMaliceと同じマルチVirusスキャナです。大きな違いはMaliceがDockerを使用するのに対し、IRMAはAnsibleを使用している点です。また、対応しているVirusスキャナ数も異なります。IRMAでは有償のVirusスキャナも使用可能です(ただしMaliceのWatch機能はありません)。
では、早速、インストール方法を見ていきます。今回のインストール環境は下記のとおりです。
CPU数:2(※VT-xを有効にする必要がある)
メモリ:8GB
HDD:1TB
OS:Kali Linux 2017.1 (32bit) English(※32bitを使用。要注意)
それではKali Linuxを起動し、rootユーザでログインして以下のコマンドを実行していきましょう(補足が必要な箇所については適宜コメントを記載していきます)。
# apt update
# apt upgrade
# apt install git curl sysv-rc-conf
# apt install vagrant
# apt install virtualbox
# pip install ansible==2.2.1.0
# mkdir /opt/irma
# cd /opt/
# git clone https://github.com/quarkslab/irma
# vagrant plugin install vagrant-cachier
# vagrant plugin install vagrant-vbguest
# cd /opt/irma/ansible
# vagrant up
# vagrant provision
(インストールに50分程度かかる。環境に依存)
これでIRMAのインストールは終了です。Firefoxを起動してhttp://172.16.1.30にアクセスしてみましょう。図9のような画面が表示されます。なお、デフォルトで有効なスキャナは下記の6つです。
- ComodoCAVL
- StaticAnalyzer
- ClamAV
- McAfeeVSCL
- VirusTotal
- TrID
VirusTotalの有効化/無効化は、画面上の[VirusTotal]をクリック(チェックマークのON/OFF)するだけで変更できます。
ここで、実際にファイルをスキャンした結果を図10に示します(ここでは1つのファイルのみスキャンしていますが、複数のファイルもスキャン可能です)。
画面下部にある「Files details」のリンクをクリックすると、詳細な結果を確認できます(図11、図12)。
なお、過去にスキャンしたデータも検索して詳細を確認できます(図13)。
今回はデフォルトのスキャナのみを使用しましたが、設定を変更すれば更に多くのスキャナでスキャンが可能になります(図14)。
余談ですが、OS(Kali Linux)の再起動後にIRMAを使用するには、下記コマンドの実行が必要になります(コマンドを実行しないとhttp://172.16.1.30にアクセスしてもIRMAの画面は表示されません)。
# cd /opt/irma/ansible
# vagrant up
# vagrant provision
コマンド実行後にFirefoxを起動し、http://172.16.1.30にアクセスしましょう(環境に依存しますが50分程度かかります)。
おわりに
今回は、オフライン マルチ (ウイルス) スキャナである「Malice」と「IRMA」について解説しました。VirusTotal ではオンライン環境が必須ですが、MaliceやIRMAではオフライン環境でもウイルス検知が可能です。ぜひ、ご活用ください。
なお補足ですが、最新のウイルスを検知するためには定義ファイル(シグネチャ)を更新しておくことが望ましいです。更新時にはインターネット接続が必要になります。
次回からは、脆弱性の診断・検査ツールについて解説します。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- サンドボックス解析によるマルウェア対策ツール「cuckoo」を使ってみよう
- 代表的なサイバー攻撃の例とその対策法
- Elasticsearch Logstash Kibanaの環境構築
- 「Ubuntu」のパッケージ管理を学ぼう
- CoreOS&Docker環境においてOracle Database 11g Release 2をインストールするためのポイント
- Kubernetes環境を構築して、実際にコンテナを動かしてみよう
- SoftLayerでDocker環境を整えるコツ
- Dockerコンテナのオーケストレーション機能を実現するOpenStack Magnumを触ってみた
- Kubernetes環境の選択肢
- マシン・イメージを自動構築し、作業効率を高めるPacker入門