Netsniff-ng. Un sniffer diferente de alto rendimiento. Parte I.

Seguimos con un nuevo artículo dedicado a sniffers o capturadores de paquetes tráfico de red.
En esta ocasión una herramienta algo diferente a las demás: netsniff-ng.  Principalmente porque no le hace falta las típicas librerías libpcap, aunque se pueden tratar archivos en formato .pcap, tiene un modo de ejecución de alto rendimiento y la salida tampoco se ajusta a lo visto, por ejemplo, con tshark, windump, TCPDump, argus, bro, etc. Vermos también, a lo largo de otros capítulos, alguans de las herramienta que acompañan.
  • (Actualizado 14/12/2012 para instalación versión 0.5.7)
  • 22-03- 2013 – Disponible ya la Parte 2.
Lo vemos.

Instalación netsniff-ng

wget http://www.netsniff-ng.org/pub/netsniff-ng/netsniff-ng-0.5.5.0.tar.gz
tar zxf netsniff-ng-0.5.5.0.tar.gz
cd netsniff-ng
cd src
make
sudo make install

Actualizo para versión 0.5.7

 cd netsniff-ng-0.5.7/src/
 mkdir build
 cd build
 cmake ..
 make
 sudo make install

Es posible que con cmake se nos devuelva algún error de librerías que no tenemos. Las instalamos manualmente o mediante el gestor de software de Ubuntu por ejemplo.

Estas librerías pueden ser:

  • glibc (all)
  • libpthread (curvetun, netsniff-ng, flowtop)
  • libncurses (ifpps, flowtop)
  • libGeoIP and its database (ashunt, flowtop)
  • ntpd [or equivalent] (curvetun)
  • libnacl (curvetun)
  • libnetfilter-conntrack (flowtop)
  • liburcu (flowtop)
  • libcli (trafgen)
  • libnl (netsniff-ng, trafgen)

Listo, ya está instalado.

Uso básico de netsniff-ng.

El uso más básico pasa por indicar una interface de red (-d) o un fichero .pcap (-i). Una lista de las interfaces que tenemos disponible con -I.

Pero hay mucho más. Lo primero es analizar como es la salida de netsniff-ng. Para ello capturamos desde la inteface de red y realizamos un sencillo ping:

sudo netsniff-ng -deth0

Un momento. Me surge un problema. Estoy conectado mediante SSH al host donde se encuentra netsniff-ng, así que este capturará también todo el tráfico SSH. Para que capture solo ICMP, habrá que aplicar algún filtro.

Los filtros netsniff-ng son en formato BPF (Berkley Packet Filter), pero además deben ser introducidos en un fichero para leerlo mediante -f. Netsniff-ng disponen en /etc/netsniff-ng/rules de una serie de ficheros preconfigurados para diferentes protocolos. En mi caso usaré: icmp.bpf. Así pues la línea de comandos quedará:

sudo netsniff-ng -deth0 -f /etc/netsniff-ng/rules/icmp.bpf

Aunque también podríamos haber aplicado otro filtro más adecuando: not_ssh.bpf.

Observad bien el resultado porque aquí radica una de las  diferencias con otros sniffers tipo tcpdump. Para entenderlo mejor, más abajo lo compraremos con una salida Wireshark:

En verde tenemos el parseado del filtro BPF, en azul el icmp echo request y en rojo icmp echo reply.

Vemos el echo request:

< 74 Byte, Unix TS (1320998570 s 537387 us), Fri Nov 11 09:02:50 2011
 [ MAC (00:04:75:ed:89:df => 00:14:22:5e:cc:af), Proto (0x0800, IPv4) ]
 [ Vendor (3 Com Corporation => Dell Inc.) ]
 [ IPv4 Addr (192.168.1.5 => 192.168.1.96), Proto (1), TTL (128),
   TOS (0), Ver (4), IHL (1280), Tlen (60), ID (37204),
   Res: 0 NoFrag: 0 MoreFrag: 0 offset (0), Chsum (0x25b7) is ok ]
 [ ICMP Type (8), Code (0), Chsum (0x415c) ]
 [ Payload hex  (61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68
   69 ) ]
 [ Payload char (a b c d e f g h i j k l m n o p q r s t u v w a b c d e f g h i ) ]

