Delorean NTP Main-in-the-Middle tool

Come Bypassare HTTPS

HTTPS: HTTP Strict Transport Security

ATTENZIONE!

Quanto riportato qui di seguito non dev'essere utilizzato per arrecare danno a nessuno.

Introduzione

Negli ultimi anni sono stati rilasciati alcuni attacchi diversi contro SSL / TLS. Alcuni di questi si basano su crittografia o debolezze del protocollo come BEAST, CRIME, BREACH, ecc. SSLStrip (come altri) si basa sulla cancellazione di collegamenti HTTPS per trasferire le comunicazioni dell'utente sempre in HTTP.
Al fine di proteggere gli utenti dagli attacchi SSLStrip è stata sviluppata una nuova protezione denominata HTTP Strict TransportSecurity (HSTS) attualmente supportata dai browser più utilizzati. Tuttavia, in determinate circostanze, un utente malintenzionato potrebbe sfruttare una vulnerabilità di interoperabilità per ignorare la protezione Strict Transport Security e utilizzare altre tecniche di attacco ben note come SSLStrip.
Vediamo i punti di forza e di debolezza dell'HSTS e approfondiamo la vulnerabilità e come è possibile sfruttarla.

La storia

I. STORIA DELL'SSL

SSL / TLS è sicuramente uno dei protocolli più importanti nel campo della sicurezza poiché fa affidamento sulla privacy e sulla sicurezza delle comunicazioni. Per questo motivo, è un obiettivo sensibile sia per gli aggressori che per i professionisti della sicurezza. Negli ultimi anni sono state presentate diverse tecniche. Alcuni di essi si sono concentrate sulle debolezze del design come BEAST, CRIME o BREACH. Altre sono basate sull'esplorazione di alcune debolezze implementative come HeartBleed o la famosa vulnerabilità Apple goto fail.
Moxie Marlinspike ha presentato una delle tecniche più usate, basata sulla rimozione di una precedente connessione HTTP riscrivendo tutti i collegamenti HTTPS in quelli HTTP, modificando le proprietà dei cookie e altre modifiche simili. Perché? Perché gli utenti digitano solo il nome del sito Web nel browser e non il full-URL. La loro prima connessione è sempre di tipo HTTP quindi può essere intercettata e strippata.

HTTPS

II. HTTPS (HTTP STRICT TRANSPORT SECURITY)

Il protocollo HTTP Strict Transport Security (noto anche come HSTS o STS) è la risposta del settore per gli attacchi stripping di Moxie e il suo protocollo SSLStrip.
HSTS definisce una nuova intestazione HTTP chiamata 'Strict-Transport-Security' che può essere inviata da un server web a ai client per specificare una nuova politica relativa a come il browser deve gestire le connessioni future.
Esistono due parametri principali in una politica HSTS.
Uno è il "max-age", che rappresenta la quantità di secondi che il browser deve connettersi in modalità solo HTTPS.
Un browser che riceve una politica HSTS con "max-age: 1000" da "mywebsite.com" rimane connesso 1000 secondi utilizzando HTTPS utilizzando HTTPS se l'utente fa clic su HYPERlinks o anche se l'utente digita un link HTTP. La policy resta attiva per i successivi 1000 secondi dall'ultima connessione HTTPS.
Dopodiché la politica risulta obsoleta e il browser ritorna al suo comportamento abituale.

Un parametro facoltativo in un HSTS è "IncludeSubdomains". Se questo parametro è impostato, la politica HSTS si applica al dominio visitato e a tutti i sottodomini. In caso contrario si applica solo al dominio esatto che l'utente ha visitato.
HSTS impedisce all'utente di usare certificati senza firma o self-signed e ricorda l'autorità di certificazione (CA) che ha firmato il certificato precedente visto.
Purtroppo, L'HSTS non è una funzionalità di sicurezza che è attualmente ampiamente utilizzata in Internet, dal momento che solo pochi siti web la usano. Tuttavia, alcune aziende di riferimento come Twitter, Paypal o Google utilizzano questa funzionalità di sicurezza. Anche i browser desktop supportano questa funzionalità di sicurezza. Alcuni di loro condividono un elenco di siti che contiene gli host e domini che dovrebbero essere configurati automaticamente con HSTS prima della prima connessione HTTPS in modo che gli utenti vengano protetti dopo un'installazione recente o dopo aver cancellato lo stato locale.

NTP

III. NETWORK TIME PROTOCOL (NTP)

