【入門編】 Windowsイベントログにおける攻撃検知の重要ID – インシデントレスポンス & フォレンジック(DFIR)防御ガイド

こんにちは!日々のインフラ管理や開発、本当にお疲れ様です。

いきなりですが、皆さんのご自宅のセキュリティについてちょっと想像してみてください。頑丈な玄関の鍵を閉め、窓には補助錠をかけ、さらに最近では防犯カメラを設置しているご家庭も多いですよね。では、もし「ピッキングのプロ」や「合鍵を作った泥棒」がこっそり家の中に忍び込んだとしたら……皆さんはその侵入にすぐ気づくことができますか?

実は、私たちが普段使っているWindowsのパソコンやサーバーの中でも、これと全く同じことが起きています。攻撃者(泥棒)は、あの手この手でパスワードを破ったり(ブルートフォース攻撃)、関係者のふりをしてシステムに入り込んだりしてきます。

「うちのサーバーはファイアウォールがあるから大丈夫!」なんて油断していませんか? ネットワークの防壁を突破された後、彼らが内部でどんな悪事を働いているかを見抜くために不可欠なのが、今回お話しする「Windowsイベントログ」という名の「お家の中の防犯カメラの映像」なんです。

今回は、セキュリティの第一歩を踏み出したばかりの新人のIT担当者や開発者の皆さんに向けて、攻撃者が思わず舌打ちするような「絶対に押さえておくべき重要イベントID」と、その具体的な監視のコツを、身近な例えを交えながら優しく紐解いていきますね。一歩ずつ、一緒に学んでいきましょう!

—

1. なぜ「イベントログ」がセキュリティの命綱なのか?

Windowsには、OSの起動からアプリのエラー、そして誰がいつログインしたかといった「すべての出来事(イベント)」をこまめに記録する「イベントビューアー」という機能が備わっています。

これを防犯カメラに例えてみましょう。
もし、泥棒が留守宅に侵入したとしても、リビングのカメラがその姿を捉えていれば、「何時何分に、どんな格好をした人間が、どの窓から入ってきたか」が後から分かりますよね。

セキュリティの世界では、これを「フォレンジック(鑑識・証拠保全)」と呼びます。攻撃を100%防ぐことは現代の技術でも不可能に近いですが、「侵入された痕跡をいかに早く見つけ、被害を最小限にするか」が私たちディフェンダー(防衛側)の腕の見せ所です。その証拠を教えてくれるのが、まさにこのイベントログなのです。

—

2. 攻撃者が忍び込む瞬間を暴く!絶対に外せない「4つのイベントID」

Windowsイベントログには何千種類ものIDが存在しますが、セキュリティ監視の現場で「まずここだけは見ておけ!」と言われる、いわば「四天王」のIDがあります。それぞれの意味を、防犯の視点から優しく見ていきましょう。

① ID: 4624 ― 「合鍵で玄関を通った人」の記録(ログオン成功)

  • 意味: ユーザーがシステムへのログインに「成功」したときに記録されます。
  • なぜ重要?: 「え、ログイン成功って当たり前じゃないの?」と思われるかもしれませんが、ここが落とし穴です。例えば、深夜3時に普段絶対にログインしない一般社員のアカウントで海外からログインがあったとしたら……?これはもう「泥棒が本物の合鍵を使って入ってきた瞬間」ですよね。
  • チェックすべきポイント: ログオンの種類(Logon Type)に注目です。ネットワーク経由のログイン(Type 3)や、リモートデスクトップ(Type 10)が不審な時間帯に行われていないかを監視します。

② ID: 4625 ― 「ガチャガチャと鍵穴をこじ開けようとした」記録(ログオン失敗)

  • 意味: パスワードミスなどでログインに「失敗」したときに記録されます。
  • なぜ重要?: 攻撃者は、総当たり攻撃(ブルートフォース攻撃)やパスワードリスト攻撃を使って、正しいパスワードを見つけ出そうと何回も扉をガチャガチャと揺らします。このIDが短時間に何百回も連続して記録されていたら、それはまさに「今まさにあなたのサーバーがアタックを受けている証拠」です。

③ ID: 4688 ― 「家の中で勝手に新しい道具を取り出した」記録(プロセス生成)

  • 意味: パソコン内で新しいプログラム(プロセス)が実行されたときに記録されます。
  • なぜ重要?: 侵入に成功した攻撃者は、次に自分たちのための便利なツール(パスワードを盗むソフトや、外部と通信するためのプログラムなど)をこっそり動かします。このIDを追うことで、「侵入された後に、中荒らしがどんな道具を使ったか」が手に取るように分かります。
  • チェックすべきポイント: コマンドプロンプト(cmd.exe)やPowerShell(powershell.exe)といった、システム管理者がよく使う強力なツールが、不審なスクリプトと一緒に呼び出されていないかを警戒します。

④ ID: 4720 ― 「勝手に家族の合鍵を新しく作られた」記録(ユーザー作成)

  • 意味: 新しいユーザーアカウントが作成されたときに記録されます。
  • なぜ重要?: 悪意ある攻撃者は、一度侵入したドアの鍵がいつ変えられるか分かりません。そのため、自分専用の「裏口(バックドア)」として、こっそり新しい管理者アカウントを作ろうとします。身に覚えのないユーザー作成ログが出たら、インシデント発生(緊急事態)の合図です。

—

3. 実践!PowerShellで不審なログをサクッと検知してみよう

「理屈は分かったけれど、毎日何万件もあるログを目視でチェックするなんて無理だよ……」と思いましたよね?その通りです。セキュリティ担当者がすべてを手作業で監視するのは不可能です。

