Parseando pcaps con tshark

Parseando pcaps con tshark, en una investigación en la que tenemos que tratar tráfico de red, si no contamos con algunos tricks puede ser una tarea bastante tediosa. Una de las primeras cosas que tendremos que saber es:

Índice

Parseando pcaps con tshark ¿Qué queremos obtener?

Imaginad que estamos en un equipo anti-fraude y tenemos que mandar a cerrar al ISP aquellos dominios relacionados con phishing o malware. En este caso nos dará igual las peticiones GET o POST (aunque también son útiles), lo más rápido que buscaremos son las peticiones DNS, por ejemplo.

En este caso no hará falta que revisemos el pcap entero, podríamos directamente extraer las peticiones DNS, si además lo podemos scriptar mucho mejor, por si hay que mirar mucha cantidad de paquetes.

¿Que herramientas nos pueden ayudar?

Bueno, en este caso mostraré la versión GUI de la herramienta y luego la versión consola, que es de lo que trata el artículo 😉

Parseando pcaps con tshark
Wireshark

Esta imagen nos debería de ser muy familiar, se trata de Wireshark, este programa nos sirve entre otras cosas para capturar el tráfico de red.

Si abrimos un pcap podemos ver gráficamente todo el flujo de datos, además podremos aplicar filtros para hacer las búsquedas que necesitemos.

Parseando pcaps con tshark

Seleccionando el filtro adecuado podríamos obtener por pantalla el resultado del filtro en el pcap.

A mi me encantan las interfaces GUI, pero reconozco que es mucho más rápido y, además puedes procesar mas cantidad de información el poder usar alguna herramienta del tipo command line.

En este caso usaremos tshark, la versión de consola de Wireshark.

Se puede encontrar en los repositorios, para instalarlo solo hemos de hacer:

apt-get install tshark

Vamos a ver unos ejemplos para obtener cierta información de un pcap.

Extrayendo peticiones DNS

Para extraer peticiones DNS de un pcap tendríamos que lanzar tshark de la siguiente forma:

tshark -r PCAP -T fields -e ip.src -e dns.qry.name -R "dns.flags.response eq 0"

En este caso veríamos por pantalla:

dns_querys

Parseando pcaps con tshark Extrayendo User-agents

En una determinada investigación, puede ser útil extraer los user agents del pcap, la sentencia de tshark sería:

tshark -nn -r PCAP -T fields -e ip.src -e http.user_agent -R "http.user_agent"

Por pantalla podemos ver los resultados

user_agent_pcap

Extrayendo peticiones MYSQL

Imaginad que en una investigación una base de datos forma parte de la investigación, también podemos extraer facilmente información del pcap

La sentencia de tshark sería:

tshark -r PCAP -d tcp.port==3306,mysql -T fields -e mysql.query

Por pantalla podemos ver los resultados de nuevo:

mysql_querys_pcap

Peticiones GET Parseando pcaps con tshark

Si queremos de manera rápida, extraer las peticiones GET, con tshark realizamos:

tshark -r PCAP -R "http.request.method==GET"

Por pantalla nos muestra:

GET_querys

Aunque hemos visto que podemos extraer información de un pcap, con tshark, podremos también capturar tráfico de red y pedir con filtros tráfico específico

Capturar peticiones HTTP

La sentencia con tshark sería:

tshark 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R 'http.request.method == "GET" || http.request.method == "HEAD"'

Y lo que veríamos en el output de tshark es:

190.302141 192.168.0.199 -> 74.125.77.104 HTTP GET / HTTP/1.1
190.331454 192.168.0.199 -> 74.125.77.104 HTTP GET /intl/en_com/images/srpr/logo1w.png HTTP/1.1

190.353211 192.168.0.199 -> 74.125.77.104 HTTP GET /images/srpr/nav_logo13.png HTTP/1.1190.400350 192.168.0.199 -> 74.125.77.100 HTTP GET /generate_204 HTTP/1.1

En este artículo hemos visto como podemos con tshark extraer información de un pcap, además de como podemos capturar tráfico aplicando un filtro específico.

No he podido encontrar un cheatsheet de tshark, ¿Te animas a compartir algún script con tshark?

Subir