こんにちは!セキュリティの世界へようこそ。
日々の開発やインフラの管理、本当にお疲れ様です。「セキュリティのログ分析」と聞くと、なんだか映画に出てくるハッカーの黒い画面を思い浮かべて、難しそう……と感じてしまうかもしれませんよね。でも、安心してください。基本の仕組みさえ分かってしまえば、ログ分析は「お部屋の防犯カメラ映像をチェックする」のとほとんど同じなんです。
今回は、サイバー攻撃者が社内に侵入したあと、別の部屋(サーバーやPC)へこっそり忍び込もうとする動き、いわゆる「横展開(ラテラルムーブメント)」を認証ログから見つけ出す方法について、一緒に一歩ずつ学んでいきましょう!
—
1. 家の鍵と合鍵に例える「認証」と「横展開」の仕組み
まず、会社のネットワークを一つの「大きなマンション」に例えてみましょう。
あなたがマンションの管理人だとします。玄関(会社の入り口)には頑丈なオートロックがあり、そこで住民票や身分証を確認して中に入ってもらいますよね。これが通常の「ログイン(認証)」です。
攻撃者は、この玄関の鍵をなんとかして破るか、あるいは従業員になりすましてマンションの中に入り込みます。ここまでが「初期侵入」です。
しかし、攻撃者の本当の目的は、管理人室(ドメインコントローラーや重要サーバー)のマスターキーを手に入れることです。そのため、普通の部屋から別の部屋へと、まるで住人であるかのように次々と移動を始めます。この動きこそが「横展開」なんです。
マンションの廊下を歩くとき、不審者が「どの部屋の鍵をガチャガチャ開けようとしているか」、監視カメラがあれば気づけますよね。Windowsのログ分析とは、まさにこの「廊下の監視カメラ」をチェックする作業に他なりません。
—
2. 攻撃者が使う厄介な手口:KerberosとPass-the-Hash
攻撃者はマンションの中を移動するとき、バレないように特殊な「偽造パスポート」を使います。代表的なものが次の2つです。
① Kerberosチケットの乱用(TGS-REQの異常)
Windowsのネットワークでは、「Kerberos(ケルベロス)」という仕組みが使われています。これは、最初に身分証を見せると、いろんな部屋に入れる「一日パスポート(チケット)」を発行してもらえるシステムです。
正規のユーザーは必要な分だけチケットをもらいますが、攻撃者は短時間に何百人もの別人のチケットを無理やり要求(TGS-REQ)して、システムを総当たりで突破しようとします。これは、マンションの全棟の合鍵を泥棒が片っ端から試しているような状態です。
② Pass-the-Hash(パス・ザ・ハッシュ)
Windowsは、入力されたパスワードをそのまま保存せず、暗号化した「ハッシュ値」という文字列に変えて本人確認に使います。攻撃者は、運悪く乗っ取ったパソコンからこの「ハッシュ値」を盗み出し、パスワードそのものを知らなくても、そのハッシュをそのまま別のPCへの通行証として使ってしまいます。住民の顔写真付きの通行証をスリ取って、自分がその人になりすまして別の部屋に入るような手口ですね。
—
3. ログから見つけ出す!イベントIDのチェックポイント
では、Windowsのセキュリティログという「監視カメラ」の映像から、これらの怪しい動きをどう見つければよいのでしょうか? 現場で本当によく使われる、重要なイベントIDを2つご紹介します。
チェックポイント1:イベントID 4769(Kerberosサービスチケットの要求)
先ほどお話しした「パスポート(チケット)」が発行されたときに記録されるログです。
ここに注目することで、「短時間に異常な量のチケットが要求されていないか」を検知できます。特に、暗号化の方式が古いもの(RC4など)や、不自然なアカウントからの大量リクエストは要注意です。
チェックポイント2:イベントID 4624(ログオン成功) & ネットワークログオン
誰かがシステムにログインしたときに記録されるお馴染みのログです。
ここで見るべきポイントは、「ログオンタイプ(Logon Type)」という項目です。
- タイプ 3 (Network): ネットワーク経由のアクセス(共有フォルダへのアクセスなど)
- タイプ 10 (RemoteInteractive): リモートデスクトップ(RDP)経由のアクセス
例えば、「普段は総務部のデスクから動かない一般PCのアカウント」が、深夜に「ネットワーク経由(タイプ3)」で次々と社内の重要サーバーにログインを試みていたら……? これはもう、横展開を疑う十分なサインになります。
—
4. 実務で使える!ログを効率的に見つける PowerShell スクリプト
「じゃあ、実際にどうやってログを探せばいいの?」という方のために、WindowsのPowerShellを使って怪しい動きをサクッと見つけるためのサンプルスクリプトを用意しました。
以下のコードは、セキュリティログの中から「ネットワーク経由のログオン(イベントID 4624、タイプ3)」が発生した履歴を抽出するものです。実務の検証環境などで試してみてくださいね。
# ==========================================
# 横展開(ラテラルムーブメント)の兆候を検知する
# Windows セキュリティログ分析スクリプト
# ==========================================
# 1. 取得するイベントIDとログオンタイプの定義
$EventID = 4624 # ログオン成功のイベントID
$TargetLogonType = 3 # 3 = ネットワーク経由のログオン (SMBやRPCなど)
Write-Host "[-] セキュリティログからネットワークログオンの抽出を開始します..." -ForegroundColor Cyan
# 2. 過去24時間以内のセキュリティログをイベントビューアから取得
$Logs = Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = $EventID
StartTime = (Get-Date).AddDays(-1)
} -ErrorAction SilentlyContinue
# 3. 取得したログを一件ずつチェックし、条件に合うものを抽出
$SuspiciousLogins = foreach ($Log in $Logs) {
# イベントログをXML形式に変換して詳細データを抽出
[xml]$EventXml = $Log.ToXml()
$LogonType = $EventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'LogonType' } | Select-Object -ExpandProperty '#text'
# ネットワーク経由のログオン(タイプ3)のみをターゲットにする
if ($LogonType -eq $TargetLogonType) {
[PSCustomObject@{
TimeCreated = $Log.TimeCreated
AccountName = ($EventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'TargetUserName' }).'#text'
ClientIP = ($EventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'IpAddress' }).'#text'
Workstation = ($EventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'WorkstationName' }).'#text'
}
}
}
# 4. 結果の出力
if ($SuspiciousLogins) {
Write-Host "[!] ネットワーク経由のログオンを検出しました。確認してください:" -ForegroundColor Yellow
# 見やすいようにテーブル形式でコンソールに表示
$SuspiciousLogins | Format-Table -AutoSize
} else {
Write-Host "[+] 過去24時間以内に不審なネットワークログオンは見つかりませんでした。" -ForegroundColor Green
}
このスクリプトを実行すると、どの端末(Workstation)から、どのアカウント(AccountName)を使って、どのアドレス(ClientIP)経由でネットワークアクセスが行われたのかが一覧で表示されます。
「あれ?このPC、こんな時間に別のサーバーと通信しているぞ?」という違和感に気づくことが、SOCアナリストとしての第一歩になります。
—
5. 一歩ずつ対策を学んでいきましょう!
いかがでしたでしょうか?
「認証ログ分析」や「横展開」という言葉は難しく聞こえますが、要するに「普段と違う場所から、普段と違う方法で、いつものアカウントが動いていないか」を観察することです。
最初は膨大なログの量に圧倒されるかもしれませんが、まずは今回ご紹介したイベントIDやPowerShellスクリプトを参考に、ご自身の環境の「普段の姿(ベースライン)」を知ることから始めてみてください。お部屋の様子が分かっていれば、いつもと違う足音にもすぐ気づけるようになりますよ。
焦らず、一歩ずつセキュリティのスキルを磨いていきましょうね!
コメント