[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


Archivio: Aprile 2005 ml@sikurezza.org
Soggetto: Re: [ml] Abbattere il TCP via ICMP
Mittente: Gigi Sullivan
Data: Sun, 24 Apr 2005 17:15:38 +0200 (CEST)
Ciaps,

On Fri, Apr 22, 2005 at 10:33:58AM +0200, koba@xxxxxxxxxxxxx wrote:
> ----- Forwarded message from Dario Lombardo <dario.lombardo(at)libero.it> -----
> From: Dario Lombardo <dario.lombardo(at)libero.it>
> Subject: Re: [ml] Abbattere il TCP via ICMP
> 

<snip>

> Se provi la poc che hanno rilasciato e sniffi un pacchetto in rete 
> vedrai questo:

<snip>

> *  *  Transmission Control Protocol, Src Port: 23 (23), Dst Port: 0 (0)
>        Source port: 23 (23)
>        Destination port: 1000 (1000)
> 
> 
> Come vedi nella parte finale (payload icmp) si riporta il pacchetto che 
> avrebbe scatenato l'icmp. Anche tu dici che la faccenda riguarda il 
> fatto che l'implementazione ignora il seqnum presente in questo payload, 
> rendendo facile l'attacco in quanto ci si basa solo sulla porta. Ora la 
> domanda e': dov'e' questo benedetto seqnum? E' l'implementazione della 

   se provi a vedere il dump raw del pacchetto (i.e., non la decodifica a
   "descrizione" fatta da Ethereal), dovresti vedere anche il seqnum in
   questione (0x23484f44 in host byte order, se non erro). Probabilmente
   Ethereal non riesce a decodificare bene quello che segue perche` non c'e`
   tutto l'header TCP, ma solo, com'e` giusto che sia, i suoi primi 8 byte
   (sport, dport e seqnum); provando invece a far generare un ICMP dest
   unreach dal kernel, si vede che c'e` tutto l'header TCP [1] ed Ethereal non
   fa fatica a mostrare i suoi campi e valori.

> poc che non e' corretta? O tutti i pacchetti di proto unreachable 

   dall'ICMP ricevuto e da una sfogliata veloce al codice mi sembra che la 
   poc sia corretta, nel senso che fa quello che dice; non so se quello che
   dice e` giusto, cmq :)

> riferiti al TCP hanno questa conformazione? La domanda e' questa.

   Tutti i pacchetti ICMP destination unreachable devono includere, come
   loro payload, i primi 64 bit del pacchetto che ha scatenato l'errore,
   come da RFC 792. 

> Il dissector di ethereal visualizza correttamente il pacchetto, quindi 
> questo farebbe pensare ad un payload giusto. Ma se e' cosi' dov'e' il 
> seqnum di cui abbiamo parlato?

   vedi sopra (.

   Ah, come al solito, condite tutto cio` appena detto, con abbondante IMHO :)

bye,
GG sullivan

[1] per provare, semplicemente, ad esempio: 
    # iptables -I INPUT -i lo -j REJECT
    $ nc 127.0.0.1 22

    tcpdump -Xni lo riporta tutto, giustamente.

PS: il kernel di Linux non dovrebbe essere vulnerabile a questo tipo di
    attacco, come si puo` notare da net/ipv4/tcp_ipv4.c::tcp_v4_err(), linea
    1019 (kernel 2.4.26)... sempre se ho visto bene e non come da solito rinco
    che sono :)

-- 
Lorenzo Cavallaro `Gigi Sullivan' <sullivan@xxxxxxxxxxxxx>

Until I loved, life had no beauty;
I did not know I lived until I had loved. (Theodor Korner)

See the reality in your eyes, when the hate makes you blind. (A.H.X)

Attachment: signature.asc
Description: Digital signature




[ Home | Liste | F.A.Q. | Risorse | Cerca... ]

www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005