はじめに
業務でMicrosoft Defender Antivirusがメール通知できるかを調査するタスクがあったため、内容を備忘録的にまとめてみました。
概要
Microsoft Defender Antivirusとは、Windows OSに標準搭載されているウイルス・マルウェア対策ソフトウェアです。
リアルタイムで脅威を検出し、ウイルスやスパイウェアなどからシステムを保護する機能を備えています。
今回、Microsoft Defender Antivirusを利用してウイルス検知時にアラートを受信する仕組みを検討しましたが、標準機能だけでは直接メール通知を行う方法が存在しないことが分かりました。
そのため、AWSのCloudWatchとSNS(Simple Notification Service)を活用して、Microsoft Defender Antivirusが出力するイベントログをもとにメール通知する方法について調査・整理を行いました。
実施手順
1.EC2インスタンスを起動する
適当なEC2(WindowsServer)を起動します。
test
という名前でEC2を作成しました。
AMIはWindowsなら何でもいいのですが、業務で使用するWindows Server 2019を選択します。
2.IAMロール作成
CloudWatchのロググループへの書き込み権限を付与したIAMロールを作成します。
CloudWatchLogsFullAccess
のポリシーを付与したIAMロールを作成し、EC2にアタッチします。
これをやらないとMicrosoft Defender Antivirusイベントログがロググループに書き込まれません。
3.ロググループ作成
事前にロググループを作成しておきます。
名前は適当にtest-loggroup
としておきます。
後でMicrosoft Defender Antivirusのイベントログがこのロググループに書き込まれるようにします。
4.CloudWatch Agentをインストール
EC2にリモートデスクトップ接続します。
Windows PowerShellを起動後、以下のコマンドを実行し、CloudWatch Agentのインストールを行います。
※インターネット接続できるようにしておかないとコマンドを使用できないため注意
Invoke-WebRequest -Uri "https://amazoncloudwatch-agent.s3.amazonaws.com/windows/amd64/latest/amazon-cloudwatch-agent.msi" -OutFile "amazon-cloudwatch-agent.msi"
パッケージがあるディレクトリに移動し、以下のコマンドを実行します。
msiexec /i amazon-cloudwatch-agent.msi
インストールに成功するとAmazonCloudWatchAgentのフォルダが作成されます。
amazon-cloudwatch-agent.jsonをAmazonCloudWatchAgentフォルダ内に作成します。
"log_group_name"に事前作成したロググループtest-loggroup
を記述
"log_stream_name"にWindows ServerのインスタンスIDを記述
{
"logs": {
"logs_collected": {
"windows_events": {
"collect_list": [
{
"event_name": "Microsoft-Windows-Windows Defender/Operational",
"event_levels": ["ERROR", "WARNING", "INFORMATION"],
"log_group_name": "test-loggroup",
"log_stream_name": "{instance_id}"
}
]
}
}
}
}
amazon-cloudwatch-agent.jsonを作成したらAmazonCloudWatchAgentフォルダに移動します。
cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"
以下のコマンドを実行し、設定を反映させます。
.\amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:"amazon-cloudwatch-agent.json" -s
CloudWatch Agentが起動しているか確認し、Runningになっていれば起動しています。
Get-Service AmazonCloudWatchAgent
5.Microsoft Defender Antivirusイベントログがロググループに書き込まれるか確認します。
EICARテストファイルというものを作成し、意図的にMicrosoft Defender Antivirusのイベントを発生させます。
メモ帳を開き以下の文字列をeicar.txt
というテキスト名でデスクトップに保存します
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
メモ帳保存後にMicrosoft Defender Antivirusのイベントが発生し、test-loggroupにログが書き込まれれば成功です。
6.メトリクスフィルター作成
ロググループでメトリクスフィルターを作成します。
マルウェア検知の場合のメトリクスを取得したいので、ログ内のMicrosoft Defender Antivirus has detected malware
をフィルターパターンとします。
フィルターパターンとメトリクス値以外は適当で大丈夫です。
フィルター名:test-filter
フィルターパターン:Microsoft Defender Antivirus has detected malware
メトリクス名前空間:Custom/Defender
メトリクス名:Malware
メトリクス値:1
これでマルウェア検知イベントのメトリクスを取得することができます。
7.SNS作成
SNSトピックとサブスクリプションを作成し、CloudWatch Alarmに設定します。
※サブスクリプションを作成するとAWSから認証メールが届くため、メール内のリンクを踏んで事前に認証しておきます。
8.CloudWatch Alarm作成
CloudWatch Alarmを作成します。
メトリクスフィルター作成後、もう一度Microsoft Defender Antivirusイベントを発生させると以下画像のように名前空間が作成されその中にメトリクスが作成されるのでこれを利用してアラームを作成します。
SNSトピックに先ほど作成したものを設定しておきます。
結果
アラームが発報された場合にSNS通知がされるか確認します。
もう一度Microsoft Defender Antivirusイベントを発生させて、設定したアドレスにメールが通知されたら成功です。
まとめ
Microsoft Defender Antivirusのメール通知方法に関しては他にも色々な方法があるみたいですが、今回はAWSを使用したメール通知についてまとめました。
今回の例だとCloudWatchでMicrosoft Defender Antivirusイベントログを取得できる点がメリットだと思いました。
参考