Implementazione di un attacco di tipo man-in-the-middle (esempio CNG)
Aggiornamento: Luglio 2008
Nell'esempio di comunicazione protetta tramite Cryptography Next Generation (CNG) viene illustrato un attacco di tipo man-in-the-middle in cui una terza parte (Mallory) si inserisce tra due endpoint di comunicazione (Alice e Bob).
Nell'esempio CNG vengono utilizzate named pipe per fornire la comunicazione interprocesso. Alice agisce sempre da server named pipe e Bob da client named pipe. Mallory assume un ruolo client con Alice (ossia, rappresenta Bob) e un ruolo server con Bob (ossia, rappresenta Alice). Questa sostituzione costituisce un classico attacco di tipo man-in-the-middle.
Per informazioni dettagliate sullo scenario, vedere Descrizione dettagliata dello scambio di chiavi e messaggi (esempio CNG).
Nell'esempio CNG il termine rappresentazione viene utilizzato per fare riferimento alla sostituzione di Mallory a Bob o di Mallory ad Alice. Questo termine, tuttavia, ha anche un significato specifico in riferimento alle named pipe, come descritto nella documentazione relativa al metodo NamedPipeServerStream.RunAsClient(PipeStreamImpersonationWorker).
Firme digitali
Per prevenire attacchi di tipo man-in-the-middle, vengono in genere utilizzate le firme digitali. Solitamente, le chiavi di firma vengono fornite e mantenute da un'infrastruttura a chiave pubblica (PKI), che raramente si trova nel computer locale. È in genere supportata da un gruppo di sicurezza o di amministrazione oppure da un'autorità di certificazione. L'utilizzo di tale infrastruttura esula dell'ambito dell'esempio, in cui viene invece illustrato l'utilizzo delle classi CNG per creare chiavi di firma digitale locali.
Punti di inserimento
Un attacco di tipo man-in-the-middle richiede un punto di inserimento nella catena del segnale, che può verificarsi quando i dispositivi hardware fisici che gestiscono la messaggistica sono stati compromessi. Ad esempio, i fili possono essere commutati o reindirizzati, mentre i server delle telecomunicazioni possono subire violazioni e talvolta riconfigurazioni elettriche. Tuttavia, una tecnica più probabile implica la riconfigurazione del software che gestisce la rete. Ad esempio, è possibile che le porte vengano riassegnate e reindirizzate e che un punto di inserimento venga stabilito nell'applicazione di comunicazione.
Piccolo punto debole
Un file aperto in modalità di scrittura non può essere utilizzato da altre applicazioni. Analogamente, quando un client pipe si connette a un server pipe, la pipe viene bloccata per l'utilizzo esclusivo da parte del client e rimane in questo stato finché il client non si disconnette.
Un canale client/server consolidato è molto difficile da violare. Tuttavia, nell'esempio CNG Mallory riesce facilmente a intercettare e modificare i messaggi scambiati da Alice e Bob. In realtà, Mallory non si intromette in un canale pipe consolidato, ma sfrutta un piccolo punto debole sottovalutato dai protocolli di comunicazione della società.
Ad Alice e Bob viene indicato di utilizzare la pipe PublicChannel per condividere il nome di un canale privato e quindi di utilizzare tale canale privato per lo scambio di contatti commerciali. Queste istruzioni consentono a Mallory di ottenere il nome del canale privato e di inserirsi tra Alice e Bob. Nelle due sezioni seguenti viene illustrato in che modo.
Intervallo
Spesso, il successo di un attacco di tipo man-in-the-middle dipende da un piccolo particolare, ad esempio un intervallo di tempo. Nell'esempio CNG viene dimostrato questo concetto.
Mallory è consapevole che il nuovo software di messaggistica immediata sviluppato dalla società si basa su named pipe. È al corrente che Alice e Bob apriranno una pipe denominata PublicChannel e che Alice invierà il nome di una seconda pipe a Bob. Alice e Bob chiuderanno la pipe PublicChannel, quindi apriranno e utilizzeranno la seconda pipe per scambiarsi informazioni sui contatti commerciali.
Per completare il furto di informazioni commerciali, Mallory deve ottenere il nome della seconda pipe da Alice e impedire a Bob di ottenerlo. A tale scopo, non deve fare altro che aprire l'estremità client della pipe PublicChannel prima di Bob.
Il codice sorgente utilizza un'attesa di 200 millisecondi nell'istruzione System.Threading.Thread.Sleep(200) nel metodo Run di Bob per consentire a questa intercettazione. L'istruzione wait è intenzionale ed estremamente visibile, perché lo scopo dell'esempio è dimostrare un attacco di tipo man-in-the-middle. Nella realtà, gli scenari di sicurezza sono molto più difficili da analizzare, in quanto implicano un insieme di applicazioni software, protocolli di trasmissione, procedure di autenticazione di rete, account utente, registrazione, autorizzazioni, formazione degli utenti, monitoraggio del traffico e altre tecniche di analisi.
Nonostante questi metodi sofisticati, un semplice ritardo di propagazione di 200 millisecondi in un server di rete può facilmente passare inosservato per mesi. Per questo motivo, sono state create cinque versioni distinte dell'esempio CNG prima dell'interruzione definitiva delle intercettazioni.
Sostituzione
Intercettando il nome della seconda pipe (AliceAndBobChannel), Mallory è in grado di seguire di nascosto le comunicazioni tra Alice e Bob e di modificare i messaggi che si scambiano. Di seguito viene illustrato come riesce a effettuare questa sostituzione:
Alice apre la pipe PublicChannel in modalità server e attende che Bob si connetta.
Mallory si connette alla pipe PublicChannel in modalità client e riceve il nome della seconda pipe (AliceAndBobChannel) da Alice.
Alice e Mallory chiudono la pipe PublicChannel.
Alice apre la pipe AliceAndBobChannel in modalità server e attende che Mallory si connetta in modalità client.
Mallory si connette a Bob come server sulla pipe PublicChannel e Bob si connette come client.
Mallory invia a Bob il nome della pipe AliceAndBobChannel1 (ovvero, modifica leggermente il nome). Bob crede di ricevere questa informazione da Alice.
Mallory e Bob si disconnettono dalla pipe PublicChannel.
Mallory apre la pipe AliceAndBobChannel1 come server e Bob si connette come client.
A questo punto Mallory è riuscito a inserirsi tra Alice e Bob.
Mallory continua ad agire da client per Alice (tramite la pipe AliceAndBobChannel) e da server per Bob (tramite la pipe AliceAndBobChannel1). Può ora leggere, modificare e ritrasmettere tutti i messaggi desiderati. Alice e Bob non sospettano che i loro messaggi vengano intercettati e modificati.
Un attacco di tipo man-in-the-middle è spesso impercettibile. Per evitare di essere rilevato, Mallory mantiene un basso profilo e modifica solo leggermente i contatti commerciali. Non desidera che le modifiche siano evidenti.
Conclusione
L'individuazione di attacchi di tipo man-in-the-middle richiede tempo, pazienza e molta attenzione. Questo esempio riguarda una singola attesa di 200 millisecondi. Un quinto di secondo è sufficiente per compromettere l'intero reparto vendite.
Vedere anche
Concetti
Cenni preliminari sulla crittografia
Modello di crittografia di .NET Framework
Altre risorse
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Luglio 2008 |
Argomento aggiunto. |
Miglioramento delle informazioni. |