Kevin Mitnick: l’Attacco di Natale

Era il 25 dicembre 1994 quando Kevin Mitnick (detto “il Condor”) sferrò uno dei più celebri attacchi informatici della storia contro il sistema di un suo rivale, l’hacker giapponese Tsutomu Shimomura. In questo articolo voglio raccontarvi come ci riuscì.

Per prima cosa il Condor analizzò la rete di Shimomura, scoprendo che era disponibile rsh (remote shell), un programma che permette di effettuare login da remoto, un po’ come ssh o telnet.

Una questione di fiducia

La cosa interessante è che rsh non era protetto da password, però accettava connessioni solo da indirizzi Ip definiti. Non era possibile collegarsi da qualsiasi computer, era necessario collegarsi da un particolare indirizzo Ip, o da una serie di indirizzi. Questa si chiama “trusted relation”.
Shimomura pensava che era impossibile falsificare un indirizzo Ip e sfruttare la trusted relation. Sbagliava.

A quell’epoca l’Ip spoofing era una tecnica conosciuta in ristretti circoli di esperti di sicurezza e guru del Tcp/Ip; ma anche in questi circoli un attacco basato su questa tecnica sembrava più una questione accademica che un vero pericolo utilizzabile nel mondo reale. Anche loro sbagliavano.

Portare a segno un attacco di spoofing oggi sarebbe quasi impossibile, ma anche all’epoca si trattava di un’operazione complessa, che prevedeva l’utilizzo di un’azione combinata. MaMitnick era determinato e riuscì nell’impresa, una vera e propria mission impossible.

Blind Spoofing

Prima di continuare occorre spiegare cos’è l’Ip spoofing in generale, e il blind-spoofing in particolare.
Una connessione Internet (Tcp/Ip) può essere identificata con quattro parametri fondamentali: l’indirizzo Ip del mittente, l’indirizzo Ip del destinatario, la porta Tcp del mittente e la porta Tcp del destinatario.
Come fa un computer a sapere a chi inviare la risposta a una richiesta? Semplice: prende l’indirizzo Ip dal pacchetto Ip del mittente e quindi è in grado di rispondergli. La creazione di un pacchetto contraffatto, con un Ip sorgente diverso da quello reale è relativamente semplice. Però c’è un problema: se faccio una richiesta ad un server, e modifico l’Ip sorgente mettendo l’Ip di un altro computer, il server non risponderà a me, ma all’indirizzo falso che ho inserito.
Per questo motivo nascondersi in Internet non è così semplice, non basta modificare l’Ip di partenza, perché così facendo non si sarà mai in grado di stabilire una connessione con un computer remoto.
Un Ip spoofing tramite Internet può essere effettuato solo a senso unico: è possibile inviare dati al computer da attaccare, ma non è possibile riceverli.Mitnick non si lasciò scoraggiare da questo limite.

Già tutto questo potrebbe sembrare abbastanza complicato. Ma non basta: c’è un altro problema.

Una connessione Tcp/Ip viene stabilita tramite uno scambio di pacchetti dati di riconoscimento e sincronizzazione: questa fase viene chiamata three-way handshake.
Questa operazione prevede anche l’utilizzo di un Intizial Sequence Number (ISN), un numero casuale di 32 bit senza il quale non è possibile completare il three-way-handshake e quindi è impossibile stabilire la connessione. L’ISN viene mandato dal server al client, il quale deve rispondere incrementando di uno il valore di ISN. Però come abbiamo visto, in un attacco di blind-spoofing non siamo in grado di ricevere i pacchetti dati dal server, quindi non conosciamo l’ISN: bisogna indovinarlo… Ma anche di fronte a questa difficoltà Mitnick non si perse d’animo.

SYN Flooding

Tenetevi forte: c’è un altro problema. Abbiamo visto cos’è l’Ip spoofing e abbiamo visto che in una particolare variante di questo attacco detta blind-spoofing è necessario indovinare l’ISN.
Abbiamo anche visto che se modifichiamo un pacchetto Ip mettendo un indirizzo falso il computer non sarà in grado di inviarci indietro una risposta: a chi la manda la risposta? Naturalmente la manda all’indirizzo falso. Ma se noi mettiamo un indirizzoIp vero, il computer risponderà a questo computer vero.
Nell’attacco che Mitnick stava architettando era necessario inviare pacchetti con un Ip contraffatto, ma corrispondente ad un computer vero, computer con un indirizzo autorizzato a eseguire comandi sulla macchina da attaccare senza dover fornire le credenziali (latrusted relation di cui parlavo prima).

