1. Introduzione
Le aziende che non avevano organizzato sistemi di accesso remoto si sono affrettate a implementarli alcuni mesi fa. Non tutti gli amministratori erano pronti a tale "calore"; di conseguenza, ci sono state carenze nella sicurezza: configurazioni errate dei servizi o anche l'installazione di versioni obsolete di software con vulnerabilità precedentemente scoperte. Alcuni di questi errori sono già tornati come un boomerang, altri hanno avuto più fortuna, ma è sicuramente il caso di trarre delle conclusioni. La lealtà al lavoro a distanza è aumentata notevolmente, e sempre più aziende accettano il lavoro remoto come un formato accettabile su base permanente.
Quindi, ci sono molte opzioni per garantire l'accesso remoto: vari VPN, RDS e VNC, TeamViewer e altri. Gli amministratori hanno molte scelte, basando la loro decisione sulla specificità della rete aziendale e dei dispositivi in essa. Le soluzioni VPN rimangono le più popolari, tuttavia, molte piccole aziende scelgono l'RDS (Remote Desktop Services), poiché sono più semplici e veloci da implementare.
In questo articolo parleremo più approfonditamente della sicurezza dell'RDS. Faremo una breve panoramica delle vulnerabilità conosciute e discuteremo diversi scenari di attacco all'infrastruttura di rete basata su Active Directory. Ci auguriamo che il nostro articolo possa aiutare qualcuno a correggere eventuali errori e migliorarne la sicurezza.
2. Vulnerabilità recenti di RDS/RDP
Qualsiasi software presenta errori e vulnerabilità che possono essere sfruttate dagli aggressori, e l'RDS non fa eccezione. Negli ultimi tempi Microsoft ha frequentemente segnalato nuove vulnerabilità, perciò abbiamo deciso di fare una breve panoramica:
Questa vulnerabilità mette a rischio gli utenti che si connettono a un server compromesso. Un aggressore può assumere il controllo del dispositivo dell'utente o stabilirsi nel sistema per avere accesso remoto permanente.
- / /
Questo gruppo di vulnerabilità consente a un aggressore non autorizzato di eseguire codice arbitrario da remoto su un server con RDS tramite una richiesta appositamente formata. Possono anche essere utilizzate per creare worm — software malevolo che infetta autonomamente i dispositivi vicini sulla rete. Pertanto, queste vulnerabilità possono mettere a rischio l'intera rete dell'azienda, e solo un aggiornamento tempestivo può salvaguardarla.
Il software per l'accesso remoto ha ricevuto una maggiore attenzione sia da parte dei ricercatori che dei malintenzionati, quindi presto potremmo sentire parlare di nuove vulnerabilità simili.
La buona notizia è che non tutte le vulnerabilità hanno exploit pubblici disponibili. La cattiva notizia è che per un malintenzionato esperto, non sarà difficile scrivere un exploit per una vulnerabilità utilizzando una descrizione o tecniche come il Patch Diffing (di cui hanno scritto i nostri colleghi in ). Pertanto, si raccomanda di aggiornare regolarmente il software e di tenere d'occhio nuovi avvisi su vulnerabilità scoperte.
3. Attacchi
Passiamo alla seconda parte dell'articolo, in cui mostreremo come iniziano gli attacchi alle infrastrutture di rete basate su Active Directory.
I metodi descritti si applicano al seguente modello di aggressore: un malintenzionato che possiede un account utente e ha accesso a un Remote Desktop Gateway, un server terminale (spesso accessibile, ad esempio, da una rete esterna). Utilizzando questi metodi, il malintenzionato sarà in grado di continuare l'attacco all'infrastruttura e consolidare la propria presenza nella rete.
La configurazione della rete può variare in base ai casi specifici, ma i metodi descritti sono abbastanza universali.
Esempi di fuga da un ambiente limitato e di elevazione dei privilegi
Quando ha accesso al Remote Desktop Gateway, è probabile che il malintenzionato si trovi di fronte a un ambiente limitato. Durante la connessione al server terminale, viene avviata un'applicazione: una finestra di connessione tramite il protocollo Remote Desktop per risorse interne, un file explorer, applicazioni di produttività o qualsiasi altro software.
L'obiettivo dell'attaccante sarà ottenere accesso all'esecuzione di comandi, ovvero avviare cmd o powershell. Ciò può essere facilitato da alcune tecniche classiche di fuga dalla "sandbox" per Windows. Esamineremo queste pratiche in seguito.
Opzione 1. Il malintenzionato ha accesso alla finestra di connessione Remote Desktop nell'ambito del Remote Desktop Gateway:

