PowerShellの利用をMicrosoft Defender ATPでチェック

皆さんこんにちは。国井です。
前回に続き、Microsoft Defender ATPの話、それも備忘録です。
Windowsデバイスを舞台にした不正アクセスにPowerShellが使われることが最近多いと思います。そのため、PowerShellを実行した履歴を追跡したいなんて要望もあるかと思います。Microsoft Defender ATPの場合、コマンドレットを実行すればタイムラインに次のような履歴が残ります。

PowerShell ISEの場合はこちら。

image

ただMDATPのタイムラインには、具体的に何を実行したかは記録されません。
そのため、タイムラインで「なんで、このタイミングでPowerShellなの?」という事象が発生したら、該当のコンピューター上でGet-Historyコマンドレットを実行すれば具体的に実行されたコマンドレットまでわかります。そこで、Invoke-WebRequest.. なんて履歴があったら、自分の頭の中でアラートがあがるわけです。

一方、Get-Historyコマンドレットで追跡できるコマンドレットの実行履歴は直近のバージョンのPowerShellを実行した場合であり、前のバージョンのPowerShellから実行されると履歴は残らなくなります。これを逆手にとって、わざと古いバージョンのPowerShellを呼び出して実行するような輩がいるんですよね。

powershell.exe –v 3 Get-Childitem

ですが、もしcmd.exeなどからPowerShellコマンドレットが呼び出されていれば、MDATPのタイムラインから特定のログを参照すると、Command line欄に実行したコマンドレットが確認できます。

image

また、個々のコンピューターで確認するのであれば、ダウングレードしたバージョンでコマンドレットを実行すると、イベントビューアのWindows PowerShellログにイベントID 400が記録され、その中で実行したコマンドレットが確認できます。

image

余談ですが、Windows PowerShellのイベントログを消してしまうという方法で
コマンドレットの実行結果を消すこともできますが、システムログのイベントID 104で
消したという履歴は残るので、消した覚えがないのに104が出ていたら、調査しなきゃ!という次のアクションにつなげることもできるようです。