Affinché l’attacco riuscisse era necessario metter fuori uso il computer da impersonare. Era necessario un attacco Denial of Service (DoS). Un attacco DoS è una forma di attacco che ha come scopo proprio quello di metter un computer in condizione di non operare correttamente, negando il servizio che deve offrire.Mitnick aveva bisogno che il computer da impersonare non rispondesse alla richieste che il computer obiettivo inviava, perché questo avrebbe alterato il tentativo di connessione abusiva. Per ottenere questo risultatoMitnick decise di ricorrere ad un SYN Flooding.

Il SYN flooding è un antico attacco DoS ancora oggi in voga. Per capire questo attacco occorre tornare un attimo ad analizzare il Tcp/Ip. Ricordate il three-way-handshake di cui parlavamo prima?
Come dicevo questa operazione viene eseguita scambiando tre pacchetti dati tra client e server. Il primo di questi pacchetti che viene inviato dal client al server come richiesta di connessione, viene inviato con un particolare flag attivato: il flag SYN. Quando il server riceve questo pacchetto riserva una certa quantità di memoria per la connessione in via di completamento.
Se però la connessione non viene completata, la memoria rimane comunque allocata.
Per portare un attacco SYN flooding, l’hacker invia migliaia di pacchetti SYN senza però completare la connessione; il server riserva memoria del sistema per il completamento di connessioni che non verranno mai completate; nel giro di poco tempo il server inizia ad andare in apnea per assenza di risorse. Ad un certo punto il computer smette di rispondere.

Notte di Natale

Kevin Mitnick sapeva che l’attacco era particolarmente complesso, era necessario tempo. Il rischio di essere individuato era alto. Per questo motivo decise di attaccare un giorno in cui tutti abbassano la guardia: il giorno di Natale siamo tutti più buoni, ma il Condor no.

Per condurre il suo attacco Mitnick:

1. Lanciò un SYN flooding contro un computer della rete di Tsutomu Shimomura che aveva una trusted relation con il computer bersaglio.

2. Indovinò l’Initial Sequence Number, aiutato dal fatto che all’epoca in numeri di sequenza non erano criptografici ma sequenziali.

3. Stabilì una connessione a una sola via tramite blind-spoofing con il computer bersaglio, utilizzando l’indirizzo del computer colpito dal DoS come indirizzo sorgente. Poteva inviare comandi, ma non poteva vedere le risposte: gli bastava. Il computer con l’Ip legittimo era fuori gioco, impossibilitato a rispondere sotto attacco SYN flooding.

4. Aggiunse con il comando rsh al file rhosts del computer bersaglio due semplici caratteri: “+ +”. Questi due innocenti segni più dicevano al computer bersaglio: “accetta connessioni da qualsiasi computer e da qualsiasi utente”!

5. Aprì comodamente dal suo computer una sessione x-terminal verso il computer bersaglio, il quale docilmente gli spalancò le porte.

In questo modo Kevin Mitnick portò a segno la più spettacolare intrusione della storia.

Tsutomu Shimomura, punto nell’orgoglio non la prese benissimo. Si intestardì a tal punto che decise di collaborare attivamente con l’FBI che gli diede carta bianca. Fu grazie all’hacker giapponese che il Condor per cinque anni festeggiò il Natale in carcere.

16 Comments
  1. Bell’articolo complimenti; il taglio è tecnico quanto basta per non annoiare chi non ha conoscenze troppo approfondite e non superficiale (e banale) come altri articoli letti in altri blog che spacciano conoscenze banali o uso di tool da lamer per super-hacker esperti in sicurezza (su youtube se ne vedono tanti usare subme).
    Se il taglio del blog è sempre questo lo aggiungo con piacere nel mio feed reader

    Ancora complimenti

  2. @aladar: dei due preferisco l’arte dell’intrusione; interessante anche l’altro, forse un po’ più noioso.

    @Beppe: l’idea è quella; non sempre ci riesco, ma la buona volontà c’è 😉

  3. Pingback: Un Grande Programmatore è anche un grande Hacker? | PillolHacking.Net

  4. Pingback: Il mio kung fu è migliore del tuo « Il blog personale di Cosimo Marasciulo

  5. Pingback: I più Grandi Hackers di Tutti i Tempi: Kevin Mitnick. | PillolHacking.Net

Comments are closed.