I sistemi operativi utilizzano Internet per una grande quantità di attività interne o funzionalità come aggiornamenti software ecc. Una di queste funzionalità è la sincronizzazione temporale. Per impostazione predefinita quasi tutti i sistemi desktop sincronizzano automaticamente il proprio tempo con i server In-ternet (solitamente di proprietà del fornitore del sistema operativo. Esempio: "time.windows.com" per i sistemi operativi Microsoft).
Tutti usano versioni diverse (v3 o v4) del NetworkTime Protocol (NTP) che è ampiamente utilizzato per fornire la sincronizzazione temporale tra computer. I messaggi NTP vengono inviati tramite pacchetti UDP (123 / UDP). Il formato del messaggio è lo stesso per entrambe le richieste e le risposte, ma ogni peer utilizza un diverso set di campi e ignora il resto.

I campi più importanti sono:

  • Leap (LI): Leap è un indicatore di avviso che dovrebbe essere impostato su zero. I client impostano spesso questo valore su 3 (orologio non sincronizzato) quando si sincronizza l'ora della richiesta.
  • Versione (VN): NTPv3 (3) o NTPv4 (4).
  • Modalità: Solitamente client (3) o server (4) a seconda che isa richiesta o risposta. Sono possibili anche altri valori, ma non vengono utilizzati nella configurazione NTP predefinita.
  • Stratum: in genere da 2 a 15. I valori 0 e 1 vengono utilizzati dagli orologi di riferimento e dai server primari e non devono essere utilizzati dai server NTP.
  • Precisione: solitamente -18 o -20 (microsecondi). Precisione dell'orologio di sistema. Valore in log2 secondi
  • Ritardo e dispersione della radice: round-trip totale e dispersione dall'orologio di riferimento. Valore in NTP shortformat.
  • Identificatore di riferimento: identificativo del server, in genere il suo indirizzo IP
  • Timestamp: valori diversi utilizzati dal client per calcolare la data e l'ora correnti. Valori in formato NTP

NTPv4 supporta l'autenticazione basata su crittografia asimmetrica.
Il server firma i messaggi NTP usando la sua privatekey. I client possono verificare l'integrità dei messaggi, quindi le tecniche Man-in-the-Middle non dovrebbero essere possibili. Tuttavia nessun sistema operativo utilizza l'autenticazione quindi tutti possono essere vulnerabili agli attacchi Main-in-the-Middle.

DELOREAN

IV. DELOREAN: UN TOOL NTP MITM

Delorean è un tool per eseguire attacchi NTP Man-in-the-Middle ed è disponibile per il download su Github. Il suo nome è un riferimento al famoso film degli anni '80 "Ritorno al futuro" e alla sua macchina del tempo. Delorean è uno script python basato sul tool ntpserver di kimifly, ma aggiunge alcune opzioni aggiuntive per manipolazione al volo.

Delorean può essere utilizzato in cinque diverse modalità:

$ ./delorean.py -h
Usage: delorean.py [options]

Options:
-h, --help            show this help message and exit
-i INTERFACE, --interface=INTERFACE
                      Listening interface
-p PORT, --port=PORT  Listening port
-n, --nobanner        Not show Delorean banner
-s STEP, --force-step=STEP
                      Force the time step: 3m (minutes), 4d (days), 1M(month)
-d DATE, --force-date=DATE
                      Force the date: YYYY-MM-DD hh:mm[:ss]
-k SKIM, --skim-step=SKIM
                      Skimming step: 3m (minutes), 4d (days), 1M (month)
-t THRESHOLD, --skim-threshold=THRESHOLD
                      Skimming Threshold: 3m (minutes), 4d (days), 1M(month)
-r, --random-date     Use random date each time
  • Automatica: se non è selezionata un'altra modalità, Delorean lavora in modalità automatica. In questa modalità, Delorean prova a trovare una data almeno 1000 giorni in futuro con lo stesso mese giorno e giorno della settimana di quello corrente. Rende più difficile per l'utente di rilevare che qualcosa è accaduto sul suo orologio del computer.
  • Modalità passo (-s): Usando questa modalità puoi scegliere quanti secondi, ore, giorni... vuoi saltare nel futuro. La data e l'ora di base sono l'ora locale e l'ora locale nell'host che esegue Delorean.
  • Modalità data (-d): utilizzando questa modalità è possibile scegliere la data e l'ora esatte in cui si desidera passare al futuro.
  • Modalità casuale (-r): Questa modalità rende a Delorean il toanswer con data e ora diverse per ogni risposta. Utile per testare gli overflow integer e altri simili nelle implementazioni NTP.
  • Skimming Attack (-k & -t): questa modalità fa in modo che DeLorean funzioni in un modo diverso. È compatibile con le modalità precedenti, ma salta al futuro in più passaggi invece di uno singolo (-k). La flag (-t) dice a Delorean di saltare quanto tempo prima del tempo '-k'.

