2023年4月18日火曜日

PowerShellを駆使してイベントログの異常検知をさらに深堀り

イベントログは、Windowsシステム上で発生する様々なイベントを記録する重要な情報源です。前回の記事では、PowerShellのGet-EventLogコマンドレットを使って、イベントログを解析し、異常なアクティビティやセキュリティインシデントの兆候を検出する方法を紹介しました。今回は、さらに時間軸集計に役立ちそうな絞り込みや発生源での抽出方法などを紹介します。

ステップ1: イベントログの取得

まずは、前回の記事で紹介したコマンドを実行して、システムイベントログを取得しましょう。

$SystemEvents = Get-EventLog -LogName System

ステップ2: 時間帯の指定

次に、異常検知の基準をカスタマイズしましょう。前回はイベントIDによる検出を行いましたが、今回はイベントIDと合わせて、イベントの発生源や発生日時も考慮して検出対象を絞り込みます。

例えば、特定の期間内に発生した特定のイベントIDを検出対象とすることができます。

$StartDate = "2023-01-01"
$EndDate = "2023-04-01"
$TargetEventIDs = @(4625, 1102, 43)

ステップ3: 時間帯を絞った異常イベントの検出

カスタマイズした基準に基づいて、異常イベントを検出しましょう。以下のコマンドを実行することで、対象となるイベントIDのイベントを特定の期間内で検出できます。

$DetectedEvents = $SystemEvents | Where-Object { $_.EventID -in $TargetEventIDs -and $_.TimeGenerated -gt $StartDate -and $_.TimeGenerated -lt $EndDate }

ステップ4: 検出結果のフィルタリングと保存

検出された異常イベントをさらにフィルタリングし、必要に応じてファイルに保存しましょう。以下のコマンドを実行することで、特定の発生源からのイベントをフィルタリングし、CSVファイルに保存できます。

$FilteredEvents = $DetectedEvents | Where-Object { $_.Source -eq "Microsoft-Windows-WindowsUpdateClient" }
$FilteredEvents | Export-Csv -Path "C:\tmp\output.csv" -NoTypeInformation

※.Source -eq "ここの文字列の調べ方"
 Sourceはイベントビューアの「ソース」列の値を指定するが、このフィルタで指定すべき値は画面上GUIで表示されている値とは微妙に異なる様です。
 その場合以下のコマンド例の様にイベントオブジェクトの配列に含まれるソースの一覧が取得できるので、そこから適切な値を拾います。

PS C:\> $DetectedEvents | Select-Object -Property Source -Unique

Source
------
Microsoft-Windows-WindowsUpdateClient

まとめ

前回の記事で紹介した基本的なイベントログの異常検知方法に加え、今回はカスタマイズされた異常検知方法を紹介しました。特定の期間や発生源に基づくイベントログの検出とフィルタリングにより、時間毎に区切ったデータを取得してイベント発生件数の傾向を調べたりする、という使い方も出来そうです。

0 件のコメント:

ウェブサイトのURLにおけるトレイリングスラッシュの解釈と有無による動作の違い

インターネットが現代社会におけるコミュニケーションの基盤となっている今日、ウェブサイトのURLはビジネスや個人ブランディングにとって重要な役割を果たしています。URLは単にウェブページへの経路を示すだけでなく、SEO(検索エンジン最適化)においても重要な要素です。この記事では、U...