Lo primero que se observa es que esta salida se asemeja, en modo texto, a la zona de detalle de paquete en Wireshark:

De esta forma, netsniff-ng mestra de forma estructurada todos los datos del paquete incluído el payload, campos de protocolo, etc.

Si no queremos que aparezca el payload, añadimos -N.

Observad parte el payload (Data), marcado en azul en la captura Wireshark que se corresponde en netsniff-ng con Payload char.

Sobre interpretación del tráfico ICMP, aquí os hable en su momento:

Análisis capturas tráfico de Red. Interpretacion tráfico ICMP (I).

Otros filtros BPF, por protocolos / tipo de tráfico, que tenemos ya preconfigurados son:

  • all_traffic.bpf
  • arp.bpf
  • atalk.bpf
  • broadcast.bpf
  • ftp.bpf
  • http.bpf
  • icmp.bpf
  • icq.bpf
  • imap.bpf
  • ip_broadcast.bpf
  • ip_multicast.bpf
  • multicast.bpf
  • not_ip.bpf
  • not_ssh.bpf
  • pop3.bpf
  • rarp.bpf
  • rsync.bpf
  • skype_pre.bpf
  • smtp.bpf
  • ssh.bpf
  • vlan1000.bpf

Vamos aplicar otro filtro y un formateo de salida (-l) para imprimir en pantalla solo la información contenida en el payload.

sudo netsniff-ng -i ./pcap1/ftp.pcap -f /etc/netsniff-ng/rules/ftp.bpf -l

De esta forma en pantalla tendremos todo el trafico ftp (comandos incluidos, usuarios contraseñas, etc) en texto plano:

Sobre filtros BPF, .pcap, etc:

Wireshark / Tshark / Windump – Filtros pcap. Creación de filtros y filtros avanzados para captura de paquetes.

Comandos básicos y usuales netsniff.ng.

Podemos evitar (una de las formas)  que netsniff-ng muestre el payload con (-q) y cada paquete se muestre en una sola línea y con una información mínima que incluye entre otros:

  • bytes
  • marca de tiempo
  • protocolo y vetrsión IP
  • origen, destino
  • suma comprobación
  • puertos origen destino:

Con -e (expresión regex) podemo realizar una búsqueda en la captura. Lo probamos indicando también un fichero .pcap:

netsniff-ng -i ./pcap/captura.pcap -e «elmundo»

Podemos también capturar desde una interface red y pasar la catura a un fichero .pcap (–dump o -p). Es posible que no nos interese imprimir el resultado en pantalla, con lo que aplicamos también -s.

Quedará sí:

sudo netsniff-ng -deth0 –dump salida.pcap -s

Otro filtro que podemos aplicar es el tipo de tráfico, atendiendo a:

  • broadcast para ver solo tráfico broadcast
  • multicast para ver solo tráfico multicast
  • host para ver solo tráfico de entrada a al host netsniff-ng
  • others para ver solo el tráfico no host
  • outgoing para ver solo tráfico salida desde el host

Un ejemplo:

sudo netsniff-ng -deth0 -t outgoing -q

Como vemos en la captura de pantalla, solo vemos los paquetetes icmp echo reply :

Ya teneis disponible la Parte 2:

Netsniff-ng. Un sniffer diferente de alto rendimiento. Parte 2.

Y ya que estamos, relacionado con los sniffers…. Detección de sniffer:

Detección de Sniffers.

—–

Hasta la próxima.

Esta entrada fue publicada en Interpretación capturas tráfico red. pcap, Interpretación capturas tráfico red. pcap, Seguridad y redes. Guarda el enlace permanente.

5 respuestas a Netsniff-ng. Un sniffer diferente de alto rendimiento. Parte I.

  1. Pingback: Tcpick un sniffer que realiza seguimiento y reensamblado de flujos tcp. Mostrando datos payload. | Seguridad y Redes

  2. Pingback: Gulp y los mecanismos de rendimiento en herramientas de captura de red .pcap. | Seguridad y Redes

  3. wwwuser.Madriz dijo:

    buen artículo!

  4. Pingback: Netsniff-ng. Un sniffer diferente de alto rendimiento. Parte 2. | Seguridad y Redes

Deja un comentario