Delorean non può intercettare le comunicazioni, quindi dovrebbe essere usato con altri strumenti come arpspoof + iptables, fakedns di metas-ploit, ecc.

IL TEMPO E GLI OS

V. SINCRONIZZAZIONE DEL TEMPO CON I MAGGIORI SITEMI OPERATIVI

Anche se tutti i principali sistemi operativi utilizzano NTP come protocollo di sincronizzazione temporale su Internet, lo utilizzano in modi diversi. Alcuni di loro sono sincronizzati ogni pochi minuti, altri solo in determinate circostanze o utilizzando più complessi algoritmi.

A. Ubuntu Linux

Ubuntu Linux è forse la distribuzione desktop linux più diffusa. Non esegue un daemon NTP, ma è configurato di default per sincronizzarsi tramite il comando 'ntpdate' ogni volta che un'interfaccia di rete si avvia. Utilizza i messaggi NTPv4 non autenticati, quindi è vulnerabile agli attacchi MitM.
Negli ambienti in cui un malintenzionato può controllare il mezzo fisico (AP falso, controllo di commutazione, disattivazione) può forzare un'interfaccia. Durante la navigazione il tempo è sincronizzato quindi può essere intercettato e manipolato da Delorean.

$ ls /etc/network/if-up.d/
000resolvconf      avahi-daemon    ntpdate     wpasupplicant
antavahi-autoipd   ethtool         upstart

B. Fedora Linux

Fedora Linux forse è un'altra distribuzione linux desktop ampiamente utilizzata. A differenza di quanto accade con Ubuntu, Fedora esegue un NTPdaemon chiamato "chronyd" che si sincronizza ogni minuto.
Utilizza i messaggi NTPv3 non autenticati, quindi è vulnerabile agli attacchi MitM. La configurazione chrony predefinita usa il parametro 'rtcsync' che indica che l'ora del sistema viene copiata sull'orologio in tempo reale ogni 11 minuti.

# netstat -anp | grep 123udp
0   0   0.0.0.0:123   0.0.0.0:*540/chronydudp6
0   0   :::123        :::*540/chronyd

Aspettando fino a un minuto, un utente malintenzionato potrebbe intercettare e gestire tale comunicazione con Delorean e controllare il tempo di sistema (quello visualizzato sul desktop!). Dopo un massimo di 11 minuti di intercettazione di questi messaggi, la nuova ora verrà applicata all'host.

C. Mac OS X Lion

Mac OS X Lion (probabilmente tutte le versioni pre-Mavericks) esegui il daemon NTP chiamato 'ntpd' che si sincronizza ogni 9 minuti. Utilizza i messaggi NTPv4 non autenticati, quindi è mitigabile per gli attacchi MitM.

09:02:18.166708 IP 192.168.1.100.123 > 17.72.148.53.123: NTPv4, Client, length 48
09:02:18.224746 IP 17.72.148.53.123 > 192.168.1.100.123: NTPv4, Server, length 48 
09:11:20.059792 IP 192.168.1.100.123 > 17.72.148.53.123: NTPv4, Client, length 48 
09:11:20.116683 IP 17.72.148.53.123 > 192.168.1.100.123: NTPv4, Server, length 48 
09:20:17.951361 IP 192.168.1.100.123 > 17.72.148.53.123: NTPv4, Client, length 48 
09:20:18.013108 IP 17.72.148.53.123 > 192.168.1.100.123: NTPv4, Server, length 48 

Attendendo fino a 9 minuti, un utente malintenzionato potrebbe intercettare e gestire tale comunicazione con Delorean e controllare l'orario di sistema del desktop.

D. Mac OS X Maverick

Mac OS X Mavericks ha cambiato il suo time synchronizationmodel. Il daemon 'ntpd' esiste ancora ma invia messaggi NTP in un modo meno prevedibile. Tuttavia, anche se non è prevedibile, dovresti essere in grado di intercettare almeno un messaggio NTP in attesa di alcuni minuti. Mac OS X Mavericks si sincronizza ogni 9 minuti, come altri Mac OS X, ma l'intervallo di sincronizzazione aumenta quando il computer non viene utilizzato intensamente. Ad esempio, in un MacBook incustodito aumenta fino a circa 30 minuti o anche più.

