[bglug] Cattura di pacchetti

embyte embyte@madlab.it
Ven 25 Giu 2004 23:30:37 CEST


> A è una macchina proprietaria intoccabile che utilizza un router per poter
> spedire dei pacchetti
> verso un host remoto che raccoglie questi pacchetti e li elabora.
> Ora, avrei esigenza di poter avere i pacchetti che A spedisce verso il
> router per poterli interpretare
> ed elaborare a mia volta. Il protocollo è noto.
>
> Ho pensato di mettere tra le due macchine un host linux per catturare i
> pacchetti, elaborarli per le mie
> esigenze ed allo stesso tempo continuare a trasmetterli verso l'host
remoto,
> ma in quel caso dovrei far sì
> che A veda come gateway la mia macchina Linux (non posso toccare nulla su
A)
> ed utilizzare Linux come
> forward verso il router. Allo stesso tempo, non posso nemmeno modificare
> l'ip del router, perchè fa parte
> del prodotto venduto e non ho modo di accedervi.
>
> Purtroppo gli ip delle due macchine proprio non posso toccarli. Ahimè, mi
è
> praticamente impossibile usare
> ettercap sull'host Linux che vorrei installare per catturare i pacchetti,
> che comunque avrei poi difficoltà
> ad elaborare se fossero in un file (non impossibile, ma comunque più
> macchinoso).
> Secondo voi esiste una soluzione al mio problema? Io la vedo veramente
molto
> dura, a meno di mettermi a
> scrivere qualcosa di molto simile ad ettercap che non faccia uso di
ncurses,
> ma anche qui i tempi si
> allungherebbero non di poco.
>
> Collegando una macchina all'hub, potrei comunque catturare i pacchetti che
A
> spedisce per il modo in cui
> un hub gestisce il traffico sulla rete, attraverso tcpdump? In teoria
tutti
> i pacchetti dovrebbero arrivare
> a tutte le macchine che io collegherò all'hub, poi verranno indirizzati
solo
> verso quella che è la macchina
> che stanno cercando. Sbaglio?

Allora, facciamo un pò di chiarezza:
Per leggere del traffico senza passare dal kernel, per esempio direttamente
da datalink non ti serve ettercap (o meglio: ettercap è sprecato e limitato
al tempo stesso perchè non ti fa il decoy dell'application layer). E'
sufficiente uno sniffer codato pazientemente, e qua ti consiglierei tcpdump
o ethereal (il secondo è in GTK).

Se colleghi una macchina all'hub questa riceve *tutto* il traffico che passa
per quel segmento di rete, quindi se setti la modalità promoscua sulla
scheda di rete (modalità in cui la scheda accetta i frame il cui destination
address a datalink layer non è il suo) puoi vedere tutto il traffico
A<->Router. Tale modalità è praticamente impostata di default su ogni
sniffer. Personalmente sceglierei per questa soluzione, la più veloce e la
meno intrusiva di tutte.

Giusto che siamo in argomento:
questa cosa non succede per gli switch in cui il traffico viene indirizzato
solamente alla porta verso cui è raggiungibile il destinatario (lo switch
lavora a layer 2 mantenendo una cache porta/address). Allora li devi giocare
in altro modo, e forse il più conosciuto è l'attacco man in the middle che
si realizza sporcando la cache arp del mittente (A); ed ettercap è il
miglior tool che implementa quest'attacco. Ma ripeto: a te non serve.

Al max. in giro trovi i tap passivi che ti sdoppiano il traffico (occhio che
molti han dei problemi...).

Se no, se potresti intervenire sulla macchina A ti complicheresti di meno la
vita, ma pare che tu questo non lo possa fare.

Visto che lo domandavi: ARP è un protocollo per cui l'implementazione delle
funzioni base di ARP è molto simile tra sistemi operativi diversi. Quindi
anche le due macchine gestiscono questo protocollo come un host linux.

Avrò scritto alla ufa, ma son alquanto stanco stasera.

Marco




Maggiori informazioni sulla lista bglug