お金をかけずにサーバーの勉強をしよう

Windows Defenderのウィルス検知からメール通知

2022年10月24日

メニューへ戻る

ウィルス検知したら、メールを発報させましょう。
何もしないよりマシ?!


Windows Serverのウイルス対策では、OS機能の「Windowsセキュリティ ウィルスの脅威と防止」(要は Windows Defender)によって行っています。

この Windows Defenderですが、ウィルスを検知すると画面右下に通知を出してくれますので、リアルタイムに感染したことが分かるようになっています。
(見たことが無い人が多いと思います)

PCみたいに常に誰かが操作しているのならそれで良いのですが、基本的に無人で稼働するサーバーで感染の通知を画面に上げてくれても誰も見ていないので誰も気付きません。

ウィルスに感染しているのに誰も気づかないのは困ります。

ウィルス感染したら管理者にメールを通知をすれば…ということで、ここではその仕組みを仕込んでみます。


スタートメニューから [Windows セキュリティ] を開くとこの画面になりますので [ウィルスの脅威と防止] をクリックします。
Windows セキュリティ 画面 1

こういう画面になります。
Windows セキュリティ 画面 2

ここで、テスト用の偽ウィルス「eicar(エイカー)」を仕込みます。
私はいつもカスペルスキーのこのページから取ってきています。
EICAR テストファイルとは?

ここに載っている文字列をテキストファイルにして保存すると、ウィルス感染状態を作り出すことができます。
EICAR テストファイルとは?の画面

私は [D:¥eicar.txt] というファイルを作ってみました。
Eicarをテキストファイルにする図

保存してすぐに画面右下にメッセージが出ます。
Eicarを検出したメッセージ

[ウィルスの脅威と防止] の画面の方にも出ます。
Windows セキュリティ 画面 3

この後、当該ファイルはポリシーに従った処理(削除)をされます。


画面でオペレーションしてたらこれで終わりかも知れませんが、どこかに記録はないのか?というと、以下にあります。

スタートメニューから [Windows 管理ツール] - [イベント ビューアー] を選択します。
画面左にあるツリーで [イベントビューアー(ローカル)] - [アプリケーションとサービスログ] - [Microsoft] - [Windows] - [Windows Defender] - [Operational] と辿ります。

そうすると先程 [Eicar]を検出したログが出てきます。(青反転行)
Windows イベントビューアー画面 1

イベントの詳細はこんな感じです。

ログの名前:         Microsoft-Windows-Windows Defender/Operational
ソース:           Microsoft-Windows-Windows Defender
日付:            2022/10/24 10:54:21
イベント ID:       1117
タスクのカテゴリ:      なし
レベル:           情報
キーワード:
ユーザー:          SYSTEM
コンピューター:       Win2022
説明:
Microsoft Defender ウイルス対策 により、マルウェアまたは他の望ましくない可能性のあるソフトウェアからこのコンピューターを保護する操作が実行されました。
 詳細については、次を参照してください:
https://go.microsoft.com/fwlink/?linkid=37020&name=Virus:DOS/EICAR_Test_File&threatid=2147519003&enterprise=0
 	名前: Virus:DOS/EICAR_Test_File
 	ID: 2147519003
 	重大度: 重大
 	カテゴリ: ウイルス
 	パス: file:_D:\eicar.txt
 	検出元の場所: ローカル コンピューター
 	検出の種類: コンクリート
 	検出元: リアルタイム保護
 	ユーザー: NT AUTHORITY\SYSTEM
 	プロセス名: C:\Windows\System32\notepad.exe
 	操作: 検疫
 	操作の状態:  No additional actions required
 	エラー コード: 0x00000000
 	エラーの説明: この操作を正しく終了しました。
 	セキュリティ インテリジェンスのバージョン: AV: 1.377.700.0, AS: 1.377.700.0, NIS: 1.377.700.0
 	エンジンのバージョン: AM: 1.1.19700.3, NIS: 1.1.19700.3
イベント XML:

〜〜〜 XMLは省略 〜〜〜

こちらにWindows Defender のイベントコード(例えば上のモノだと 1117)についての説明があります。
Microsoft Defender ウイルス対策ソフトウェアの問題をトラブルシューティングするため、イベント ログとエラー コードをレビューする

どうやら上のイベント(1117)または、検出時のイベント(1116)が書かれた時にメールを出せれば良いようです。


ではメールを送信する設定をしてみます。

上の画面で青反転している行で右クリックするとメニューが出ますので、[このイベントにタスクを設定] を選択します。
Windows イベントビューアー画面 2

次へを押します。
Windows イベントビューアー画面 3

次へを押します。
Windows イベントビューアー画面 4

ここにメール送信する選択肢があるのですが非推奨というので使わず、Powershellスクリプトでメールを出すことにします。
[プログラムの開始] を選択して次へを押します。
Windows イベントビューアー画面 5

このようなPowershellスクリプトを用意し、[D:¥work¥VirusCheck.ps1] というファイル名で作りました。

$Param = @{
    SmtpServer = "Rocky-1";
    From = "administrator@Win2022.localdomain";
    To = "subro@Rocky-1.localdomain";
    Subject = "ウィルスを検知しました!!!!"
    Body = "超ヤバいっス。すぐに対応して下さい、パイセン!。"
    Encoding = [System.Text.Encoding]::UTF8
}

Send-MailMessage @Param
※Send-MailMessageコマンドレットはメールサーバーとのセキュアな接続ができないのでこれから非推奨になるそうです。
で、これに代わる新しいコマンドレットは何?というとないようです。
マイクロソフトは時々こういうことをしてくれるので困ります。
今後の事を考えると、Powershellではなく Pythonなどにシフトしておいたほうが良いのかも知れません。

[プログラム/スクリプト] に [powershell.exe] を、
[引数の追加] に上のスクリプト [D:¥work¥VirusCheck.ps1]ファイルを入力し、
次へを押します。
Windows イベントビューアー画面 6

完了を押します。
Windows イベントビューアー画面 7

OKを押します。
Windows イベントビューアー画面 8

これで仕込みは完了です。


改めてコレを [D:¥eicar.txt] という名前で保存します。
Eicarをテキストファイルにする図

こんなメールが届きました。
受信メール画面


何もしないより、とりあえずコレくらいの仕込みはしておくのが良いと思います。

今回はメール送信のコマンドレットを使いましたが、Invoke-WebRequestコマンドレットを使えば、Slackや Teamsに通知なんてことも可能でしょう。

特定のイベント発生をトリガに何かしら実行できるということを知っておけば、通知の方法は色々使えるでしょうから、あとは工夫次第ですね。