Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

quante volte vi e' capitato di dover controllare un flusso dati ip su di una macchina remota a cui non avete accesso, o che non ha un monitor per poter lanciare wireshark??

a volte ci vorrebbe uno switch cisco con la sua funzione di port mirroring (SPAN o RSPAN) ma non sempre nella rete che stiamo guardando c'e' un device cisco ...

a volte ho suato catturare il flusso dati con tcpdump, salvarlo su file e copiarlo sulla macchina da cui si vuole analizzarlo, ma cio' puo' esser fatto se sappiamo gli stanti temporali esatti in cui dobbiamo monitorare , non se dobbiamo aspettare l' evento

girando in rete tempo fa' avevo trovato che si poteva fare, ma come sempre si va' di fretta ... oggi mi e' riservito e finalmente ho avuto modo di trovarlo

 

in pratica si tratta di creare sulla macchina locale un file FIFO , che e' un file speciale da cui si puo' leggere e scrivere con processi differenti, e tutto cio' che viene scritto da un processo puo' esser letto da un' altro

in questo file, scriveremo l' output del tcpdump remoto , e  lo leggeremo con wireshark come se fosse una scheda di rete

 

 

mkfifo /tmp/wireshark


 

quindi apriremo wireshark da riga di comando, specificando che deve usare come interfaccia di cattura il file FIFO appena creato (-i /tmp/wireshark) e che deve iniziare immediatamente a catturare i dati , manderemo in background il processo di wireshark

 

wireshark -k -i /tmp/wireshark &

 

quindi eseguiremo sulla macchina remota tcpdump lanciandolo atttraverso la connessione ssh , passando a tcpdump una serie di parametri , e mandando l' output di tcpdump sul file FIFO della macchina locale

i parametri che passeremo sono :

-s 0     per indicare di catturare 65535 byte per volta

-n       per non far convertire a tcpdump gli indirizzi ip e le porte TCP/UDP nel corrispondente nome

-w -     per far si che l' output venga scritto sullo standard output (ci serve per trasferirlo sul canale ssh)

-U      per scrivere immediatamente i pacchetti catturati sul file di output senza aspetttare che venga riempito il buffer

-ethx  indica da quale interfaccia dobbiamo catturare i pacchetti (se abbiamo piu' di un' interfaccia

not port 22   se dobbiamo catturare tutto il traffico che passa sull' interfaccia , e il canale ssh passa da quell' interfaccia fa' si che dal flusso catturato venga rimosso (non catturato) cio' che viaggia sulla porta 22 , in pratica il flusso ssh stesso

host xx.yy.zz.dd  se vogliamo catturare i pacchetti da e per un singolo host

 

ssh utente_abilitato_a_tcpdumo@indirizzo_macchina_dove_catturare "tcpdump -s 0 -n -w - -U -i eth1 host 192.168.17.4" >/tmp/wireshark

 

una piccola accortezza che possiamo metter in atto, e' quella di usare l' autenticazione ssh con chiave , onde evitare la richiesta della password , quindi sulla macchina locale dobbiamo aver generato la chiave privata e dobbiamo aver copiato quella pubblica sulla macchina remota

 

cosi' saram molto piu' semplice poter catturare e filtrare un flusso dati remoto, nel mio caso la macchina dove vado a catturare i dati e' un router con openwrt , a cui accedo tramite vpn

 

ATTENZIONE , se come me , ci accedete tramite una chiavetta UMTS , usate questa cattura con parsimonia, se catturate tutto il traffico che passa su di un'interfaccia (filtrando la porta 22) e lo mandate verso il vostro pc locale userete il doppio di banda sulla chiavetta perche' i dati fluiranno tra la rete lan remota e la chiavetta, e una copia 1:1 fluira' verso il vostro PC locale  ...

 

Vai all'inizio della pagina