RDP 列挙と弱いパスワードによるアクセス

LinuxBeginner
オンラインで実践に進む

はじめに

リモートデスクトッププロトコル(RDP)の列挙と悪用(exploitation)に焦点を当てた実践的なラボへようこそ。RDP は、管理者が Windows システムをリモートで管理するために一般的に使用されるプロトコルです。しかし、設定が不適切である場合、重大なセキュリティリスクとなる可能性があります。

このラボでは、敵対者が公開されている RDP サービスをスキャンし、脆弱な設定を特定し、デフォルトまたは推測しやすい認証情報を使用してアクセスを取得するという、一般的な攻撃ベクトルをシミュレートします。スキャンにはnmapのような標準的なペネトレーションテストツールを使用し、リモートセッションへの接続にはxfreerdpを使用します。最終的な目標は、侵害されたシステム内をナビゲートし、隠されたフラグを取得することです。

完了すると、以下の方法を理解できるようになります。

  • ターゲットシステムへのネットワーク接続を確認する。
  • nmapを使用して RDP サービスをスキャンおよび列挙する。
  • 低い暗号化レベルのようなセキュリティ上の脆弱性を特定する。
  • xfreerdpを使用して脆弱な認証情報でアクセスを試みる。
  • 機密情報を特定するために基本的なポストエクスプロイト(post-exploitation)を実行する。

このサイバーセキュリティの実践演習を始めましょう。

Ping でターゲットへの接続を確認する

このステップでは、偵察の最初のフェーズを実行します。これは、ターゲットシステムがオンラインであり、ご自身のマシンから到達可能であることを確認することです。pingコマンドは標準的なネットワーク診断ツールであり、ホストに ICMP パケットを送信して接続性をテストします。

ご自身の環境には、ホスト名target経由でアクセス可能なターゲットシステムが含まれています。それと通信できることを確認するために、ターミナルで以下のコマンドを実行して 4 つのパケットを送信してください。

ping -c 4 target

以下のような応答が表示されるはずです。これは、ターゲットがアクティブであり、ネットワークパスがクリアであることを確認します。IP アドレスと応答時間は若干異なる場合があります。

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.067/0.077/0.105/0.016 ms

接続が確認できたので、より詳細なスキャンに進む準備ができました。

Nmap で開いているポートをスキャンする

このステップでは、nmapを使用してターゲットのオープンポートをスキャンし、それらのポートで実行されているサービスを特定します。これは列挙の重要な部分であり、潜在的な攻撃対象領域を明らかにします。特に、通常ポート 3389 で実行される RDP サービスを確認します。

バージョン検出(-sV)、ポート 3389(-p 3389)のスキャン、および RDP 暗号化レベルを確認するスクリプト(--script)を実行するために、以下のnmapコマンドを実行してください。

nmap -sV -p 3389 --script rdp-enum-encryption target

出力には、RDP サービスに関する詳細情報が表示されます。

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-18 14:51 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00038s latency).

PORT     STATE SERVICE       VERSION
3389/tcp open  ms-wbt-server xrdp
| rdp-enum-encryption:
|   Security layer
|     CredSSP (NLA): SUCCESS
|     CredSSP with Early User Auth: SUCCESS
|     Native RDP: SUCCESS
|     RDSTLS: SUCCESS
|     SSL: SUCCESS
|   RDP Encryption level: High
|     128-bit RC4: SUCCESS
|_  RDP Protocol Version:  RDP 5.x, 6.x, 7.x, or 8.x server

Nmap done: 1 IP address (1 host up) scanned in 13.57 seconds

スキャン結果から、ポート3389/tcpが開いており、xrdpサービスが実行されていることがわかります。暗号化レベルは「High」と表示されていますが、主な脆弱性は暗号化の弱さではなく、弱い認証情報にあります。このサービスは複数の認証方法をサポートしており、次のステップで弱いパスワード認証を悪用します。

RDP でターゲットに接続する

このステップでは、administratorpasswordという認証情報を使用して RDP サービスへの接続を試みます。この組み合わせは一般的なデフォルトであり、ブルートフォース攻撃の主な標的となることがよくあります。Linux 用のコマンドライン RDP クライアントであるxfreerdpを使用します。

