RDP Esposto: La Configurazione Errata Che Ancora Ripaga Gli Attaccanti
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
L’articolo spiega che i servizi esposti di Remote Desktop Protocol continuano a servire come un comune vettore d’accesso iniziale per gli attaccanti. Molte organizzazioni lasciano ancora le porte RDP raggiungibili da internet pubblico, rendendole facili bersagli per la scansione automatizzata e tentativi di intrusione opportunistica. Il post evidenzia incidenti reali in cui gli attaccanti hanno abusato dell’accesso RDP aperto o di portali RDWeb esposti per entrare negli ambienti e poi espandere il loro accesso attraverso movimenti laterali.
Indagine
I casi descritti includono un’organizzazione sanitaria con una porta RDP esposta su internet, un incidente che coinvolge la compromissione tramite un portale RDWeb e un’intrusione in cui gli attaccanti hanno cambiato le impostazioni del firewall e del registro per abilitare RDP dopo aver sfruttato un dispositivo SonicWall VPN vulnerabile. In questi scenari, gli attaccanti si sono affidati a semplici comandi Windows, utilità di tunneling inverso e script di raccolta credenziali per mantenere l’accesso e muoversi più a fondo nella rete.
Mitigazione
Le difese raccomandate si concentrano sull’eliminazione dell’esposizione non necessaria di RDP, nel posizionare l’accesso RDP richiesto dietro firewall configurati correttamente, nel ruotare le credenziali dopo qualsiasi sospetta esposizione, e nell’inserire i log dei firewall e delle VPN in un SIEM per una rilevazione più rapida. L’articolo consiglia anche di implementare la copertura EDR e il monitoraggio per i cambiamenti di registro che consentono o riabilitano i servizi RDP.
Risposta
Se viene rilevata un’attività sospetta legata a RDP, i responder dovrebbero bloccare l’indirizzo IP offensivo, disabilitare il servizio RDP, annullare eventuali modifiche malevole del registro, confermare che le regole del firewall non siano state alterate e reimpostare le credenziali compromesse. Il monitoraggio continuo per tentativi ripetuti di accesso e la convalida di tutte le modifiche di configurazione sono anche essenziali.
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>Tecnica</b> – <b>T1595.001</b><br/><b>Nome</b>: Scansione attiva: Scansione di blocchi IP<br/><b>Descrizione</b>: L’avversario sonda intervalli di indirizzi IP per individuare host vulnerabili.”] class tech_scanning_ip technique tech_scanning_vuln[“<b>Tecnica</b> – <b>T1595.002</b><br/><b>Nome</b>: Scansione attiva: Scansione delle vulnerabilità<br/><b>Descrizione</b>: Utilizza strumenti automatici per trovare vulnerabilità note nei sistemi remoti.”] class tech_scanning_vuln technique tech_valid_accounts[“<b>Tecnica</b> – <b>T1078</b><br/><b>Nome</b>: Account validi<br/><b>Descrizione</b>: Utilizzo di credenziali rubate o comunque compromesse per ottenere accesso.”] class tech_valid_accounts technique tech_disable_firewall[“<b>Tecnica</b> – <b>T1562.004</b><br/><b>Nome</b>: Disabilitare o modificare il firewall di sistema<br/><b>Descrizione</b>: Alterare la configurazione del firewall per consentire traffico in entrata come RDP.”] class tech_disable_firewall technique tech_create_modify_process[“<b>Tecnica</b> – <b>T1543</b><br/><b>Nome</b>: Creare o modificare un processo di sistema<br/><b>Descrizione</b>: Crea o modifica processi di sistema tramite configurazione del registro o del servizio.”] class tech_create_modify_process technique tech_system_services[“<b>Tecnica</b> – <b>T1569</b><br/><b>Nome</b>: Servizi di sistema<br/><b>Descrizione</b>: Manipola i servizi per eseguire codice malevolo o mantenere la persistenza.”] class tech_system_services technique tech_discovery_network[“<b>Tecnica</b> – <b>T1049</b><br/><b>Nome</b>: Scoperta delle connessioni di rete di sistema<br/><b>Descrizione</b>: Enumera le connessioni di rete attive sull’host compromesso.”] class tech_discovery_network technique %% Nodes – Tools / Commands tool_shodan[“<b>Strumento</b> – <b>Nome</b>: Shodan<br/><b>Descrizione</b>: Servizio di scansione a livello Internet utilizzato per scoprire servizi esposti come RDP.”] class tool_shodan tool tool_rdp[“<b>Strumento</b> – <b>Nome</b>: Remote Desktop Protocol (RDP)<br/><b>Descrizione</b>: Servizio di accesso remoto Windows utilizzato dopo il furto di credenziali.”] class tool_rdp tool tool_netsh[“<b>Strumento</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>Strumento</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>Strumento</b> – <b>Nome</b>: net start<br/><b>Comando</b>: net start TermService”] class tool_netstart tool tool_adv_ip_scanner[“<b>Strumento</b> – <b>Nome</b>: Advanced IP Scanner<br/><b>Descrizione</b>: Utilità GUI utilizzata per enumerare dispositivi e connessioni di rete.”] 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
Flusso d’attacco
Rilevazioni
Possibile Shadowing dei Servizi di Desktop Remoto (tramite evento di registro)
Visualizza
Possibile Shadowing dei Servizi di Desktop Remoto (tramite creazione di processo)
Visualizza
Modifiche sospette del firewall via CLI (tramite cmdline)
Visualizza
Rileva modifica del registro per abilitare le connessioni RDP [Evento Registro di Windows]
Visualizza
Rilevazione di RDP esposto e modifica delle regole del firewall [Firewall]
Visualizza
Esecuzione della simulazione
Prerequisito: Il controllo preliminare della telemetria e del basale deve essere passato.
Ragione: Questa sezione dettaglia l’esatta esecuzione della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevazione. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirano a generare l’esatta telemetria prevista dalla logica di rilevazione.
-
Narrazione dell’attacco e Comandi:
-
Ricognizione (T1016.001): L’avversario esegue una rapida scansione della sottorete di destinazione per identificare host con la porta 3389 aperta, usando
Test-NetConnectionin un ciclo. -
Escalation dei privilegi / Manipolazione del firewall (T1021.001): Dopo aver ottenuto diritti di amministratore locale, l’attaccante utilizza
netsh.exeper aggiungere una regola del firewall permissiva in entrata per RDP, esponendo così il servizio a internet. - Verifica post-creazione: L’attaccante elenca le regole del firewall per confermare l’esistenza della nuova voce, quindi avvia una sessione RDP (fuori dall’ambito di questo test).
-
Ricognizione (T1016.001): L’avversario esegue una rapida scansione della sottorete di destinazione per identificare host con la porta 3389 aperta, usando
-
Script di test di regressione:
#--------------------------------------------------------- # Attività simulata dell'avversario – Esposizione RDP tramite netsh #--------------------------------------------------------- # 1. Scansiona la sottorete locale /24 per porte RDP aperte (ricognizione benigna) $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 aperto su $ip" } } # 2. Aggiungi una regola del firewall che consenta RDP in entrata da qualsiasi indirizzo $ruleName = "TempAllowRDP_$(Get-Random -Maximum 10000)" $netshCmd = "advfirewall firewall add rule name=`"$ruleName`" dir=in action=allow protocol=TCP localport=3389" Write-Host "`n[+] Creazione della regola del firewall tramite netsh..." Start-Process -FilePath "$env:SystemRootSystem32netsh.exe" -ArgumentList $netshCmd -Wait -NoNewWindow # 3. Verifica l'esistenza della regola (opzionale, aiuta a confermare la telemetria) netsh advfirewall firewall show rule name=$ruleName # Fine dell'attacco simulato -
Comandi di pulizia:
#--------------------------------------------------------- # Rimuovere la regola temporanea del firewall creata durante il test #--------------------------------------------------------- $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 "[*] Eliminazione regola $r" netsh advfirewall firewall delete rule name=$r }