そこで、Windowsに標準で備わっている強力な自動化ツール「PowerShell」を使って、直近で起きた「ログイン失敗(ID: 4625)」の怪しい動きをサクッと抽出するスクリプトを見てみましょう。実務の現場でも、こうしたスクリプトやSIEM(セキュリティ情報イベント管理)ツールを組み合わせて自動検知を行っています。

以下のサンプルコードをPowerShellで実行すると、セキュリティログの中から直近のログイン失敗イベントを拾い上げることができます。

# =====================================================================
# スクリプト名: Check-FailedLogons.ps1
# 概要: セキュリティログから直近のログオン失敗(ID: 4625)を検知し、
#       怪しいアカウントや元凶のIPアドレスをあぶり出すサンプルスクリプト
# =====================================================================

# 1. 取得するイベントの件数や条件を設定します
$MaxEvents = 20 # 最新の20件をチェック対象とする

Write-Host "[-] Windowsセキュリティログから直近のログオン失敗(ID: 4625)を解析中..." -ForegroundColor Cyan

# 2. ログの「セキュリティ」から、イベントID 4625 のみを抽出し、詳細情報を取得します
$FailedLogons = Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = 4625
} -MaxEvents $MaxEvents -ErrorAction SilentlyContinue

# 3. 取得できたイベントをループ処理し、必要な情報(時間やターゲット、送信元IP)を分かりやすく整形して表示します
foreach ($Event in $FailedLogons) {
    # イベントログのXMLデータを解析して、詳細なフィールドを抽出します
    [xml]$EventXml = $Event.ToXml()
    $EventData = $EventXml.Event.EventData.Data

    # 各種パラメータの取得(XMLの特定の名前属性から値をバインド)
    $TimeCreated = $Event.TimeCreated
    $TargetUser  = ($EventData | Where-Object { $_.Name -eq 'TargetUserName' }).'#text'
    $IpAddress   = ($EventData | Where-Object { $_.Name -eq 'IpAddress' }).'#text'

    # 4. コンソール画面に結果を出力(実務ではここにSlack通知などを組み込むと便利です)
    Write-Host "--------------------------------------------------------"
    Write-Host "発生時刻     : $TimeCreated" -ForegroundColor Yellow
    Write-Host "ターゲット   : $TargetUser" -ForegroundColor White
    Write-Host "接続元IP     : $IpAddress" -ForegroundColor Magenta
    
    # 簡易的な判定(もしローカル以外の怪しいIPからの失敗なら警告を出す)
    if ($IpAddress -ne "-" -and $IpAddress -ne "127.0.0.1" -and $IpAddress -ne "::1") {
        Write-Host "[!] 警告: 外部ネットワークからの不審なログオン失敗を検知しました!" -ForegroundColor Red
    }
}

Write-Host "--------------------------------------------------------"
Write-Host "[+] 解析が完了しました。お疲れ様です!" -ForegroundColor Cyan

コードのポイント

  • Get-WinEvent というコマンドレットを使うことで、Windowsの奥深くにあるログを自由自在に料理(検索)できます。
  • 攻撃者は外部からパスワードを総当たりしてくるため、IpAddress の項目にプライベートIP以外の見知らぬアドレスが記録されていないかをチェックするのが、実務における第一歩となります。

—

4. セキュリティをさらに強固にするための「監査ポリシー」の落とし穴

「よし、じゃあ早速イベントビューアーを開いてみよう!」と思ったそこのあなた、ちょっと待ってください。実は、Windowsの初期設定の状態では、これらすべてのログが親切に記録されているわけではありません。

泥棒が入ってきたときに自動でカメラが録画を開始するように、OS側にも「何をどこまで記録するか(監査ポリシー)」という設定をあらかじめ有効にしておく必要があります。

監査ポリシーの設定手順(簡易ガイド)

1. キーボードの Windowsキー + R を押し、secpol.msc と入力してEnterを押します(ローカル セキュリティ ポリシーが開きます)。
2. 左側のツリーから 「セキュリティの設定」 > 「高度な監査ポリシーの構成」 > 「システム監査ポリシー」 の順に展開します。
3. 以下の項目をダブルクリックして、「成功」および「失敗」の両方にチェックを入れます。

  • アカウント ログオン(ログオン監査など)
  • ログオン/ログオフ(ID: 4624, 4625 などが対象になります)
  • オブジェクト アクセス や アカウント管理(ID: 4720 などのユーザー作成に関係します)

これを設定しておくことで、初めて「いざという時の決定的な証拠」がディスクに書き込まれるようになります。構築の初期段階で必ず確認しておきたいポイントですね。

—

5. おわりに:インシデントに強いエンジニアへの第一歩

今回は、Windowsイベントログにおける攻撃検知の重要ID(4624, 4625, 4688, 4720)について、防犯の例えを交えながらお伝えしました。

最初は、見慣れない用語や複雑なIDの数字に圧倒されてしまうかもしれません。「覚えることが多くて大変だな……」と感じた方もいるでしょう。でも、安心してください。私たちプロのセキュリティアナリストも、最初は「どのログを見ればいいのか分からない」という状態からスタートしています。

大切なのは、「自分の管理しているシステムで何が起きているかに関心を持ち、小さな違和感に気づくこと」です。

日々の開発やインフラ運用の片隅で、たまにはイベントログという名の「防犯カメラの映像」を覗いてみてください。きっと、システムを安全に守るための新しい発見や、サイバー攻撃のリアルな手口が見えてくるはずです。

一歩ずつ、確実にスキルを身につけていきましょう!次回の解説もお楽しみに。

コメント

タイトルとURLをコピーしました