** 本記事は、Remote Desktop Protocol: Queries for Investigation の翻訳です。最新の情報は英語記事をご覧ください。**
調査員はインシデント対応の過程で非常に多くの RDP アーティファクトを目にするため、RDP を悪用した活動の特定に役立つツールも当然ながら進化してきました。本記事では、防御者が選択できるオプションのいくつかを幅広く見ていきます。本シリーズの最終回では、Sophos X-Ops の調査員が効率的な調査を実行するための典型的なクエリなど、私たちが頻繁に用いるツールをいくつか紹介します。
まず、防御者は、21-40 ローカルセッションログインイベントについて知る必要があります。これらのイベント ID は接続、切断、再接続、および同様のアクティビティを示すターミナルサービスローカルセッションマネージャーの操作イベントログに用いられます。また、1149 RDP Logins クエリについても知っておく必要があります。このクエリは、ターミナルサービスリモート接続マネージャーの運用イベントログで、(その名が示す通り) イベント ID 1149 を検索し、成功した RDP 接続を検出します。
説明がくどいかもしれませんが、それには理由があります。攻撃者が片方のイベントログを消去して、もう片方のイベントログを消去していない場合があります。これ自体が興味深いアーティファクトです。( Sophos X-Ops のインシデント対応チームは、2023 年に対応した事例の約 32% でログが消去されていたことを指摘しています。)あるいは、何らかの理由でログに記録する際にエラーが発生したため、一方のイベントログにはそのイベントが記録され、もう一方のイベントログには記録されていないのかもしれません。2 つのログが存在する以上、この 2 つを照会するのは無駄ではありません。
「外部 IP からの RDP ログイン」と呼ばれるクエリも同様に、不審な活動を発見するのに役立ちます。このクエリが何をするのかは、名前から明らかです。外部 IP アドレスからの RDP 接続を検索し、前述の両方のイベントログを確認します。(このクエリでは、VPN 経由の接続は検出されません。これらの接続には VPN IP プールから IP アドレスが割り当てられているためです。)
4624_4625 ログインイベントは、一般的には使用されませんが、防御者にとって非常に有用なクエリです。このクエリは、その名前から予想されるように、4624 イベント (成功したログオンを示します) または 4625 イベント (失敗したログオンを示します) をセキュリティイベントログで検索します。これらのクエリは、ネットワークベースのログオン (タイプ 3 のログオンとして記録されます) を探す際に最も役に立ちます。一方、RDP またはターミナルサービス (リモート対話型) ログオンは、タイプ 10 のログオンです。
RDP のラテラルムーブメントの可能性を調査する場合、このクエリは、ネットワークレベル認証が有効になっている場合に失敗したログインを特定するのに役立ちます。RDP では、ログインに失敗し、ネットワークレベル認証 (NLA) が有効になっている場合、4625、つまり失敗したタイプ 3 のログオンが記録されます。
The following query will be of use when seeking devices that do not have NLA enabled (for ease of copying and pasting, we’ll also put a copy of this and other useful queries on our Github): SELECT path, name, data, strftime('%Y-%m-%dT%H:%M:%SZ',datetime(mtime,'unixepoch')) AS last_modified_time FROM registry WHERE key LIKE 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' AND name = 'SecurityLayer' AND data = 0
このクエリを上述のログオンの検出に使用するのは誤解を招く可能性があります。というのも、ネットワークベースのログオンは、RDP 経由のラテラルムーブメントを示すイベントではなく、通常は SMB などに関連するものであるためです。しかし、NLA が有効になっている場合には、ログには試みの失敗、つまり「失敗した RDP 接続 (4625)」 が記録されます。NLA が有効になっている場合に失敗した RDP ログインは、RDP セッションを確立する前にネットワークを介して認証されるため、タイプ 3 のログオンとして表示されます。
このようにログインに失敗したイベントを見ることで、ネットワーク上での試みを検知できます。また、環境の設定ミスに対する警告ともなります。多くの場合、調査員はインシデント対応の際に設定ミスを探します。特に、NLA の無効化は、Restricted Admin Mode の DisableRestrictedAdmin 設定とともに、潜在的なセキュリティ保護を何重にも取り除いてしまうため、危険な (そのうえ一般的な) 設定ミスです。そのため、防御者はレジストリを照会して、NLA が無効になっていることを示す特定のキーと値を検索することで、トラブルが発生する前に間違いを見つけて修正できます。
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