Lo primero que debemos averiguar cuando estamos usando el tcpdump, es las interfaces que queremos escuchar. Por defecto cuando se ejecuta sin parámetros, en los Linux se pone a escuchar en la eth0, mientras que en Windows hay que especificarla la interfaz donde quiere escuchar.
Para averiguar la interfaces en cualquier Unix recurrimos al comando
ifconfig -a el cual nos da una lista de las interfaces que tenemos, así como sus parametros de configuración.
[terron@ux02 ~]$ /sbin/ifconfig -a
eth0 Link encap:Ethernet HWaddr addr
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:646760 errors:0 dropped:0 overruns:0 frame:0
TX packets:449673 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:5 Base address:0x2c20
eth1 Link encap:Ethernet HWaddr addr
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1321583 errors:0 dropped:0 overruns:0 frame:0
TX packets:1778135 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:9 Base address:0x3000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:39747 errors:0 dropped:0 overruns:0 frame:0
TX packets:39747 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
[terron@ux02 ~]$
(en el ejemplo anterior estan borradas las direcciones ip) En el caso de Windows, podemos recurrir al propio windump, para que nos liste las interfaces que tenemos. Para ello ejecutamos un
Windump -D y nos dara la información que buscamos:
C:\Documents and Settings\terron\download>windump -D
1.\Device\Packet_NdisWanIp (NdisWan Adapter)
2.\Device\Packet_{8435447C-6020-481F-A720-44D940909166} (Intel 8255x-based Integ
rated Fast Ethernet)
Usando los datos del ejemplo anterior, en el Linux si queremos escuchar en la interfaz eth0, usaremos
tcpdump -i eth0, mientras que en el caso de Windows si queremos escuchar en la ethernet usaremos
windump -i \Device\Packet_{8435447C-6020-481F-A720-44D940909166}.
Cuando estamos leyendo la red, puede que no nos interese que el tcpdump intente resolver los nombres de las maquinas (pueden que no estin dadas de alta en el DNS, por motivos de seguridad, etc), para ello disponemos de la opción
-n.
Para establecer la longitud de los datos que captura tcpdump usamos
-s len, donde len es la longitud que nos interesa. Por defecto el tcpdump sólo captura los primeros 68 bytes, lo cual es útil si lo único que se quiere son las cabeceras IP, TCP o UDP, pero que en caso de estar esnifando protocolos como el NFS truncan los datos. En ese caso podemos ajustar la longitud de la captura a la MTU del medio que estamos usando con esta opción. Por ejemplo para capturar toda la trama ethernet podemos usar
-s 1500.
En función de la cantidad de información que queramos a la hora de que el tcpdump nos interprete, podemos usar
-v,-vv,-vvv, aumentando el grado de información con cada una de las opciones.
Si queremos imprimir el contenido del paquete, podemos usar la opción
-x. Si ademas queremos que nos imprima en ASCII el contenido de los paquetes podemos usar
-X. La longitud que imprime viene determinada por la opción
-s o los 68 bytes que usa captura por defecto.
Podemos trabajar offline con el tcpdump. Si queremos grabar nuestra captura para posteriormente leerla y analizarla usamos la opción
-w file donde
file es el nombre del fichero donde queremos grabar la captura de datos. Posteriormente podemos leer y analizar offline con
-r file. Además este tipo de ficheros de captura lo pueden leer otros analizadores como por ejemplo
Ethereal.