Windows のイベントログは、サイバーセキュリティ担当者や IT 管理者が大いに活用すべきツールです。トラブルシューティングのためにローカルで使用することも、ネットワークの状況を把握するために集中管理することもできます。 集中管理のために利用する場合、セキュリティ情報イベント管理(Security Information Event Management、SIEM)として知られる強力なソフトウェアを利用してログファイルを分析したり検索したりすることができます。多くの ネットワーク監視ソフトウェアも、ログ管理をサポートします。同様のことをローカルで効率よく行うのに、Microsoft の PowerShell を使うことができます。
Windows イベントログとは?
Windows イベントログには、オペレーティングシステムによって作成および保存されたシステム、セキュリティ、アプリケーションに関する詳細な記録が含まれます。一般的なよく知られたログに加えて、Microsoft AppLocker、PowerShell、Sysmon など、システム上の特定のアプリケーションに対して追加のイベントログを有効にすることもできます。Windows イベントログは、イベントビューアから入手できます。イベントビューアを開くには、コントロールパネル内で検索するか、実行コマンドで eventvwr と入力します。Windows イベントログは、C:\WINDOWS\system32\config\ フォルダにあります。
Windows イベントログにも、他のログ記録と同様、標準的なフォーマットがあります。各イベントには、日付、時刻、ユーザー、コンピュータ、イベント ID、ソース、タイプが含まれます。PowerShell で Get-WinEvent コマンドを利用して、ログを簡単に検索できます。
Get-WinEvent
Get-WinEvent は、Windows Vista 以降で利用可能な PowerShell コマンドレットです。ローカルまたはリモートのコンピュータでイベントログを収集して検索することができます。検索可能なログには、古典的なログ、Windows Vista で導入された新しいログ、および Event Tracing for Windows で生成されたログファイルがあります。単一のコマンドで複数のログを指定できます。パラメータを指定しないと、Get-WinEvent はコンピュータ上のすべてのイベントログからすべてのイベントを取得します。 Get-WinEvent は Windows Vista 2008 R2 以降でのみ利用可能で、Microsoft .NET Framework 3.5 以降が必要です。次のテーブルは、このコマンドに関連するパラメータの概要です。
パラメータ | フォーマット | 説明 |
---|---|---|
ListLog | ストリング |
|
LogName | ストリング |
|
ListProvider |
| |
ProviderName |
| |
Path | ストリング |
|
MaxEvents | Int64 |
|
ComputerName | ストリング |
|
Credential | PSCredential |
|
FilterXPath | ストリング |
|
FilterXML | XMLDocumentt |
|
FilterHashTable | ハッシュテーブル |
|
Force | ブール値 |
|
Oldest | ブール値 |
|
いくつかの例
まず、どのログを選択するべきかを確認するのに、ListLog パラメータを使用してみます。ワイルドカードですべてのログを表示するようにすると、非常に長いリストが表示されます。
PS C:\> Get-WinEvent -ListLog *
AppLocker など、特定のトピックに関するログに絞り込むことが可能です。
PS C:\> get-winevent -listlog *AppLock*
アプリケーションログなど、単一のログに関するすべての利用可能な情報を取得するには、次のコマンドを利用します。
ローカルマシン上のイベントを含むすべてのログを一覧表示するには、次のようにします。
PS C:\> Get-WinEvent -listlog * | where {$_.Recordcount}
複数のコンピュータのログを、foreach を使って同時に検索することもできます。
PS C:\> $hosts = "Server1", "Server2", "Server3" PS C:\> foreach ($server in $hosts) {$server; get-winevent -listlog "Windows PowerShell" -computername $server}
総当たり攻撃の識別
ドメインコントローラ上のログで複数の失敗インスタンスを監視することで、総当たり攻撃を識別できる可能性があります。ドメインコントローラは、ログイベント4771で失敗した Kerberos チケットをログに記録します。潜在的な総当たり攻撃を調査する方法として、ドメインコントローラで以下のコマンドを実行して、最近1時間以内に失敗したすべてのログインを検索することが考えられます。
Get-WinEvent -Filterhashtable @{LogName='Security';id=4771;starttime=(Get-Date).AddHours(-1);endtime=(Get-Date) }
Windows イベントトレーシングの利用
Windows イベントトレーシングは、開発者がアプリケーションをデバッグするために利用するツールです。シャットダウンやブートプロセスの追跡や、アプリケーションの電力効率の決定などの診断に利用できます。イベントトレースログは拡張子 .etl のファイルに保存されます。PowerShell は、これらのトレースログを開いたり分析したりするための追加の方法を提供します。Get-WinEvent を使用してイベントトレースログを解析するときは、必ず -Oldest パラメータを使用してください。
PS C:\>Get-WinEvent -Path "C:\Tracing\TraceLog.etl" -Oldest
Windows イベントログは、PowerShell を使用すると、簡単に検索や分析が可能です。特定の失敗イベントや特定の種類の攻撃を監視したい場合は、特に有益です。PowerShell は、様々なサイバー攻撃を防御するための便利なツールです。