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


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


Archivio: devel@sikurezza.org
Soggetto: Re: Raw Socket
Mittente: Gigi Sullivan
Data: 9 Mar 2004 18:39:22 -0000
Woa!

On Mon, Mar 08, 2004 at 11:18:53PM +0100, Davide Denicolo wrote:
> beh teoricamente se invio ad una qualsiasi macchina non protetta un
> pacchetto ICMP del tipo e codice 0 0 ( echo reply ) solitamente la macchina
> ricevente mi dovrebbe inoltrare un echo request; il mio scopo dovrebbe

   Nope. se invii un pacchetto ICMP di tipo ICMP_ECHOREPLY, l'host
   destinatario lo riceve e basta [1]. A fronte dell'invio di un pacchetto
   ICMP di tipo ICMP_ECHO la macchina target rispondera` -- di default --
   con un ICMP_ECHOREPLY.

> essere quello di deniare l'echo request ed inoltrare un ICMP che invece
> avverte dell'irraggiungibilità dell'host!

   Per poter fare questo [2] puoi agire in ALMENO due modi, IMHO:

      1. regola di firewall che blocca gli ICMP ECHO e applicazione
         userspace che riceve gli ICMP ECHO via AF_INET, SOCK_RAW e/o
         AF_PACKET, SOCK_[RAW|DGRAM] socket e invia all'IP sorgente 
         un pacchetto ICMP di tipo / codice ICMP_DEST_UNREACH / 
         ICMP_HOST_UNREACH. L'IP sorgente di questo pacchetto deve
         essere quello del tuo next hop router. 

      2. come sopra, ma utilizzi socket divert 
         (AF_INET, SOCK_RAW, IPPROTO_DIVERT) e una regola al firewall
         per poter dirottare il pacchetto entrante direttamente sulla
         tua socket [3] (con le socket raw ottieni una copia del
         pacchetto e non il pacchetto stesso: la regola del firewall al
         punto 1. e` necessaria per evitare che l'OS processi cmq il
         pacchetto entrante).

   come accennato nelle note, lo scenario e` didattico e in realta` le
   stesse cose le puoi fare sicuramente utilizzando il framework
   netfilter, direttamente (scrivendo regole per il firewall) o programmando, 
   volendo, dei moduli kernel ad hoc (non necessari ma solo utili 
   didatticamente).

   Chiedo venia per eventuali omissioni/inesattezze, etc. condite il
   tutto abbondantemente di IMHO :)

> Saluti
> 
> 
> Davide

bye,
GG sullivan


[1] se non c'e` un applicazione preposta alla ricezione degli ICMP e se
    non ci sono regole di firewall ad hoc per gestire questi pacchetti
    puoi vedere effettivamente il pacchetto con tcpdump(1) o altra
    applicazione capace di accedere a datalink layer. In genere non c'e`
    "reazione" da parte dell'OS (stiamo sempre parlando della ricezione
    di un ICMP_ECHOREPLY).

[2] lo scenario e` molto restrittivo pero`. parli di negare un ECHO
    (request) solo a scopo "didattico" immagino... (l'host potrebbe
    ricevere qualsiasi altro pacchetto ICMP con tipo != ICMP_ECHO e
    non rispondere con un (ICMP_DEST_UNREACH, ICMP_HOST_UNREACH) quindi
    rimanendo visibile.

[3] le socket DIVERT sono supportate nativamente su BSD. Non
    penso/ricordo se il kernel di Linux le supporta ORA nativamente, ma
    esistono patch al kernel per questo.
    http://www.tldp.org/HOWTO/Divert-Sockets-mini-HOWTO.html

-- 
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)

________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List




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

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