¿Cómo realizar informática forense en una red hackeada usando TCPDUMP?

La informática forense es uno de los elementos más importantes del hacking ético, ya que permite a los investigadores aprender todo lo posible sobre una red afectada por cibercriminales. Para ello, se requieren herramientas capaces de realizar diversas tareas específicas, incluyendo el análisis de paquetes de red.

En esta ocasión, los expertos del Instituto Internacional de Seguridad Cibernética (IICS) nos mostrarán TCDUMP, una útil herramienta de captura y análisis de paquetes de red que permite ver todos los paquetes entrantes y salientes desde una interfaz específica, todo desde la línea de comandos.

Acorde a los expertos en informática forense, esta herramienta es muy similar a WireShark, además incluye funciones adicionales como el almacenamiento de paquetes capturados para su análisis posterior, lo cual puede realizarse incluso con otras herramientas de hacking. No obstante, ahora mismo nos limitaremos a ver las capacidades de captura de paquetes de tcdump.

Antes de continuar, le recordamos que este artículo fue elaborado con fines informativos y no debe ser tomado como un llamado a la acción. IICS no es responsable del mal uso que pueda darse a la información aquí contenida.

Instalación

Muchas distribuciones vienen con el comando tcpdump por defecto, pero si su distribución no lo tiene, puede instalarlo fácilmente desde los repositorios oficiales. A continuación se muestra un ejemplo para distribuciones Ubuntu/Debian:

sudo apt install tcpdum

Para Fedora, Red Hat y CentOS, usaremos el siguiente comando:

sudo yum install tcpdump

Una vez que la instalación sea completada, podremos continuar.

Comandos de TCDUMP

Antes de pasar a ejemplos prácticos, los expertos en informática forense recomiendan revisar la sintaxis y opciones básicas de la herramienta. El comando tiene la siguiente sintaxis:

$ tcpdump options -i interface filters

Al usar la herramienta, recuerde especificar la interfaz a utilizar, ya que de no hacerlo se usará la primera de la lista por defecto. ​Las opciones personalizan la visualización y las funciones básicas de la utilidad, y los filtros le permiten filtrar los paquetes no deseados. Ahora veamos las opciones principales:

  • -A: muestra todos los paquetes en formato ASCII
  • -c: cierra el programa después de capturar el enésimo número de paquetes
  • -C: al escribir paquetes en un archivo, verifica el tamaño del archivo y, si es más grande que el especificado, se crea un nuevo archivo
  • -D: muestra una lista de interfaces de red disponibles
  • -e: muestra la información del nivel de conexión para cada paquete
  • -f: muestra el nombre de dominio para direcciones IP
  • -F: lee paquetes desde un archivo, no desde una interfaz
  • -G: crea un nuevo archivo de registro después de un período de tiempo específico
  • -H: detecta encabezados 802.11s
  • -i: es el nombre de la interfaz para capturar paquetes. Puede capturar paquetes de todas las interfaces especificando cualquiera
  • -I: cambia la interfaz al modo monitor para capturar todos los paquetes que pasan
  • -j: establece el formato de marca de tiempo para los paquetes de grabación
  • -J: visualiza las marcas de tiempo disponibles
  • -K: no verifica las sumas de comprobación de paquetes
  • -l: agrega soporte de desplazamiento a la salida
  • -L: muestra los protocolos de conexión admitidos para la interfaz
  • -n: no muestra nombres de dominio
  • -r: lee paquetes de un archivo creado con -w
  • -v, -vv, -vvv: salida más detallada
  • -q: muestra información mínima
  • -w: escribe la salida en un archivo
  • -Z: el usuario en cuyo nombre se crearán los archivos

Estas no son todas las opciones, pero serán suficientes por ahora. Sobre los filtros, los expertos en informática forense mencionan que estos pueden filtrar solo los tipos de paquetes que desea ver. Puede filtrar por dirección IP, protocolo, red, interfaz y muchos otros parámetros.

Uso de la herramienta

Antes de pasar a usar tcpdump, debe ver qué interfaces de red puede usar. Para hacer esto, ejecute el comando con la opción -D:

$ sudo tcpdump –D

Comencemos a ver ejemplos de tcpdump capturando tráfico en la interfaz eth0. El programa necesita derechos superuser para funcionar correctamente, así que no olvide especificar sudo:

$ sudo tcpdump -i eth0

Presione Ctrl + C para detener el comando. En la salida, verá inmediatamente todos los paquetes capturados. El formato de grabación de cada paquete se verá así:

13: 03: 41.795599 IP udp032919uds.hawaiiantel.net.6881 > 192.168.1.2.52055 : Flags [.], Seq 640160396: 640161844, ack 436677393, win 2050, options [nop, nop, TS val 3805626438 ecr 4677385], length 1448.

