オフラインマルチ(ウイルス)スキャナ「Malice」「IRMA」を使ってみよう

2017年10月24日(火)
中村 行宏

はじめに

前回は、サンドボックス解析によるマルウェア対策ツール「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

図1:# malice scan eicar.com.txtの実行結果

次に、Firefoxを起動してhttp://localhost/にアクセスします。図2の画面が表示されるので、画面中央の文字列「logstash-*」を「malice*」と変更します。

図2:Firefoxを起動してhttp://localhost/にアクセス

図3のように画面に「scan_date」と表示され、[Create]ボタンがアクティブになります。[Create]ボタンをクリックしてください。

図3:[Create]ボタンをクリック

以上で、Maliceの設定も完了です。なお、MaliceはKibanaを使用しているため、簡単にスキャン結果のグラフを作成することもできます(図4)。

図4:スキャン結果をKibanaでグラフィカルに表示

Maliceの便利な機能

Maliceには「Watch」という便利な機能があります。Watch機能を使用するとMaliceは特定のフォルダを監視し続け、特定のフォルダにファイルが作成・移動されると自動的にスキャンしてくれます(図5)。

図5:MaliceのWatch機能で特定のファイルを監視できる

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))

図6:VirusTotalの使用/未使用の確認

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)。

図7:# docker ps -aコマンドでコンテナの状態とコンテナIDを確認

最後にFirefoxを実行して、Maliceが起動できているかを確認します(アクセスURLはhttp://localhost/)。正常であれば、図8のような画面が表示されます。

図8:http://localhost/にアクセスしてMaliceの起動を確認

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

図9:IRMAの起動画面。デフォルトの有効スキャナが表示される

VirusTotalの有効化/無効化は、画面上の[VirusTotal]をクリック(チェックマークのON/OFF)するだけで変更できます。

ここで、実際にファイルをスキャンした結果を図10に示します(ここでは1つのファイルのみスキャンしていますが、複数のファイルもスキャン可能です)。

図10:IRMAでファイルをスキャン実行した結果

画面下部にある「Files details」のリンクをクリックすると、詳細な結果を確認できます(図11、図12)。

図11:詳細なスキャン結果の確認(1)

図12:詳細なスキャン結果の確認(2)

なお、過去にスキャンしたデータも検索して詳細を確認できます(図13)。

図13:IRMAでは過去にスキャンしたデータも検索できる

今回はデフォルトのスキャナのみを使用しましたが、設定を変更すれば更に多くのスキャナでスキャンが可能になります(図14)。

図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ではオフライン環境でもウイルス検知が可能です。ぜひ、ご活用ください。

なお補足ですが、最新のウイルスを検知するためには定義ファイル(シグネチャ)を更新しておくことが望ましいです。更新時にはインターネット接続が必要になります。

次回からは、脆弱性の診断・検査ツールについて解説します。

ライター
SIer にて、システム開発/構築や社内インフラを担当。その後、セキュリティベンダーに移り、セキュリティ診断(NW、Web、DB)に従事。また、本の執筆や講師も務める。
著書:図解即戦力 情報セキュリティの技術と対策がこれ1冊でしっかりわかる教科書、【イラスト図解満載】情報セキュリティの基礎知識

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています