Windowsセキュリティ(Defender)をコマンドラインで扱う
ASCII.jp / 2024年1月28日 10時0分
Windowsを使っていると、ときどきWindowsセキュリティ(Defender)からの通知を見ることがある。今回は、このWindowsセキュリティの機能をコマンドラインから使う方法を解説する。
![Windowsセキュリティ](https://ascii.jp/img/2024/01/27/3676590/x/ab0ac440eb66f7f2.png)
そもそもDefenderとは?
以前からWindowsを使っているユーザーからすれば、Windowsのセキュリティ機能といえば「Defender」を思い浮かべるだろう。Defenderの名称は、Windows XP時代の2006年(これ以前にベータ版が配布されていた)にスパイウェア対策ソフトに使われた。これは買収した製品(GIANT Company SoftwareのGIANT AntiSpayware)の名前を変更したものだった。当時のWindowsは標準でコンピューターウイルス対策機能を持っていなかった。
Windows 7で、ウイルス対策機能を持つMicrosoft Security Essentialsに一旦置き換えられたが、Windows 8では、Defenderの名称でウイルス対策機能を含めて復活する。Windows 10では、ファイアウォールやさまざまなセキュリティ機能にDefenderの名称を使った。
2017年のRS3(Fall Creater Update。Windows 10 Ver.1709)以後は、Defenderはセキュリティ対策の総合ブランド名になった。ただしそのせいか、「Windows Defenderナントカ」「Microsoft Defenderカントカ」といった名前が氾濫し、さらにそれらの製品が統合されて別の名前になるなど、かなり混乱した様相があった。
現在では、Windowsのセキュリティ設定には「Windowsセキュリティ」という名称が使われている。ここは、もともとは「Windows Defender セキュリティ・センター」という名称だった。設定ページからはDefenderの名称が消えたものの、ヘルプページには残っている。
また、個別機能にもDefenderの名前が残る。たとえば、ウイルス対策機能が「Windows Defender Antivirus」(Microsoft Defender Antivirusとも、日本語ではWindows/Microsoft Defenderウイルス対策)、ファイアウォールが「Windows Defenderファイアウォール」である。現状、Microsoft Defenderという用語は、Microsoft 365で提供されるセキュリティ機能の名称として使われているようだ。ただし、Microsoftの常として、文書が混乱していることがある。
また、後述するmpcmdrun.exeコマンドやPowerShellコマンド、WMIのクラス名などに含まれる「MP」は、Microsoft Security Essentialで開発された「Microsoft Malware Protection Engine(MSMPENG)」の「Malware Protection」に由来する。現在でもmsmpeng.exeというプログラムがWindowsに含まれている。
ここでは、ウィルス対策のDefender Antivirusの機能を対象とする。Defenderファイアウォールに関しては、本連載の過去記事(「WindowsのファイアウォールをPowerShellから制御する」)を参考にしてほしい。
Defenderをコマンドラインから扱う
Windowsセキュリティの機能をコマンドラインから使うには、大きく3つの方法がある。1つはcmd.exeからも利用できるmpcmdrun.exeプログラム、もう1つはWIM(CIM)経由、最後はPowerShellコマンドだ。
なお、グループポリシー(gpedit.msc)の「コンピュータの構成」→「管理用テンプレート」→「Windowsコンポーネント」→「Microsoft Defender ウィルス対策」で、Defenderの挙動や一部設定を変更できる。グループポリシーはHome Editionなどで利用できないため、ここでは解説を省略する。なお、解説は以下のMicrosoftのサイト上にある(https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/use-group-policy-microsoft-defender-antivirus?view=o365-worldwide)。
mpcmdrun.exeに関しては、マイクロソフトのサイトにある「コマンドラインを使用して Microsoft Defender ウイルス対策を管理する」(https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/command-line-arguments-microsoft-defender-antivirus?view=o365-worldwide)に情報がある。コマンドは以下のパスにあり、PATH環境変数に設定がないため、パスを直接指定する必要がある。「-?」オプションでオンラインヘルプを表示する。
C:\Program Files\Windows Defender\MpCmdRun.exe
exeコマンドであるため、cmd.exeでも利用可能である。なお、後述するPowerShell Defender系コマンドとの違いだが、定義ファイルの扱いや各種レポート/ログの出力など、Defenderの「素」の機能に近いのがmpcmdrun.exeで、WMIとPowerShell側は主にDefender関連の管理を中心とした機能になる。
WMI(CIM)を使う場合には、
Get-CimInstance -ClassName MSFT_MpComputerStatus -Namespace root/microsoft/windows/defender -Property *
などとする。クラス名(以下の表)だけでなく名前空間(Namespace)も指定が必要になる。
![Windowsセキュリティ](https://ascii.jp/img/2024/01/27/3676592/x/f7a29dd301d9019d.png)
これに関しては「WMI を使用してMicrosoft Defenderウイルス対策を構成する」(https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/use-wmi-microsoft-defender-antivirus?view=o365-worldwide)に解説があり、クラス名に関しては、「Windows Defender WMIv2 Provider(英語)」(https://learn.microsoft.com/ja-jp/previous-versions/windows/desktop/defender/windows-defender-wmiv2-apis-portal)に記述がある。ここでは、クラス名だけを挙げるのみにしておく。というのは、PowerShellのDefender系コマンドは、出力するオブジェクトがWMIのDefenderクラスをベースとしており、WMIの上に構築されているのだと思われるからだ。
PowerShellでDefenderを管理する
さて、PowerShellには、次の表のようなコマンドが用意されている。
![Windowsセキュリティ](https://ascii.jp/img/2024/01/27/3676593/x/e7ebd3b9f2caf4a2.png)
これは、
get-command -module defender
とすることで一覧が得られる。
また、Microsoftのサイトにも「Defender Module」(https://learn.microsoft.com/ja-jp/powershell/module/defender/?view=windowsserver2022-ps)があるのだが、「Start-MpRollback」についての解説がない。そのほか、「PowerShell コマンドレットを使用して Microsoft Defender ウイルス対策を構成する」(https://learn.microsoft.com/ja-jp/microsoft-365/security/defender-endpoint/use-powershell-cmdlets-microsoft-defender-antivirus?view=o365-worldwide)にも情報がある。
ウイルス対策の結果を調べるには「Get-MpThreatDetection」を使う。これは、Windowsセキュリティの「ウィルスと脅威の防止」→「現在の脅威」→「保護の履歴」に相当する情報である(冒頭画面)。
このコマンドが出力するオブジェクトに対象となるファイルパスがResourceプロパティに入る。ただし、このオブジェクトには、脅威(Threat)の名前が含まれていないのでThreatIDプロパティを使って、名前を検索する必要がある。
脅威の情報は、カタログにあり「Get-MpThreatCatalog」で得られる。ただし、カタログには、30万件弱の情報が含まれているため、扱いには注意が必要だ。このコマンドを実行するだけで3分以上時間がかかり、メモリ利用量が警告レベルを超えたというメッセージも表示される。このコマンドは、ThrottleLimitオプションを持つものの、1を指定しても警告は収まらない。使うには、変数などにいったん代入し、繰り返しコマンドを使わないようにした方がいいだろう。変数に入れることで、以後の処理を短時間で終えることができる。
似たようなコマンドに「Get-MpThreat」がある。こちらは、検出された脅威の種類だけを返し、検出履歴などを含まない。しかし、このオブジェクトには脅威の名称とThreatIDが含まれている。「Get-MpThreatDetection」と組み合わせて見ることで、基本的な情報が得られる。
![Windowsセキュリティ](https://ascii.jp/img/2024/01/27/3676591/x/d5d3cd1303c288a5.png)
PowerShellでGet-MpThreatCatalogの出力のような大量のデータから検索をする場合、Where-Objectコマンドでは、条件に一致する全てのオブジェクトを出力するためデータを全部調べるので効率が悪い。「ThreatID」などデータが一件のみと最初から分かっているなら、配列のwhereメソッドを使い、最初のヒットだけを取り出せばよい。具体的には、
$x=Get-MpThreatCatalog $x.where({$_.ThreatID -eq $p.<ThreatID>},1)
のようにする。
Defender Antivirusには、多くの機能があるが、コマンドラインからもこれを扱うことができる。保護の履歴で対象になったファイル名を得る、脅威の名前をインターネット検索してみるといったことも、コマンドラインからなら簡単に行える。一応「Windowsセキュリティ」の「保護の履歴」では、各項目を開くとファイルのリストがあり、パス部分が選択可能で「Ctrl+C」でコピーできる。
この記事に関連するニュース
-
ラック、JSOC マネージド・セキュリティ・サービスにEDR監視・運用追加
マイナビニュース / 2024年7月1日 15時20分
-
ラック、JSOC マネージド・セキュリティ・サービス(MSS)にEDR監視・運用サービスの機能を追加
@Press / 2024年7月1日 11時30分
-
日本の組織狙う環境寄生型サイバー攻撃、JPCERT/CCが警戒呼びかけ
マイナビニュース / 2024年6月27日 8時28分
-
中国の攻撃者がF5 BIG-IPアプライアンスを踏み台にスパイ活動
マイナビニュース / 2024年6月20日 7時27分
-
窓辺の小石 第170回 ネットの総和
マイナビニュース / 2024年6月14日 10時13分
ランキング
-
1「鬼すぎない?」 大正製薬の広告が“性差別”と物議…… 男女の“非対称性”に「昭和かな?」「時代にあってない」
ねとらぼ / 2024年7月4日 18時32分
-
2楽天ペイと楽天ポイントのキャンペーンまとめ【7月4日最新版】 楽天ペイアプリでポイント最大10倍もらえる
ITmedia Mobile / 2024年7月4日 10時5分
-
3「知らんかった」 Googleで“あるワード”を検索すると……? あまりに“癒やし”な「隠し機能」に5万いいね「延々とやっちゃう」
ねとらぼ / 2024年7月4日 20時45分
-
4「Thank you Buddies!」 櫻坂46、最新曲「自業自得」ライブ映像を公開 「これだよこれ!」「いきなり凄いものが…」反響続出
ねとらぼ / 2024年7月4日 20時53分
-
5「ドコモ光 1ギガ」旧プランを2025年6月に提供終了、解約金の安い新プランへ自動移行
マイナビニュース / 2024年7月4日 19時15分
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/mission_close_icon.png)
記事ミッション中・・・
記事にリアクションする
![](/pc/img/mission/point-loading.png)
エラーが発生しました
ページを再読み込みして
ください
![](/pc/img/mission/mission_close_icon.png)