Primero se muestra la marca de tiempo, luego el protocolo, luego la dirección IP del remitente y la dirección del destinatario, en este caso, nuestro sistema. Posteriormente aparecen los parámetros tcp adicionales y al final el tamaño del paquete en bytes. La verbosidad de la salida se puede controlar con las opciones -v, por ejemplo:

$ sudo tcpdump -v -i eth0

Ya hay información sobre el protocolo IP aquí:

IP (tos 0x0, ttl 64 , id 50309, offset 0, flags [DF], proto TCP (6) , length 64)

Según los expertos en informática forense, podemos encontrar información sobre la vida útil del paquete TTL, la versión TCP y la longitud del campo de encabezado. La opción -vv imprimirá el contenido y la comprobación de la suma del paquete en algunos casos. Después de las opciones, puede especificar filtros para paquetes. Estos son los parámetros principales mediante los cuales puede filtrar paquetes:

  • host: nombre de host
  • ip: dirección IP
  • proto: protocolo
  • net: dirección de red o subred
  • port: dirección del puerto
  • src: parámetro relacionado con el remitente
  • dst: parámetro relacionado con el destinatario

Los siguientes protocolos están disponibles: ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp y udp.

Puede combinar todo esto entre sí para obtener el resultado deseado. Echemos un vistazo más de cerca a los ejemplos. Filtremos solo los paquetes dirigidos a nuestro sistema:

$ sudo tcpdump -i eth0 ip dst 192.168.1.2

También podemos seleccionar paquetes enviados a un nodo específico:

Como puede ver, estos son paquetes DNS y, en lugar de indicadores TCP, contiene información útil, una solicitud de la dirección IP del host. También puede seleccionar paquetes de respuesta de un host específico:

$ sudo tcpdump -i eth0 src host google-public-dns-a.google.com

El contenido completo del paquete no está aquí, si desea obtenerlo, debe usar la opción -v o -vv, recomiendan los expertos en informática forense:

$ sudo tcpdump -vv -i eth0 host dst google-public-dns-a.google.com

Con el operador and, puede combinar varios filtros en uno:

$ sudo tcpdump -i eth0 dst host google-public-dns-a.google.com and src host google-public-dns-a.google.com

No es necesario especificar el host, en muchos casos src o dst es suficiente, la utilidad comprenderá lo que significa por sí misma. Se puede utilizar exactamente el mismo diseño para los puertos. Por ejemplo, podemos filtrar todas las solicitudes o respuestas a DNS (en el puerto 53), señalan los expertos en informática forense:

$ sudo tcpdump -vv -i eth0 port 53

Se puede hacer exactamente lo mismo para http (puerto 80):

$ sudo tcpdump -vv -i eth0 port 80

Naturalmente, también puede usar dst y src aquí para obtener resultados más específicos. Puede filtrar no un puerto, sino una amplia gama de puertos:

$ sudo tcpdump portrange 21-23

Si especifica uno de los protocolos, filtrará solo los paquetes de ese protocolo, por ejemplo, tcp, udp o arp:

$ sudo tcpdump -vv arp

Asimismo, puede seleccionar todos los paquetes udp:

$ sudo tcpdump -vv udp

También está disponible un filtro por designación de red:

$ sudo tcpdump net 129.168.1.1/24

Además, puede filtrar paquetes por su tamaño, por ejemplo, menos de 32 bytes:

$ sudo tcpdump less 32

También se pueden filtrar paquetes superiores, señalan los expertos en informática forense:

$ tcpdump greater 128

A veces es necesario guardar el tráfico capturado en un archivo, para esto se usa la opción -w:

$ sudo tcpdump -i eth0 -w file.pcap

Este archivo se puede abrir con cualquier programa para leer dichos archivos, por ejemplo, Wireshark. Para abrir paquetes guardados en un archivo, use la opción -r:

$ sudo tcpdump -r file.pcap

Hay una cosa más a la que vale la pena prestar atención. Este es el formato para mostrar el contenido de los paquetes. Puede mostrar el contenido de un paquete en formato ASCII usando la opción -A:

$ sudo tcpdump -A -i eth0

También puede mostrar contenido en formato HEX y ASCII, use -XX para esto:

$ sudo tcpdump -XX -i eth0

Conclusión

Como puede ver, esta herramienta puede resultar realmente útil para diversas tareas de informática forense. Antes de usarla en entornos reales, recuerde realizar sus pruebas en un entorno seguro o bien contar con el permiso del administrador del sistema analizado. El uso combinado con otras herramientas puede convertir a TCDUMP en una de las mejores herramientas de hacking a su disposición.

Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades y tecnologías de la información, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).