Entre las muchas herramientas de que disponemos para el tratamiento de ficheros .pcap, hay una que nos permite la edición de campos de las cabeceras IP, ARP, ICMP, TCP y UDP. Se trata de Bittwiste.
Las motivaciones pueden ser variadas, por ejemplo la ocultación de direcciones reales IP por otras ficticias, ocultación de direcciones MAC, etc.
Vamos a ver com usar esta heramienta. Aunque existe tanto para GNU/Linux como para Windows, en esta ocasión lo veremos en Windows.
Instalando Bittwiste.
Simplmente tenemos que descargar el archivo .zip desde http://sourceforge.net/projects/bittwist/files/Windows/Bit-Twist%201.1/ y descomprimir.
Bueno, no es tan simple. Necesitamos tener Cygwin. Si no lo tenemos, desde la misma página de Bittwiste podemos descargar el .dll y ubicarlo en c:\windows\system32. Ahora sí funciona.
Bittwiste. Uso básico.
El primer ejemplo, yo lo uso mucho así, es modificar las direcciones IP para sustituirlas por otras.
Sintáxis para ello:
bittwiste -I fichero.pcap -O fichero_moddificado.pcap -T ip -s IPs -d IPs
- -I fichero .pcap de entrada
- -O fichero .pcap de salida
- -T ip cabecera a modificar (en este caso IP)
- -s IP origen
- -d IP destino
El ejemplo.
Tenemos la siguiente captura de red:
Se aprecian segmentos TCP desde 192.168.1.5 a 192.168.1.30 y viceversa.Vamos a cambiar en la cabecera IP de la siguiente forma:
- La IP 192.168.1.5 tanto de origen como de destino será ahora 0.0.2.5
- La IP 192.168.1.30 tanto de origen como de destino será ahora 0.0.2.30
Aplicamos bittwiste:
bittwiste -I ejemplo_v1.pcap -O ejemplo_v2.pcap -T ip -s 192.168.1.5,0.0.2.5 -d 192.168.1.5,0.0.2.5
y
bittwiste -I ejemplo_v2.pcap -O ejemplo_v3.pcap -T ip -s 192.168.1.30,0.0.2.30 -d 192.168.1.30,0.0.2.30
El resultado final:
¿ Sólo eso ?.
Bueno no, también podemos modificar los puertos, MAC, protocolo, ttl, etc, etc. Es decir, los campos de las cabeceras IP, TCP, UDP, ICMP, ARP, etc. Tansolo hayque indicar con -T cuál es la cabecera a modificar.
Para TCP podríamos modificar las banderas o flags.
Quremos establecer los flags TCP en SYN solo para los segmentos TCP cuya IP de origen sea 0.0.0.2.5:
bittwiste -I ejemplo_v3.pcap -O ejemplo_v4.pcap -T tcp -f s -s 0.0.2.5
input file: ejemplo_v3.pcap
output file: ejemplo_v4.pcap
13219 packets (865662 bytes) written
El resultado:
Como véis, he usado mediante estos comandos -T tcp -f s -s 0.0.2.5 una especie de filtrado para indicar que solo aplique la modificación a la IP de origen 0.0.0.2.5
La mecánica para todo lo demás es igual de sencilla. Así pues podemos modificar, incluso, números de sencuencia.
Otro filtrado puede ser estableciendo rangos. Con -R podemos (-R 10-75) establecer que se salven solo los paquetes 10 al 75 ó -R 123 solo al paquete 123. También estableceremos rangos de tiempo com -D.
Payload.
Tenemos la posiblidad de añadir (-X), en formato hexadecimal, un payload o carga útil en el Data el paquete (al final). Para ello tenemos que especificar la capa (-L) y cabecera (-T). Ya hemos hablado de la cabecera, para el valor de capa tenemos:
- -L2 para ethernet
- -L3 para ARP e IP
- -L4 TCP, ICMP y UDP
Por ejemplo:
bittwiste -I captura_ftp.pcap -O salida.pcap -X 686f6c6120736f7920616c666f6e -L 4 -T tcp
El resultado:
===
Y esta aquí por hoy. Hasta la próxima.