Viva Facebook! (ovvero storia di una serata milanese di 10 anni fa).

Thursday, 23 October 08

Il Seclab

Qualche giorno fa su Facebook ho ritrovato un mio vecchio caro amico con cui ho condiviso una delle fasi più significative del mio rapporto con i computer e con l'hacking. Il teatro dei fatti è Milano, città dove ho vissuto alcuni mesi tra il 1998 e il '99. Ero li per lavorare nella divisione "SECLAB" di una azienda che si chiamava Intesis allora, non so neppure se esiste ancora.

Il SECLAB era un posto con un bel pò di persone che capivano abbastanza seriamente di sicurezza informatica, era un posto stimolante dove lavorare e il capo e il suo vice erano due hacker brillanti ognuno a modo suo: un programmatore ed un sistemista.

Gigi Sullivan!

Anche Lorenzo Cavallaro era al SECLAB in quel periodo. Anche lui si interessava di programmazione, di sicurezza e delle vulnerabilità del TCP/IP. Mi ricordo che qualche giorno prima che io rilasciassi la prima versione di hping (un programma di sicurezza che poi ho sviluppato per diversi anni) stava giocando con le raw socket, ho imparato da lui come si spediva un pacchetto raw. Il suo alter ego era Gigi Sullivan :) e ora è diventato ricercatore da qualche parte in California!

Idle Scan

In quel periodo continuavo a leggere dei libri sul protocollo TCP/IP e fare esperimenti con le prime versioni di Hping. Avevo scoperto delle proprietà del protocollo IP che si potevano usare a scopo di attacco. Queste proprietà combinate con alcune proprietà note del protocollo TCP portavano alla possibilità di un attacco abbastanza complicato ma che per la prima volta permetteva di eseguire degli attacchi su una macchina mascherando il proprio IP.

L' "IP Spoofing" era una cosa mitica per tutti gli addetti ai lavori. Era un attacco vecchio e famoso inventato da alcuni russi, ma non funzionava più da tempo, da quando i numeri di sequenza del TCP erano stati resi non banalmente predicibili. Grazie all'attacco che avevo teorizzato una nuova forma di IP spoofing era finalmente possibile, e ciò era molto interessante per noi. Non permetteva come il vecchio di eseguire connessioni TCP utilizzando un IP diverso, ma quanto meno di vedere se una data porta era aperta o no. In pratica l'Idle scan è una forma di port scanning con IP spoofed.

L'attacco mi frullava in testa da un pò di giorni, non ero sicuro che nella realtà potesse funzionare, e ne parlavo con Lorenzo Cavallaro e Giorgio Basanisi, eppure facevamo i conti a mente e sembrava funzionare davvero. E infatti da li a poco ho modificato hping in modo da rendere possibile l'attacco e ho provato nella pratica la teoria: funzionava tutto davvero!

BAGTRAQ

Se esisteva una cosa mitica e immensa nell'immaginario del ricercatore di sicurezza informatica di quel periodo al pari del pianeta Trantor al centro della Galassia così ben descritto da Asimov era la mailing list BUGTRAQ. Un posto in cui tutti gli hacker postavano e discutevano dei nuovi attacchi, in cui vedevi passare i nomi dei mostri sacri di tutto il mondo, frammenti di codice che permettevano root exploit remoti, discussioni con una quantità e qualità di informazioni che valevano come o più di tanti paper di ricerca.

Qualche giorno dopo che avevo verificato l'attacco nella pratica Lorenzo e altri miei colleghi erano venuti a mangiare a casa mia. Tra una cosa e l'altra ci siamo anche ubriacati abbastanza... e dopo cena eravamo al computer a fare esperimenti vari. Ad un certo punto se mi ricordo bene l'idea è venuta a Lorenzo: perchè non posti il tuo attacco su BUGTRAQ? Gli ho detto che il mio inglese mi preoccupava non sapevo se ero in grado di farlo... ma dopo un pò ci siamo decisi e abbiamo scritto assieme l'email :) E' stato divertente, eravamo allegri ed eccitati, e questo è il testo originale che è venuto fuori:
From: antirez <antirez_at_SECLAB.COM>
Date: Fri, 18 Dec 1998 07:47:57 +0100

Hi,

I have uncovered a new tcp port scan method. Instead all others it allows you to scan using spoofed packets, so scanned hosts can't see your real address. In order to perform this i use three well known tcp/ip implementation peculiarities of most OS:

(1) * hosts reply SYN|ACK to SYN if tcp target port is open, reply RST|ACK if tcp target port is closed.

(2) * You can know the number of packets that hosts are sending using id ip header field. See my previous posting 'about the ip header' in this ml.

(3) * hosts reply RST to SYN|ACK, reply nothing to RST.

The Players:

host A - evil host, the attacker. host B - silent host. host C - victim host.

