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.
Con tcpdump pueden capturar paquetes GET, POST, HEAD o paquetes de diferentes puertos, usando diferentes filtros.