1. 導入:なぜ今、Emotet対策の再確認が必要なのか
Emotetは、一度感染すると端末内のメール情報を盗み取り、それを元に巧妙な攻撃メールを生成する「自己増殖型」のマルウェアです。特にExcelマクロを悪用する手口は長年変わらぬ脅威であり、攻撃のたびに巧妙な文面や手法が工夫されています。システム管理者が個々のメールを検知し続けることは困難であり、エンドポイントでの「仕組みによる防御」が重要です。本稿では、グループポリシーを活用したマクロ実行の制限と、PowerShellによる監視の初歩を解説します。
2. 基礎知識:Emotetの攻撃プロセス
Emotetの攻撃フローは、概ね以下の通りです。
1. 侵入: パスワード付きZIPやマクロ付きExcelファイルがメールで届く。
2. 実行: ユーザーが「コンテンツの有効化」ボタンを押すことで、VBAコードが実行される。
3. 通信: 外部のC&Cサーバーへ接続し、本体(ランサムウェアや情報窃取ツール)をダウンロードする。
この「2」の段階でマクロの実行を阻止することが、最も効率的な防御策となります。
3. 実装/解決策:Active Directoryによるマクロ制限
組織管理下にある端末では、グループポリシー(GPO)を用いて、インターネットから取得したOfficeファイルのマクロをブロックする設定が不可欠です。
手順:
1. グループポリシー管理エディタを開く。
2. 「ユーザーの構成」 > 「管理用テンプレート」 > 「Microsoft Office 2016」 > 「セキュリティ設定」 > 「セキュリティセンター」へ進む。
3. 「インターネットから取得したOfficeファイルのマクロをブロックする」を「有効」に設定する。
4. サンプルプログラム:PowerShellによる不審なプロセス監視
Emotetが実行される際、多くの場合「PowerShell」がバックグラウンドで呼び出されます。以下のスクリプトは、特定のキーワードを含むPowerShellの実行をログとして記録する簡易的な監視用サンプルです。
PowerShellによる不審なコマンド実行の監視スクリプト例
本スクリプトは実行中のプロセスを監視し、Emotetが多用する難読化や接続先IPを含む文字列を検知します
$MonitoredKeywords = @(“Invoke-Expression”, “FromBase64String”, “DownloadString”, “hidden”)
現在実行中のPowerShellプロセスを取得
$Processes = Get-Process PowerShell -ErrorAction SilentlyContinue
foreach ($Proc in $Processes) {
# コマンドライン引数を取得して解析
$CmdLine = (Get-CimInstance Win32_Process -Filter “ProcessId = $($Proc.Id)”).CommandLine
foreach ($Keyword in $MonitoredKeywords) {
if ($CmdLine -match $Keyword) {
# 警告をコンソールに出力(実運用ではイベントログやSyslogへ転送推奨)
Write-Host “警告: 不審なPowerShell動作を検知しました – PID: $($Proc.Id)” -ForegroundColor Red
Write-Host “対象コマンド: $CmdLine”
}
}
}
5. 応用・注意点:現場での運用と回避策
現場でEmotet被害を防ぐための重要なポイントは以下の3点です。
・マクロの署名管理: 業務でどうしてもマクロが必要な場合は「信頼できる発行元」へのデジタル署名を必須とし、署名のないマクロは一切実行できない設定にしてください。
・EDRの導入: パスワード付きZIPはゲートウェイのアンチウイルスをすり抜けることが多いため、挙動ベースで検知するEDR(Endpoint Detection and Response)の導入を推奨します。
・インシデント時の初動: もし感染が疑われる端末を発見した場合は、速やかにネットワークから切り離し、被害範囲(メールの送受信履歴)の調査を行ってください。
Emotetは「知っている相手からのメール」を装うため、ユーザー教育とシステム制限の二段構えで防御することが、組織のセキュリティを担保する鍵となります。

コメント