まず、xfreerdpがインストールされていることを確認してください。セットアップスクリプトで処理されているはずですが、必要に応じてsudo apt install freerdp2-x11を実行できます。

次に、targetに接続するために以下のコマンドを実行します。

xfreerdp /u:administrator /p:password /v:target
  • /u:administrator: ユーザー名を指定します。
  • /p:password: パスワードを指定します。
  • /v:target: サーバーアドレスを指定します。

ターゲットが自己署名証明書を使用しているため、証明書の警告が表示される場合があります。これはラボ環境では正常です。続行するにはyesと入力して Enter キーを押してください。

[11:25:30:789] [INFO][com.freerdp.client.x11] - Please check if the server is running with the correct certificate.
[11:25:30:789] [INFO][com.freerdp.client.x11] - Certificate details:
...
The certificate is not trusted. Do you trust the certificate? (Y/N) yes
RDP Connection

認証が成功すると、新しいウィンドウが開き、ターゲットシステムのリモートデスクトップが表示されます。これで、マシンへのグラフィカルアクセスが可能になりました。

ターゲットシステムを探索し、フラグを見つける

このステップでは、リモートシステムを探索してフラグを見つけることが最終目標です。これは、攻撃者が貴重なデータを検索するポストエクスプロイテーションフェーズをシミュレートします。

RDP セッションウィンドウ内には、デスクトップ環境が表示されます。フラグを見つけて表示するには、いくつかの方法があります。

方法 1: ファイルマネージャーを使用する

  1. ファイルマネージャー アプリケーション(フォルダアイコンのように見える場合があります)を見つけて開きます。
  2. administrator のホームディレクトリ内の Documents フォルダに移動します:/home/administrator/Documents
  3. flag.txt という名前のファイルを見つけます。
  4. flag.txt をダブルクリックして、テキストエディタ(Mousepad)で開きます。
File Manager

方法 2: ターミナルを使用する

  1. デスクトップまたはメニューから ターミナル アプリケーションを開きます。
  2. コマンドを実行します:cat /home/administrator/Documents/flag.txt
Terminal window showing command to display flag

どちらの方法でも、フラグファイルの内容が表示されます。

labex{w34k_p4ssw0rd_rdp_pwn3d}

おめでとうございます!RDP サービスを正常に列挙し、弱いパスワードを悪用してフラグを取得しました。

重要: ラボの検証を完了するには、フラグの値(value)をコピーして、ホストマシン上のファイルに保存する必要があります。/home/labex/project ディレクトリに flag.txt という名前のファイルを作成し、フラグの内容を貼り付けます。

echo "labex{w34k_p4ssw0rd_rdp_pwn3d}" > /home/labex/project/flag.txt

これで、RDP ウィンドウを閉じてセッションを切断できます。

まとめ

この実験では、設定ミスのあるリモートデスクトッププロトコルサービスに対して、シミュレートされた攻撃を成功裏に実行しました。ペネトレーションテストの主要な段階を順に進めました。

  • 偵察 (Reconnaissance): pingを使用してターゲットがオンラインであることを確認しました。
  • 列挙 (Enumeration): nmapと特定のスクリプトを使用して、開いている RDP ポートを特定し、弱い暗号化レベルなどの設定に関する詳細を収集しました。
  • 攻撃 (Exploitation): xfreerdpを使用して、administratorアカウントの弱く予測可能なパスワードを悪用し、リモートシステムへのアクセスを取得しました。
  • 攻撃後 (Post-Exploitation): 侵害されたシステムのファイル構造をナビゲートし、フラグを見つけて取得しました。

この演習は、リモートアクセスサービスを保護することの重要性を示しています。RDP をインターネットに公開したり、弱いまたはデフォルトの認証情報を使用したり、古いセキュリティ設定を採用したりすることは、深刻な脆弱性を生み出す可能性があります。これらの攻撃ベクトルを理解することで、強力な防御策を実装する準備が整います。