Tcpdump capturar paquetes GET y POST

Tcpdump es la mejor herramienta de línea de comandos para analizar e interceptar tráfico de red entrante y saliente en las redes.
Tcpdump funciona en la mayoría de los sistemas operativos UNIX: Linux, Solaris, BSD, Mac OS X, HP-UX y AIX entre otros. En esos sistemas, tcpdump hace uso de la biblioteca libpcap para capturar los paquetes que circulan por la red.

Parámetros

tcpdump [-aAdDeflLnNOpqRStuUvxX] [-c count] [ -C file_size ]
           [ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]
           [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
           [ -W filecount ] [ -y datalinktype ] [ -Z user ]
           [ expression ]
-A: Imprime cada paquete en [[código ASCII]]
-D: Imprime la lista de interfaces disponibles 
-n: No convierte las direcciones de salida
-p: No utliza la [[interfaz]] especificada en [[modo promiscuo]]
-t: No imprime la hora de captura de cada [[Trama de red|trama]]
-x: Imprime cada paquete en [[hexadecimal]]
-X: Imprime cada paquete en [[hexadecimal]] y [[código ASCII]]
 
-c count: Cierra el [[Software|programa]] tras recibir 'count' paquetes
-C file_size
-E algo:secret
-F file
-i interface: Escucha en la interfaz especificada
-M secret
-r file
-s snaplen
-T type
-w file: Guarda la salida en el [[Archivo (informática)|archivo]] 'file'
-W filecount
-y datalinktype
-Z user

Capturar paquetes del puerto 80 con el metodo GET

El valor 47455420 en ascii es GET

tcpdump -i eth0 -A port 80 and 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

Capturar paquetes del puerto 80 con el metodo POST

El valor 504f5354 en ascii es POST

tcpdump -i eth0 -A port 80 and 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'

Capturar y guardar paquetes del puerto 80 con metodo GET y POST

tcpdump -w /home/admin/cap/data/out.pcap -i eth0 -s 0 port 80 and '(tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420)'

Ahora juntemos todo en un solo script y agregamos una tarea en el cron job

El archivo tcpdumphttp.sh, lo que hace es iniciar un nuevo proceso tcpdump en segundo plano, este proceso captura los paquetes GET y POST, cuando el script se vuelve a ejecutar, elimina el proceso activo, comprime el archivo pcap a tar.gz y luego elimina el archivo .tar.gz más antiguo y luego vuelve a iniciar el proceso.

#!/bin/bash
FOLDER=/home/admin/cap/data/
cd $FOLDER
NAMEFILE=port80-`date +%Y-%m-%d-%H%M%S`.pcap
echo "Nuevo archivo: $NAMEFILE"
PROCESO=$(ps -u tcpdump | grep "tcpdump" | head -1 | awk '{print $1}')
if [[ $PROCESO > 0 ]]; then
        echo "Parar proceso: $PROCESO"
        kill -INT $PROCESO
fi
LASTFILE=$(find *.pcap -type f -mtime -1 | head -1)
echo "Ultimo archivo: $LASTFILE"
if [[ ! -z $LASTFILE ]]; then
        echo "Comprimir a tar.gz ultimo archivo .pcap"
        tar c $LASTFILE | gzip --best > $LASTFILE.tar.gz
        # tar -czf $LASTFILE.tar.gz $LASTFILE
        echo "Eliminar ultimo archivo .pcap"
        rm -f $LASTFILE
fi
FILEDEL=$(find . -name '*.tar.gz' -type f -mtime +1)
for file in $FILEDEL; do
    echo "Eliminar: $file"
    rm -f $file
done
echo "Iniciar nuevo proceso tcpdump"
nohup /usr/sbin/tcpdump -w $FOLDER$NAMEFILE -i eth0 -s 0 port 80 and '(tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420)' >/dev/null 2>&1 &

Creamos la nueva tarea, para que se ejecute una vez todos los días

0 0 * * * /bin/bash /home/admin/cap/tcpdumphttp.sh

Analizar con Wireshark

Wireshark es el analizador de protocolo de red más utilizado y ampliamente utilizado en el mundo. Le permite ver lo que está sucediendo en su red a nivel microscópico.
Pagina oficial de Wireshark

Una vez que ya tengamos el archivo .pcap lo abrimos con Wireshark y podremos analizar de una manera muy fácil.
Tcpdump y Wireshark

Con tcpdump pueden capturar paquetes GET, POST, HEAD o paquetes de diferentes puertos, usando diferentes filtros.

(Visited 2.400 times, 1 visits today)
Puedes saltar al final y dejar una respuesta. Hacer ping no está permitido actualmente.