Si apre il menu "Mostra Opzioni". Appaiono opzioni per la manipolazione dei file di configurazione della connessione:

Da questa finestra è possibile accedere senza ostacoli a File Explorer, premendo uno dei pulsanti "Apri" o "Salva":

Si apre Esplora file. La sua "barra degli indirizzi" consente di avviare file eseguibili autorizzati, oltre a un elenco del file system. Questo può essere utile per un attaccante nel caso in cui i dischi di sistema siano nascosti e non sia possibile accedervi direttamente:

→
Un simile scenario può essere riprodotto, ad esempio, utilizzando Excel del pacchetto Microsoft Office come software remoto.
→
Inoltre, non si dovrebbe dimenticare i macro usati in questo pacchetto office. I nostri colleghi hanno esaminato il problema della sicurezza dei macro in questa .
Opzione 2. Utilizzando le stesse premesse della versione precedente, l'attaccante avvia diverse connessioni al desktop remoto con lo stesso account. Alla riconnessione, la prima verrà chiusa e apparirà una finestra sullo schermo con un messaggio di errore. Il pulsante di aiuto in questa finestra aprirà Internet Explorer sul server, dopo di che l'attaccante può passare a Esplora file.
→
Opzione 3. Con delle restrizioni configurate sull'avvio dei file eseguibili, l'attaccante potrebbe trovarsi di fronte a una situazione in cui le politiche di gruppo impediscono l'avvio di cmd.exe da parte dell'amministratore.
C'è un modo per aggirare questo avviando un file bat sul desktop remoto con contenuto del tipo cmd.exe /K . L'errore nell'avvio di cmd e un esempio di successo nell'esecuzione di un file bat sono mostrati nell'immagine qui sotto.

Opzione 4. Il divieto di avvio delle applicazioni tramite liste nere basate sui nomi dei file eseguibili non è una panacea, possono essere aggirate.
Consideriamo il seguente scenario: abbiamo vietato l'accesso al prompt dei comandi, vietato l'avvio di Internet Explorer e PowerShell tramite politiche di gruppo. L'attaccante cerca di richiamare l'aiuto — nessuna risposta. Prova a lanciare powershell tramite il menu contestuale della finestra modale, attivata tenendo premuto il tasto Shift — messaggio di divieto di avvio da parte dell'amministratore. Prova a lanciare powershell tramite la barra degli indirizzi — di nuovo nessuna risposta. Come aggirare la restrizione?
Basta copiare powershell.exe dalla cartella C:WindowsSystem32WindowsPowerShellv1.0 nella cartella utente, cambiare nome in qualcosa di diverso da powershell.exe, e la possibilità di avvio sarà disponibile.
Per impostazione predefinita, quando ci si connette a un desktop remoto, viene fornito accesso ai dischi locali del client, da cui l'attaccante può copiare powershell.exe e avviarlo dopo la rinominazione.
→
Abbiamo presentato solo alcuni modi per aggirare le limitazioni; si possono inventare molti altri scenari, ma tutti hanno in comune l'accesso al File Explorer di Windows. Ci sono molte applicazioni che utilizzano gli strumenti standard di Windows per lavorare con i file, e mettendole in un ambiente limitato, è possibile applicare tecniche simili.
4. Raccomandazioni e conclusione
Come vediamo, anche in un ambiente limitato c'è spazio per sviluppare un attacco. Tuttavia, è possibile complicare la vita all'attaccante. Di seguito forniamo alcune raccomandazioni generali che possono essere utili sia nei casi che abbiamo analizzato che in altre situazioni.
- Limitare l'esecuzione dei programmi mediante liste nere/bianche, utilizzando le policy di gruppo.
Tuttavia, nella maggior parte dei casi rimane la possibilità di eseguire codice. Ti consigliamo di dare un'occhiata al progetto , per avere un'idea di modi non documentati per manipolare file ed eseguire codice nel sistema.
Ti consigliamo di combinare entrambi i tipi di restrizioni: ad esempio, puoi consentire l'esecuzione di file eseguibili firmati da Microsoft, ma limitare l'esecuzione di cmd.exe. - Disabilita le schede delle impostazioni di Internet Explorer (puoi farlo localmente nel registro).
- Disabilita tramite regedit l'accesso alla guida incorporata di Windows.
- Disabilita la possibilità di montare dischi locali per connessioni remote, se tale restrizione non è critica per gli utenti.
- Limita l'accesso ai dischi locali della macchina remota, lasciando solo accesso alle cartelle utente.
Speriamo che ti sia stato almeno interessante e, al massimo, che questo articolo aiuti a rendere il lavoro remoto della tua azienda più sicuro.
Fonte: habr.com
