10 may 2013

Parseando pcaps con tshark

Parseando pcaps con tshark:
filters wireshark 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:
¿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 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 icon wink Parseando pcaps con tshark
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.
filters wireshark 300x292 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 , 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 300x161 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 300x129 Parseando pcaps con tshark
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 300x155 Parseando pcaps con tshark
Peticiones GET:
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 300x92 Parseando pcaps con tshark
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?