Mostrando las entradas con la etiqueta Wireshark. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Wireshark. Mostrar todas las entradas

miércoles, 27 de enero de 2010

Descifrando WEP/WPA/WPA2 con Wireshark

Wireshark nos brinda la posibilidad de descifrar capturas WEP/WPA/WPA2 de una forma muy sencilla, aunque claro, primero debemos conocer el password.

Pero lo interesante de esto, es que cualquiera podría capturar el tráfico "que pasa por el aire", sin conocer el password, y el día de mañana cuando sea posible obtenerlo, descifrarlo.

Por ejemplo, podríamos capturar todo el tráfico que pasa por un canal, o utilizar placas wireless especiales como AirPcap, para capturar varios canales a la vez:
airodump-ng mon0 --channel 6 -w captura.pcap
Si bien hay algoritmos de cifrado que tardarían cientos de años en ser rotos, siempre existe la posibilidad de que una mala implementación por un fabricante nos allane el camino.

Recuerdo que durante la ekoparty 2008, cuando Luciano Bello presento las vulnerabilidades para OpenSSL en Debian, entre la audiencia había muchas personas que decían tener capturas que a partir de ese momento podrían ser descifradas.

Para descifrar una captura con Wireshark, abrimos la captura, vamos a "Edit -> Preferences", desplegamos "Protocols" a la izquierda, y seleccionamos "IEEE 802.11", luego ponemos el password en el formato correspondiente:



Este post se iba a llamar "Desencriptando ...", como se acostumbra decir en Argentina, pero recordé a un español que me dijo que "desencriptar" significa "sacar a alguien de la cripta", y que el termino correcto era "descifrar".

Wikipedia: Criptología

"En ocasiones se emplean los verbos encriptar y cifrar como sinónimos, al igual que sus respectivas contrapartes, desencriptar y descifrar. No obstante, lo correcto es utilizar el término cifrar en lugar de encriptar, ya que se trata de un anglicismo sin reconocimiento académico, proveniente del término encrypt."

domingo, 24 de enero de 2010

Extrayendo Binarios de Capturas PCAP con Wireshark

Extraer archivos binarios de una captura de tráfico, es muy sencillo de realizar utilizando Wireshark, a continuación como hacerlo.

En el siguiente ejemplo, la transferencia del binario se realizo a través de FTP, por lo debemos ubicar donde comienza la conexión TCP al canal de datos, si la transferencia hubiera sido por HTTP, podríamos simplemente seleccionar el paquete donde se realiza el pedido, por ejemplo "GET /malware.exe HTTP/1.1".

Una vez seleccionado el paquete, hacemos "botón derecho", "Follow TCP Stream":



Luego simplemente guardamos el resultado con "Save As", verificando que el tilde de "Raw" este seleccionado. Podemos comprobar que estamos por exportar un binario, porque encontramos el header de "MZ" al comienzo, que identifica a los ejecutables de Windows:



Si queremos estar seguros, con el comando "file" podemos verificar que exportamos un binario:


miércoles, 22 de octubre de 2008

Filtros de Captura y Visualización

Conocer un poco sobre los "Capture Filters" y los "Display Filters" nos pueden ayudar a realizar un mejor análisis de trafico y por supuesto ahorrarnos mucho tiempo.


Los "Capture Filters", en la mayoría de los sniffers, utilizan la ya conocida sintaxis de BPF (Berkeley Packet Filter), mientras que los "Display Filters" pueden ser particulares para cada aplicación.

Hace un tiempo Tony Fortunato presento los "Top 10 Useful Filters", que son los siguientes:

1. Dirección IP:
"ip.addr == x.x.x.x"

2. Dirección MAC:
"eth.addr == xx:xx:xx:xx:xx:xx"

3. Protocolo ICMP:
"icmp"

4. No Mi Dirección MAC:
"eth.addr == xx:xx:xx:xx:xx:xx"

5. Protocolo DHCP:
"bootp"

6. Tiempo Delta Alto:
"frame.time_delta > 1"

7. Puerto TCP:
"tcp.port == x"

8. Puerto UDP:
"udp.port == x"

9. Análisis de RTT:
"tcp.analysis.ack_rtt > 1"

10. Tamaño de TCP:
"tcp.len > x && tcp.len < size="3">


Recientemente, Richard Bejtlich escribió un excelente articulo técnico llamado "Using Wireshark and Tshark display filters for troubleshooting". Dentro de las cosas mas interesantes podemos encontrar:

Ejemplo de un Capture Filter en Tshark (Wireshark en consola):

# tshark -i wlan0 -w sample.pcap host 192.168.2.103

Lo mismo pero con Tcpdump. En este caso hay que aclarar el Snaplen (tamaño del paquete)
ya que el default de Tcpdump es de 96 bytes:

# tcpdump -i wlan0 -s 1514 -w sample2.pcap host 192.168.2.103

En este caso estamos aplicando un Display Filter con el switch "-R" al mismo tiempo
que estamos capturando trafico:

# tshark -n -i wlan0 -w sample3.pcap -R 'ip.addr == 192.168.2.103'

Usuarios haciendo pedido de DNS que contienen la palabra "kungfoosion":

# tshark -n -i wlan0 -R 'dns.qry.name contains "kungfoosion"'

Búsqueda de la palabra "ftp" en el canal de comandos de FTP:

# tshark -n -r sample.pcap -R 'ftp.request.arg == "ftp"'

En este caso buscamos por usuarios que navegan con browsers que no son Firefox:

# tshark -i wlan0 -S -w sample5.pcap -x -R 'http.user_agent and !(http.user_agent contains "Firefox")'

Solamente visualizamos los comandos SMTP:

# tshark -n -r sample6.pcap -R 'smtp.req.command'

Durante el primer día de mi Network Security COMBAT Training trabajamos bastante con Capture Filters y especialmente con Display Filters, adicionalmente a lo que ya vimos, les recomiendo revisar los siguientes links que también los use durante mi training:

- Packet Life Cheat Sheets
- Wireshark Capture Filters
- Wireshark Display Filters
- Wireshark Display Filter Reference

LinkWithin