RDP Exposto: A Configuração Incorreta Que Ainda Compensa para Atacantes
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O artigo explica que serviços expostos do Remote Desktop Protocol continuam a servir como um vetor comum de acesso inicial para atacantes. Muitas organizações ainda deixam portas RDP acessíveis pela internet pública, tornando-as alvos fáceis para varreduras automatizadas e tentativas oportunistas de intrusão. O post destaca incidentes do mundo real em que atacantes abusaram do acesso RDP aberto ou portais RDWeb expostos para entrar em ambientes e depois expandir seu acesso por meio de movimento lateral.
Investigação
Os casos descritos incluem uma organização de saúde com uma porta RDP exposta na internet, um incidente envolvendo comprometimento por meio de um portal RDWeb, e uma intrusão em que os atacantes alteraram as configurações de firewall e do registro para ativar o RDP após explorar um dispositivo SonicWall VPN vulnerável. Nesses cenários, os atacantes confiaram em comandos simples do Windows, utilitários de tunelamento reverso e scripts de coleta de credenciais para manter o acesso e se mover mais profundamente na rede.
Mitigação
As defesas recomendadas se concentram na eliminação da exposição desnecessária de RDP, colocando o acesso RDP necessário por trás de firewalls devidamente configurados, rotacionando credenciais após qualquer suspeita de exposição, e alimentando logs de firewall e VPN em um SIEM para uma detecção mais rápida. O artigo também recomenda implantar cobertura EDR e monitorar mudanças no registro que habilitem ou reabilitem serviços RDP.
Resposta
Se atividade suspeita relacionada ao RDP for detectada, os respondedores devem bloquear o endereço IP ofensivo, desativar o serviço RDP, reverter quaisquer alterações maliciosas do registro, confirmar que as regras do firewall não foram alteradas, e redefinir as credenciais afetadas. O monitoramento contínuo para tentativas de acesso repetidas e a validação de todas as mudanças de configuração são também essenciais.
graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef action fill:#99ccff classDef tool fill:#cccccc classDef operator fill:#ff9900 %% Nodes – Techniques tech_scanning_ip[“<b>Técnica</b> – <b>T1595.001</b><br/><b>Nome</b>: Varredura Ativa: Varredura de Blocos IP<br/><b>Descrição</b>: O adversário sonda intervalos de endereços IP para localizar hosts vulneráveis.”] class tech_scanning_ip technique tech_scanning_vuln[“<b>Técnica</b> – <b>T1595.002</b><br/><b>Nome</b>: Varredura Ativa: Varredura de Vulnerabilidade<br/><b>Descrição</b>: Usa ferramentas automatizadas para encontrar vulnerabilidades conhecidas em sistemas remotos.”] class tech_scanning_vuln technique tech_valid_accounts[“<b>Técnica</b> – <b>T1078</b><br/><b>Nome</b>: Contas Válidas<br/><b>Descrição</b>: Uso de credenciais roubadas ou de outra forma comprometidas para obter acesso.”] class tech_valid_accounts technique tech_disable_firewall[“<b>Técnica</b> – <b>T1562.004</b><br/><b>Nome</b>: Desativar ou Modificar o Firewall do Sistema<br/><b>Descrição</b>: Altera a configuração do firewall para permitir tráfego de entrada, como RDP.”] class tech_disable_firewall technique tech_create_modify_process[“<b>Técnica</b> – <b>T1543</b><br/><b>Nome</b>: Criar ou Modificar Processos do Sistema<br/><b>Descrição</b>: Cria ou altera processos do sistema via configuração de registro ou serviço.”] class tech_create_modify_process technique tech_system_services[“<b>Técnica</b> – <b>T1569</b><br/><b>Nome</b>: Serviços do Sistema<br/><b>Descrição</b>: Manipula serviços para executar código malicioso ou manter a persistência.”] class tech_system_services technique tech_discovery_network[“<b>Técnica</b> – <b>T1049</b><br/><b>Nome</b>: Descoberta de Conexões de Rede do Sistema<br/><b>Descrição</b>: Enumera conexões de rede ativas no host comprometido.”] class tech_discovery_network technique %% Nodes – Tools / Commands tool_shodan[“<b>Ferramenta</b> – <b>Nome</b>: Shodan<br/><b>Descrição</b>: Serviço de varredura de internet usado para descobrir serviços expostos, como RDP.”] class tool_shodan tool tool_rdp[“<b>Ferramenta</b> – <b>Nome</b>: Remote Desktop Protocol (RDP)<br/><b>Descrição</b>: Serviço de login remoto do Windows utilizado após roubo de credenciais.”] class tool_rdp tool tool_netsh[“<b>Ferramenta</b> – <b>Nome</b>: netsh<br/><b>Comando</b>: netsh advfirewall add rule name=’RDP-Open’ dir=in protocol=TCP localport=3389 action=allow enable=yes”] class tool_netsh tool tool_reg[“<b>Ferramenta</b> – <b>Nome</b>: reg.exe<br/><b>Comando</b>: reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f”] class tool_reg tool tool_netstart[“<b>Ferramenta</b> – <b>Nome</b>: net start<br/><b>Comando</b>: net start TermService”] class tool_netstart tool tool_adv_ip_scanner[“<b>Ferramenta</b> – <b>Nome</b>: Advanced IP Scanner<br/><b>Descrição</b>: Utilitário de interface gráfica usado para enumerar dispositivos e conexões de rede.”] class tool_adv_ip_scanner tool %% Connections – Attack Flow tech_scanning_ip –>|uses| tool_shodan tech_scanning_ip –>|leads_to| tech_scanning_vuln tech_scanning_vuln –>|leads_to| tech_valid_accounts tech_valid_accounts –>|uses| tool_rdp tool_rdp –>|enables| tech_disable_firewall tech_disable_firewall –>|uses| tool_netsh tech_disable_firewall –>|leads_to| tech_create_modify_process tech_create_modify_process –>|uses| tool_reg tech_create_modify_process –>|leads_to| tech_system_services tech_system_services –>|uses| tool_netstart tech_valid_accounts –>|reused_for| tech_valid_accounts tech_valid_accounts –>|leads_to| tech_discovery_network tech_discovery_network –>|uses| tool_adv_ip_scanner
Fluxo de Ataque
Detecções
Possível Sombreamento de Serviços de Área de Trabalho Remota (via registro_event)
Visualizar
Possível Sombreamento de Serviços de Área de Trabalho Remota (via criação de processo)
Visualizar
Modificações Suspeitas no Firewall via CLI (via linha de comando)
Visualizar
Detectar Modificação de Registro para Habilitar Conexões RDP [Evento de Registro do Windows]
Visualizar
Detecção de RDP Exposto e Modificação de Regras de Firewall [Firewall]
Visualizar
Execução de Simulação
Pré-requisito: O Check de Pré-vôo de Telemetria & Baseline deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
-
Reconhecimento (T1016.001): O adversário realiza uma varredura rápida do sub-rede alvo para identificar hosts com a porta 3389 aberta, usando
Test-NetConnectionem um loop. -
Escalação de Privilégio / Manipulação de Firewall (T1021.001): Tendo obtido direitos de administrador local, o atacante usa
netsh.exepara adicionar uma regra de firewall de entrada permissiva para RDP, expondo assim o serviço à internet. - Verificação Pós-criação: O atacante lista as regras do firewall para confirmar que a nova entrada existe, então inicia uma sessão RDP (fora do escopo deste teste).
-
Reconhecimento (T1016.001): O adversário realiza uma varredura rápida do sub-rede alvo para identificar hosts com a porta 3389 aberta, usando
-
Script de Teste de Regressão:
#--------------------------------------------------------- # Atividade Simulada do Adversário – Exposição RDP via netsh #--------------------------------------------------------- # 1. Escaneie a sub-rede local /24 para portas RDP abertas (recon benigno) $subnet = "10.0.0." 1..254 | ForEach-Object { $ip = "$subnet$_" $result = Test-NetConnection -ComputerName $ip -Port 3389 -WarningAction SilentlyContinue if ($result.TcpTestSucceeded) { Write-Host "[+] RDP aberto em $ip" } } # 2. Adicione uma regra de firewall que permita RDP de entrada de qualquer endereço $ruleName = "TempAllowRDP_$(Get-Random -Maximum 10000)" $netshCmd = "advfirewall firewall add rule name=`"$ruleName`" dir=in action=allow protocol=TCP localport=3389" Write-Host "`n[+] Criando regra de firewall via netsh..." Start-Process -FilePath "$env:SystemRootSystem32netsh.exe" -ArgumentList $netshCmd -Wait -NoNewWindow # 3. Verifique se a regra existe (opcional, ajuda a confirmar telemetria) netsh advfirewall firewall show rule name=$ruleName # Fim do ataque simulado -
Comandos de Limpeza:
#--------------------------------------------------------- # Remova a regra de firewall temporária criada durante o teste #--------------------------------------------------------- $rulePrefix = "TempAllowRDP_" $rules = netsh advfirewall firewall show rule name=all | Select-String -Pattern $rulePrefix | ForEach-Object { ($_ -split 's+')[0] } foreach ($r in $rules) { Write-Host "[*] Excluindo regra $r" netsh advfirewall firewall delete rule name=$r }