今回は企業のシステム管理者向け記事として、「JPCERT」が提供している「Emotet感染検出ツール」を社内端末で効率的に実行させるバッチプログラムを紹介します。
C&Cサーバーが駆逐され、いったん終息したEmotetですが、ここ最近再度観測されだしています。
そのため、以前に作成した当記事を部分的に最新の情報でリライトすることにしました。
よって、古い情報と新しい情報が混在して読み辛いかも知れません。
ご了承ください。
現在Emotetが再流行しており、OutlookだけではなくThunderbirdにも対応するなどバージョンアップしております。
2022年度版のEmotetに対応したEmoCheckをJPCERTがリリースしたため、当記事も併せて加筆しております。
現在感染が拡大しだしている「Emotet」とは
まずは以下のリンク先のページを参照してください。
「Emotet」は2019年末頃から世に出回り始め、いったん沈静化した後、最近になって再度活性化して被害が拡大しだしているマルウェアです。
主にEメールに添付されたWord等のファイルをマクロが有効な状態で開いたり、本文内に貼られているURLのリンクを開くことで感染します。
※最近は、セキュリティ製品による検知や検疫をすり抜けるためにパスワード付きZipで添付されるケースもあるそうです。
正確にはこの時点ではまだ感染はしておらず、添付ファイルに組み込まれたマクロがインターネット上のC&Cサーバなどを介してEmotet本体をダウンロードして実行します。
そこで所謂「感染」状態になります。
このマルウェアの恐ろしいところは、感染端末のOutlookからメールのやり取りをしているメールアドレスを収集し、そこに対してスパムメールを送りつけたり、感染を広げるためのメールを送り付けたりします。
そのため、マルウェアの被害者だったのが一転して取引先や顧客にマルウェアの感染を広げる加害者になり得るというところです。
また、ばらまかれるメールの文面は非常に巧妙で、以前によくあった明らかに日本語が怪しいといったあからさまな内容ではなく、日本の商習慣なども考慮された、一見しただけでは正常なメールと見分けが付かない場合もあります。
詳しい特徴や仕組みについては上記の各リンクをご確認ください。
JPCERTが提供している「Emotet感染検出ツール」とは
日本国内のコンピューターセキュリティインシデントに対する発生報告の受付窓口や国内外の他組織との調整、技術支援、セキュリティ対策の推進活動や各種啓蒙活動などを行う非営利団体であり、日本のサイバーセキュリティの要です。
参考までにWikipediaのリンクも貼っておきます。
JPCERT/CC -Wikipedia-
JPCERTは、「Emotet」に感染した端末を検出するツールをWindowsの実行ファイル形式(.exe)やコンパイル前のソースとしてインターネット上で公開してくれています。
そのため、誰でも無償でそのツールを取得して実行することが可能です。
対象のツールは「GitHub」で公開されており、以下のURLからダウンロードが可能です。
※現時点(2020年9月時点)での最新バージョンはv1.0
※追記:2021年11月時点の最新バージョンはv2.0.0
※追記:2022年3月時点の最新バージョンはv2.1.1
Windowsの64bit版であれば「emocheck_v1.0_x64.exe」「emocheck_v2.0_x64.exe」「emocheck_v2.1.1_x64.exe」を、32bit版であれば「emocheck_v1.0_x86.exe」「emocheck_v2.0_x86.exe」「emocheck_v2.1.1_x86.exe」をダウンロードしてください。
「Emotet感染検出ツール」の基本的な使い方
何も難しい操作や設定は不要で、実行環境のOSのアーキテクチャに合わせて64bit用か32bit用の上記exeを実行するだけです。
実行するとコマンドプロンプトが起動し、コンソールで実行結果を表示します。
また、実行ファイルのカレントディレクトリに実行結果をテキストファイル形式で出力してくれます。
通常の使い方としてはこれだけです。
非常に簡単に使用できますが、もしシステム管理者が「社内の全端末にこのツールを実行させて、その実行結果を一元的に収集したい」と考えた場合は色々と問題が発生します。
社内の端末が64bitと32bitで混在している環境の場合、社内の各社員が自身の端末のOSを確認し、どちらの実行ファイルを使用すべきか判断することが必要になるが、非IT系職種の社員にその作業を正確に実施させることは困難。
当実行ファイルは実行後、既定値では実行ファイルが置かれているカレントディレクトリにテキストファイルで実行結果を出力します。
システム管理者としてはそのファイルをすべての端末から回収する必要がありますが、そのファイルの回収作業を各端末を使用している社員に頼んでも適切に実施してもらえるか不確かであり、その管理や調整は対象端末が多いほど大きな労力が必要になる。
実行ファイルは過去に何度かバージョンアップしており、今後も新しいバージョンがリリースされる可能性があります。
その場合は社内の端末に配布した実行ファイルも置き換える必要がありますが、初回の配布と同様に多大な労力が必要になる。
JPCERTが作成してくれたEmotet感染検出ツールはシンプルで軽快で優秀なツールですが、シンプルがために企業で効率良く活用するには、各利用環境によって何らかの工夫が必要です。
「Emotet感染検出ツール」実行用のバッチプログラムの作成
そこで今回は「Emotet感染検出ツール」を効率的に配布、実行、結果の収集をするためのバッチプログラムを作成します。
バッチ処理で実装する機能
バッチプログラムはどのWindows端末でも実行できるように「bat」形式とします。
batで実装する処理は以下です。
- クライアント端末のアーキテクチャを自動判別して適切な64bit、32bit用のファイルを実行する。
- 配布する実行ファイルは、GitHubから直接ダウンロードさせ、実行が完了したらパソコン内から削除する。
- 実行結果を出力したテキストファイルはバッチで指定した共有フォルダに吐き出されるようにする。
- バッチを端末のバックグランドで自動実行させることも想定し、バッチのプロセスや実行ファイルの処理が完了したら自動的に終了されるようにする。
サンプルプログラム
上項の「バッチ処理で実装する機能」で定義した内容を踏まえて、実際に作成したbatプログラムは以下です。
@echo off
cd /d %~dp0
REM 実行結果ファイルの出力先を指定します。
SET output_dir="\\ファイルサーバーホスト名\ファイルサーバ共有フォルダ\emochk_result"
REM 自端末のアーキテクチャが32bitか64bitかを判定して実行ファイル名を変数にセットします。
set PF32=%ProgramFiles(x86)%
if exist !%PF32%! (
SET emochk_exe=emocheck_v2.1.1_x64.exe
) else (
SET emochk_exe=emocheck_v2.1.1_x86.exe
)
REM emocheckツールをgithubからダウンロードしてデスクトップに配置します。
REM call bitsadmin /transfer emochk_dl https://github.com/JPCERTCC/EmoCheck/releases/download/v2.1.1/%emochk_exe% %USERPROFILE%\Desktop\%emochk_exe%
REM emocheckツールをgithubからダウンロードしてパブリックのダウンロードフォルダに配置します。
call bitsadmin /transfer emochk_dl https://github.com/JPCERTCC/EmoCheck/releases/download/v2.1.1/%emochk_exe% %PUBLIC%\Documents\%emochk_exe%
REM ダウンロード処理でエラーが出た場合はメッセージを出して処理を中断
IF not %errorlevel% equ 0 (
echo emocheckツールダウンロード処理でエラーが発生したため処理を中止します。
REM メッセージが一瞬で消えないように3秒待機します。
timeout /t 3 /nobreak >nul
exit
)
REM 念の為3秒待ちます。
timeout /t 3 /nobreak >nul
REM emocheckツールを実行します。※以下のPathはダウンロードした場所に合わせて必要により変更すること
call %PUBLIC%\Documents\%emochk_exe% /quiet /output %output_dir%
REM ダウンロードしたemocheckツールを削除します。※以下のPathは(以下省略)
DEL %PUBLIC%\Documents\%emochk_exe%
REM 処理を終了します。
exit
当プログラムのポイントや実装意図を解説します。
ツールの実行ファイルを実行した際に実行結果を出力する先の共有フォルダを指定しています。
ここは共有フォルダじゃなくても、ローカルのフォルダでもどこでも記述できます。
後述しますが、ツールの実行ファイル自体はインターネット経由でダウンロードさせるため、その実装を活かすなら、VBScriptなども活用し、実行結果ファイルをインターネット越しにアップロードしたり、メールに添付して送信するのも良いでしょう。
関連する記事を過去に書いているので、良かったら参照してください。
8行目:
この辺りで自OSが32bitか64bitかを判別して変数にツールの実行ファイル名を代入していますが、これだと新しいバージョンがリリースされてファイル名が変わってしまうと困りますね。
今気付きました…。
もしもっと汎用的にするならもう一工夫必要そうです。
17行目:
Windows標準ツールのbitsadminを実行してツールの実行ファイルをダウンロードし、ダウンロード先を自端末のパブリックプロファイルのダウンロードフォルダに指定しています。※15行目は、ダウンロード先をデスクトップに指定するサンプルです。
尚、もし当バッチを何らかの管理ツール使用してバックグランドで遠隔実行させる場合に「Local System」アカウントを使用すると、15行目のようにユーザープロファイルに依存した指定だと失敗します。
17行目のように、ユーザーに依存しない場所で指定することをおススメします。
28行目:
ツールの実行ファイルを実行させています。
当ツールは実行時に引数を与えることで挙動を変えることができ、引数「/quiet」で処理完了後に自動的に閉じるようになり、引数「/output」で実行結果出力する用のテキストファイルの出力先を変更することができます。
30行目:
ダウンロードして実行も完了したツールの実行ファイルを削除します。
最後に
今回はマルウェア「Emotet」の被害が拡大している状況を踏まえ、JPCERTの様に立派な社会貢献は力不足でできませんが、国内の企業をサイバー攻撃やインシデントから守り、インターネットの健全な発展に微力ながらも貢献できればと思い記事にしました。
今回の記事が誰かの助けになれば幸いです。
今回も読んでいただきましてありがとうございました。