** 本記事は、Remote Desktop Protocol: Executing the 4624_4625 Login Query の翻訳です。最新の情報は英語記事をご覧ください。**
4624_4625 ログインイベントクエリは、防御者、特にアナリストが成功した RDP ログイン (Windows セキュリティログイベント 4624) と失敗した RDP ログイン (Windows セキュリティログイベント 4625) を識別するための有用なツールとなります。これらのイベントは、システム、ドメインコントローラー、およびワークステーションによって生成されます。
これらの Windows イベントは、もちろんイベントビューアでも確認できますが、本記事 (および YouTube チャンネルに掲載した関連ビデオ) では Sophos Central を使用した分析を実演します。以下で使用する SQL クエリは、Github からどなたでも入手できます。
クエリの構築と実行
今回扱う SQL クエリは以下のようなものです。
SELECT strftime('%Y-%m-%dT%H:%M:%SZ',datetime) AS date_time, eventid AS EventID, CASE WHEN eventid = 4624 THEN eventid || ' - Successful Login' WHEN eventid = 4625 THEN eventid || ' - Failed login' END AS Description, 'Security' AS Source, JSON_EXTRACT(data, '$.EventData.TargetUserName') AS Target_User, JSON_EXTRACT(data, '$.EventData.WorkstationName') AS Source_Machine_Network, JSON_EXTRACT(data, '$.EventData.IpAddress') AS Source_IP, JSON_EXTRACT(data, '$.EventData.ProcessName') AS Process_Name, JSON_EXTRACT(data, '$.EventData.LogonType') AS Logon_Type, JSON_EXTRACT(data, '$.EventData.TargetUserSid') AS Target_User_SID, JSON_EXTRACT(data, '$.EventData.Status') AS Logon_Status_Code, JSON_EXTRACT(data, '$.EventData.TargetDomainName') AS Target_Domain_Name, JSON_EXTRACT(data, '$.EventData.AuthenticationPackageName') AS Authentication_package, NULL AS SessionID, NULL AS Session_ID, 'Security EVTX' AS Data_Source, 'Logins.01.1' AS Query FROM sophos_windows_events WHERE source = 'Security' AND (eventid = 4624 OR eventid = 4625) AND JSON_EXTRACT(data, '$.EventData.TargetUserName') LIKE '$$username$$' AND JSON_EXTRACT(data, '$.EventData.IpAddress') LIKE '$$source_ip$$' AND JSON_EXTRACT(data, '$.EventData.WorkstationName') LIKE '$$workstation$$' AND time > 0
Sophos Central でこの操作を実行するには、次の場所に移動してください。
[脅威解析センター] > [Live Discover] > [デザイナーモード]
さらに、図 1 に示すように [新しいクエリの作成] ボタンをクリックします。
図 1: デザイナーモード画面でのクエリの作成。クエリの新規作成ボタンは画面中央付近の右側にあります。
ボタンをクリックすると、SQL ボックスが表示されるので、そこにクエリを貼り付けます。
このクエリには 2 つの変数がある点に注意してください。1 つは対象となるユーザー名 (username)、もう 1 つはアクセスを試みるエンティティの IP アドレス (source_ip) です。これらはいずれも文字列です。クエリが可能な限り多くの結果を返すように、これらの変数にはワイルドカードを含める必要があります。(ソフォスのインシデント対応調査員が業務でこのクエリを使用する際には、原則としてネットワーク上のすべての Windows デバイスに対して実行しています。初めての実行時、およびその後も随時実行することで、ネットワーク上で何が起きているかを幅広く把握できます。)
ネットワークのすべてのデバイスに対してクエリを実行するには、クエリが貼り付けられているボックスのすぐ上にある変数エディタで、これら 2 つの変数を編集します。[変数エディタを表示] をクリックし、さらに [+ 変数の追加] をクリックします。[変数名] 欄に、最初の変数名 (username) を入力してください。データ型 (String) と SQL 変数名 ($$username$$) は自動で入力されます。次の行に、2 番目の変数 ($$source_ip$$) も同じように入力してください。図 2 に示すように、右側にはワイルドカードを示すパーセント記号 (%) を追加します。
図 2: パーセンテージ記号を入力すれば編集はほぼ完了です。
次に、Filters エリアまでスクロールし、クエリを実行するマシンを選択します。(クエリは Windows のイベントであり、ネットワーク内の macOS や Linux マシンで実行しても意味がないため、フィルタリングする必要があります。)[オンラインステータス](列の一番上) の隣にあるチェックボックスをクリックすると、すべてが選択されます。[選択されたデバイスの更新] をクリックして確認してください。
変数とフィルターが設定されたら、[クエリの実行] をクリックし、システムから未テストのクエリ実行に対する確認画面が表示されたら再度クリックしてください。クエリが実行されます。完了するまでの時間はもちろん、環境の規模、接続速度、そして何よりもイベントログの大きさによって異なります。いずれにせよ、実行が完了すると、結果のテーブルが出力されます。もちろん、Sophos Central でもこれらの情報は確認できますが、CSV ファイルにエクスポートすることで、お好みのスプレッドシートエディタでも確認できます。
結果を理解する
どのように結果を確認するにしても、いくつかのフィールドが注目に値します。
クエリ結果の概要 | |
epName | エンドポイント名 |
date_time | クエリされたログに記録されたイベントの UTC フォーマットでの時刻。date_time でソートすることで、予期しない時刻に発生した活動を特定できます |
EventID | 接続に成功した (4624) か失敗した (4625) か |
Source | これらのクエリ結果が発見されたログ |
Username | 接続が試行されたときに指定されたユーザー名。RDP を試みるべきではないユーザーや、組織の「命名方式」に合わないユーザー名を確認する価値があります。(たとえば、組織内ではシステム管理者アカウントを「Administrator」としている場合、「ADMINISTRATOR」や「admin」などの表記は注意を引くはずです。) |
Source_Machine_Network | 接続した (あるいはしようとした) ホストの実際の名前。見覚えがない名前、あるいは組織の命名方式に合わない名前は、おそらくさらなる調査が必要です |
Source_IP | 発信元 IP アドレス。組織内部からのものでない (つまり、RFC1819 以外の接続かつリモート IP アドレスである) 場合、精査が必要です |
Logon_Type | Microsoft は、さまざまなタイプのログインに 12 種類のコードを割り当てています。この場合、RDP の不正使用を調べる調査員は、タイプ 3 (NLA を経たものを含むネットワークログイン)、タイプ 7 (ワークステーションのロックが解除されたことを示します。このイベントに関連する IP フィールドがリモートアドレスであれば、疑わしいログオンです)、またはタイプ 10 (ターミナルサービスまたは RDP を使用したリモートログイン) に注意することが多いでしょう。 |
上の表では、このクエリで返された結果に基づいて、さらに調査すべき根拠をいくつか挙げています。さらに、その根拠はもう一つあります。このクエリは、RDP の公開に関する潜在的な問題を発見できますが、SMB など、早急な対応が必要な他の何かを発見する可能性もあります。
2024 年現在 (EternalBlue と WannaCry の登場から丸 7 年)、上述のように共有フォルダやドライブをインターネットに公開しておく正当な理由はありません。しかし、インシデント対応チームが 2022 年および 2023 年に扱った事例の 5 件に 1 件には、SMB の不正使用の痕跡がありました。この数字は、ソフォスの IR での調査結果における RDP の圧倒的な優位性 (事例の 90% 以上に RDP 関連の調査結果が含まれます) には及ばないものの、このようなクエリを定期的に実行して組織のログを監視することで、注目に値する結果が実際に得られることを示しています。
Remote Desktop Protocol:記事一覧
パート 1:イントロダクション ([本記事]、動画)
パート 2:公開されている RDP の危険性 (記事、動画)
パート 3:調査でのクエリ活用 (記事、動画)
パート 4:タイムゾーンバイアスの使い方 (記事、動画)
パート 5:外部 RDP クエリの実行 (記事、動画)
パート 6:4624_4625 ログインクエリの実行 (記事、動画)
GitHub のクエリリポジトリ: SophosRapidResponse/OSQuery
スクリプトのリポジトリ: sophoslabs/video-transcripts
Youtube のプレイリスト: Remote Desktop Protocol: The Series