A is your host. B is a particular host: It must not send any packets while you are scanning C. There are a lot of 'zero traffic' hosts in internet, especially in the night :) C is the victim, it must be vulnerable to SYN scan.

I've called this scan method 'dumb host scan' in honour of host B characteristics.

How it works:

Host A monitors number of outgoing packets from B using id iphdr. You can do this simply using hping:

#hping B -r HPING B (eth0 xxx.yyy.zzz.jjj): no flags are set, 40 data bytes 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=0 ttl=64 id=41660 win=0 time=1.2 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=1 ttl=64 id=+1 win=0 time=75 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=2 ttl=64 id=+1 win=0 time=91 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=3 ttl=64 id=+1 win=0 time=90 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=4 ttl=64 id=+1 win=0 time=91 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=5 ttl=64 id=+1 win=0 time=87 ms -cut- .. .

As you can see, id increases are always 1. So this host have the characteristics that host B should to own.

Now host A sends SYN to port X of C spoofing from B. (using hping => 0.67 is very easy, http://www.kyuzz.org/antirez) if port X of C is open, host C will send SYN|ACK to B (yes, host C don't know that the real sender is A). In this case host B replies to SYN|ACK with a RST. If we send to host C a few of SYN it will reply to B with a few of SYN|ACK, so B will reply to C a few of RST... so we'll see that host B is sending packets!

. .. -cut- 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=17 ttl=64 id=+1 win=0 time=96 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=18 ttl=64 id=+1 win=0 time=80 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=19 ttl=64 id=+2 win=0 time=83 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=20 ttl=64 id=+3 win=0 time=94 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=21 ttl=64 id=+1 win=0 time=92 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=22 ttl=64 id=+2 win=0 time=82 ms -cut- .. .

The port is open!

Instead, if port X of C is closed sending to C a few of SYN spoofed from B, it will reply with RST to B, and B will not reply (see 3). So we'll see that host B is not sending any packet:

. .. -cut- 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=52 ttl=64 id=+1 win=0 time=85 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=53 ttl=64 id=+1 win=0 time=83 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=54 ttl=64 id=+1 win=0 time=93 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=55 ttl=64 id=+1 win=0 time=74 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=56 ttl=64 id=+1 win=0 time=95 ms 60 bytes from xxx.yyy.zzz.jjj: flags=RA seq=57 ttl=64 id=+1 win=0 time=81 ms -cut- .. .

The port is closed.

All this can appear complicated to perform, but using two sessions of hping on Linux virtual consoles or under X makes it more simple. First session listen host B: hping B -r Second session send spoofed SYN: hping C -a B -S

Sorry if my english is not so clear. However this posting is not adequate to describe exaustively this scan method, so i'll write a paper on this topic, specially about how to implement this in a port scanner (i.e. nmap), and about players characteristics and OS used.

happy new year, antirez
C'è voluto un pò prima che l'exploit venisse digerito dalla comunità, ma dopo qualche tempo sono apparse le prime implementazioni, ad oggi la più famosa e stabile e quella implementata dentro il portscanner nmap. Oggi l'idle scan è trattato in molti libri di informatica e viene persino insegnato all'università. Chi lo doveva dire che un post di due ubriachi avrebbe fatto tanta strada? :)
post letto 8325 volte (1.5 letture al giorno in media)
Postato alle 13:29:50 permalink | 14 commenti | stampa | posta | trackbacks

Commenti

Paolo Scrive:
23 Oct 08, 15:22:53
che storia, mi sono quasi emozionato :D
antirez Scrive:
23 Oct 08, 15:38:40
@Paolo: davvero? grandioso, in quei momenti davvero vivevamo una dimensione magica. Infatti da li a poco mi sono disinteressato alla sicurezza informatica perchè è diventata commericiale ed è cambiato tutto. Peccato...

E noi che ripetevamo "la sicurezza non è un prodotto, è un processo", che era anche peggio! Perchè le società di servizi non mi piacciono troppo :)
23 Oct 08, 16:16:41
grande! che tu sia un mito è di pubblico dominio :)
mi stavo emozionando anche io, racconto mistico ;P

per altro mi chiedevo, in che parte ti stessi ancora occupando di sicurezza, ed ecco la risposta decisamente condivisibile!

p.s. allora facebook a qualcosa serve !?!? ;)
kaloz Scrive:
23 Oct 08, 16:54:44
...ciao Salvo, infatti!!! Come ti dicevo l'altro giorno su feisbuk, proprio tu eri menzionato su un testo universitario che stavo studiando, argomentando idle scan, nmap e hping progettista Salvatore Sanfilippo (aka Antirez).
6 grande Salvo ;-)
L'esame universitario è "Sicurezza nelle reti" prof. Marco Cremonini Università degli Studi di Milano, corso Sicurezza dei Sistemi e delle Reti Informatiche.