$ ps -ef | grep ntpd
0  44  1  0  8:50PM  ??  0:00.04  /usr/sbin/ntpd -c /private/etc/ntp-restrict.conf
								  -n -g -p /var/run/ntpd.pid -f /var/db/ntp.drift

In Mavericks il daemon ntpd non cambia il tempo di sistema da solo. Scrive la deriva rilevata nel file '/var/db/ntp.drift'. C'è anche un'altra importante differenza. Il demone lanciato con l'opzione 'panicgate'. Fa in modo che il daemon ntpd accetti le modifiche di grandi dimensioni (più di 1000 secondi per impostazione predefinita) ma solo una volta.

$ ps -ef | grep pacemaker
0  60  1  0  8:50PM  ??  0:00.10  /usr/libexec/pacemaker -b -e 0.0001 -a 10

Il secondo demone è chiamato "pacemaker" e sta controllando il file di deriva per le modifiche ogni 10 secondi. Si aggancia l'orologio o lo cambia completamente con la nuova data e cronometraggio sulla regolazione necessaria. C'è un'eccezione in questo processo. Quando l'utente apre le "Preferenze di data e ora", l'orologio del sistema si aggiorna automaticamente e viene presa in considerazione qualsiasi restrizione di sicurezza.

E. Microsoft Windows

Microsoft Windows è l'implementazione NTP più sicura dei principali sistemi operativi. Non usa autenticazione (in una configurazione standalone) ma implementa funzionalità di sicurezza aggiuntive che rendono più difficile uno sfruttamento affidabile. Uno di questi è il periodo di sincronizzazione. Windows di default si sincronizza solo una volta alla settimana: domenica alle 02:00. Se il computer non è in esecuzione, la sincronizzazione viene eseguita al successivo avvio (se è nei prossimi tre giorni). La seconda funzione di sicurezza è i parametri "MaxPosPhaseCorrection" e "MinPosPhaseCorrection" impostati nel registro di Windows:

HKEYLOCALMACHINESYSTEM\CurrentControlSet\Services\W32Time\Config

Questi parametri specificano il valore massimo e minimo di secondi a cui l'orologio può essere regolato dalla sincronizzazione temporale. Ogni volta l'aggiornamento maggiore viene automaticamente assegnato. Nei sistemi desktop Windows come Windows 7 o 8, questi parametri sono impostati su 15 ore, mentre nei server come Windows Server 2012 sono impostati su 48 ore. Tuttavia, ci sono molti articoli non ufficiali in Internet che raccomandano di sincronizzare il tempo più spesso, forse ogni ora o anche ogni 5 minuti. Se l'utente imposta il suo computer per sincronizzarlo più spesso del proprio tempo MaxPosPhaseCorretion, il computer diventerebbe vulnerabile attacchi Time Skimming. C'è un'eccezione in questo processo: quando l'utente richiede una sincronizzazione temporale.

TIME SKINNING

VI. TIME SKIMMING

Un Time Skimming Attack funziona in modo simile all'effetto 'Stone Skimming'. Forse l'attaccante non può saltare alla data corretta del futuro, ma se può saltare qualche secondo prima della sincronizzazione successiva potrebbe raggiungere la data corretta facendo più salti nel futuro. Alcune configurazioni di Windows o Mac OS potrebbero risultare vulnerabili a questo tipo di attacchi.


# ./delorean.py -k 12h -t 30s
Sent to 192.168.10.31:123 - Going to the future! 2014-09-27 01:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-27 13:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-28 01:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-28 13:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-29 01:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-29 13:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-30 01:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-30 13:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-01 01:32
Sent to 192.168.10.31:123 - Going to the future! 2014-09-01 13:32
[...]

Browser

VII. browser e funzioni precaricate

L'utilizzo dello strumento Delorean, in determinate circostanze e configurazioni, potrebbe consentire di modificare la scadenza delle politiche HSTS. Tuttavia, nei browser esiste una funzione di sicurezza extra: l'HSTS precaricato. Gli host precaricati sono forzati per impostazione predefinita in modo che non siano vulnerabili agli attacchi di modifica del tempo. Questi host sono "precaricati" ma non "statici" sulla maggior parte dei browser, quindi possono essere vulnerabili.
Esempio: in Chrome gli host forzati nell'elenco HSTS "precaricato" sono configurati con una politica di 1000 giorni. Questi criteri possono essere sovrascritti quando il browser visita l'host per la prima volta. Solo un browser collaudato, Safari, sembra configurare quegli host precaricati come valori statici ('inf' / '- inf'), quindi gli host precaricati da Safari non possono essere attaccati usando queste tecniche.

  • Torna su ⇧
  • Menu