Ciauz
Giovanni Vigna Scrive:
23 Oct 08, 21:53:37
Lorenzo "Sullivan" Cavallaro lavora con me in California. Peccato che quando ho insegnato l'IP relay scan non mi abbai raccontato questa
"insider story"... :-)
spider Scrive:
24 Oct 08, 06:05:53
M'hai fatto scendere la lacrimuccia, mannaggia a te :-)
Bei tempi e belle teste. Tu, gigi_sull, kasko, roby, il vale, e in seguito anche naga (ettercap).
Peccato per quel che avrebbe potuto essere e per quel che invece è stato...
Mdx Scrive:
24 Oct 08, 10:50:53
Ciao Salvo, mi occupo di sicurezza informatica da diversi anni.
I tuoi tool in particolare hping sono pane quotidiano per chi si occupa di hacking, è un vero peccato che non ti occupi più di sicurezza informatica, c'è davvero bisogno nel panorama italiano di una voce autorevole come alla tua e orientata alla sostanza più che alle chiacchiere.
antirez Scrive:
25 Oct 08, 06:14:06
@andrea: eh a quanto pare serve ;)

@kaloz: grande! con Lorenzo avevamo pensato di fare una piccola pubblicazione, del tipo "l'idle scan 10 anni dopo" per vedere quanti host sono ancora vulnerabili e che evoluzioni hanno subito gli algoritmi che lo implementano magari.

@Giovanni: è riservato che ci vuoi fare ;)

@spider: grazie, è vero il seclab ha fatto la fine peggiore possibile. È nato nel periodo sbagliato da certi punti di vista forse, e comunque sono stati fatti degli errori di gestione probabilmente. A capo c'erano bravi tecnici ma forse senza una visione manageriale sufficiente.

@Mdx: grazie, io ho dovuto seguire la mia vera natura che era quella di sviluppare :) Quando c'è da programmare per guadagnarsi il pane, persino quando c'è da programmare una cosa noiosa, alla fine mi diverto sempre. Quando si parla di sicurezza tranne che non fai il ricercatore (e io non sono lauerato dunque per me non era una possibilità) l'ambito è troppo sistemistico per i miei gusti e non mi diverto più :)
Michele Scrive:
27 Oct 08, 12:06:52
Gran bel racconto :)
Valentjno Scrive:
12 Nov 08, 04:17:56
Salvo, ti seguo da parecchio ...
... te, come Sullivan, naga, e tanti altri, siete i GuRu per tutti coloro che si occupano di sicurezza informatica.
Ora come ora non mi spiego una cosa, dato che, come ha anche segnalato @kaloz, le tue ricerche nel campo informatico sono riprese in testi Universitari, a quando una Laurea Honoris Causa???
hazz Scrive:
12 Jan 09, 13:04:15
Ero nei paraggi in quei tempi,installare Linux senza,un libro senza una rete,era un gran casino,era un periodo,d'oro senza nessuno che condividesse i miei stessi interessi,ma era bello,per imparare che cosa,Che tutto e' un paste and copy or viceversa.Ora sto cercando di imparare i rudimenti,sto iniziando a riscrivere solo con 0 ed 1 till A-f ma e' un gran casino,non c'e' mai tempo
Ed sti fottuti PC ti succhiano il tempo,copy & paste.
Ah che e' sto limone,a me piace arancio.
Giorgio Basanisi (Lord KasKo) Scrive:
19 Jan 09, 12:08:48
E come dimenticarsi, il SECLAB il top ai tempi .. e lo sarebbe ancora oggi... forse era troppo presto. Forse no. Magari mancava quella voglia/competenza per tirare fuori il meglio da una società di gente estremamente competente... ma è acqua passata.
Anti non hai riportato il testo della mail di risposta al Post. un "Good Work" firmato da Aleph One.
@tutti: quando anti è venuto a lavorare con noi, studiava il C da qualche mese. E poi ha tirato fuori Hping. Se qualcuno dovesse chiedermi chi è la persona più geniale con cui hai lavorato. Senza dubbio Antirez
Giorgio Basanisi (Lord KasKo) Scrive:
19 Jan 09, 12:18:40
@MDX: la sicurezza non è piu sistemistica da parecchio tempo. Ora si parla quasi unicamente di sicurezza applicativa e sviluppo sicuro. Nel mondo della security c'è sempre piu spazio per gli sviuppatori!!!
Marco Grazia Scrive:
20 Jan 09, 08:59:45
Lo sviluppo sicuro non basta mai :-)
Basterebbe da solo a rendere sicuri i software. Ok è un ossimoro ma è anche la verità, già basterebbe seguire poche regole per rilasciare software almeno un po' più sicuri e meno patch di aggiornamento ;-)

M.
Comments closed