Espiando a los vecinos pasivamente

Espiando a los vecinos pasivamente

¿Qué información útil puedo obtener de forma no intrusiva de mis vecinos? La meta que me marqué era poder llegar averiguar las rutinas y horarios que mis vecinos tenían, es decir, cuando andaban en casa y cuando no.

Hoy en día todo el mundo tiene wifi en su casa, y dispositivos móviles que les acompañan en su día a día, por lo que si consigo asociar qué dispositivos corresponden a cada piso, podré saber cuando están en casa o no. Por lo tanto el problema lo podemos desglosar en dos puntos a completar:

1.- Averiguar cuando un dispositivo está conectado a la red, y mantener una trazabilidad en el tiempo.

2.- Averiguar qué red corresponde a cada piso.

Esto es algo muy viejo y que varias a veces ha salido a la luz por centros comerciales que utilizaban estas tácticas para trackear a los usuarios (además de con el Wifi, antiguamente con el bluetooth). Lo mío es una simple implementación de andar por casa.

Quien está conectado a que

Los dispositivos móviles emiten contínuamente paquetes Probe Request en modo broadcast, con el fin de mapear qué redes hay alrededor. Estos paquetes Probe Requests contienen la dirección MAC del dispositivo, por lo tanto ya tenemos un elemento que nos aporta la trazabilidad necesaria de los individuos (es muy difiicl que nos vayamos a encontrar dos macs identicas).

Dentro de los paquetes Probe Requests que vayamos pescando deberemos de diferenciar dos grupos: “itinerantes” y “vecinos”. Los itinerantes son aquellas personas que simplemente pasean por la calle, y los vecinos son las personas que realmente nos interesan. Más adelante veremos cómo quedarnos sólo con la parte que nos interesa.

Para detectar las redes podemos basarnos en los paquetes Beacons y en los Probe Response. En caso de que la red esté oculta y haya alguien conectado podremos sacar el ESSID a través de los Probe Response; si no hay nadie conectado deberemos de bruteforcear el nombre, ya que de los paquetes podemos sacar el tamaño del ESSID.

Ya tenemos clientes y redes. Ahora toca averiguar quien está conectado a qué, y para ello necesitamos capturar algún paquete donde aparezcan ambos datos (cliente y AP). La respuesta son los paquetes RTS.

En estos paquetes vamos a tener la mac del dispositivo y la de AP, por lo que como previamente sabemos cuales son las macs de los AP, es trivial sacar quien está conectado a qué.

Para nuestro propósito básicamente le he añadido la capacidad de volcar cada 20 minutos la información dentro de una base de datos SQLite, de esta forma podremos tener un histórico de cuando han estado conectados los clientes, y de esta forma poder trazar visualmente los horarios de las personas. Además, a través de las direcciones mac se pueden saber los fabricantes de las tarjetas de red y a partir de ahí identificar qué moviles / ordenadores usan esas personas.

Pero no es oro todo lo que reluce. Los dispositivos móviles cuando no están en movimiento, o no están en uso, disminuyen o dejan de enviar prácticamente Probe Request con el objetivo de ahorrar batería. Se entiende que al estar sin moverse en un mismo punto las redes wifi alrededor no van a modificarse, van a ser las mismas.

Esto puede ser un problema si no lo tenemos en cuenta a la hora de representar los datos obtenidos y obtener conclusiones. De los datos observados, es fácil determinar cuando esa persona entra o sale de su casa por la cantidad de paquetes y el vacío que hay cuando abandona el edificio.

Ya hemos completado la primera parte, vayamos al siguiente punto.

¿A qué piso corresponde cada red?

Hay muchas formas de poder responder a esta pregunta. En mi caso no quería parecer un bicho (aun más) raro, por lo que descarté ir por el edifico con el portátil y la antena haciendo mediciones.

Para pasar más desapercibido opté por utilizar una aplicación móvil que hiciera las mediciones. Me decanté por “Wifi Analyzer”, que me permitía hacer capturas de la potencia de todas las redes y guardarlas con un nombre identificativo.

La idea es hacer mediciones de la intensidad de la señal cada 2 metros e ir guardando los datos ordenados en una matriz, y posteriormente analizar estos datos para establecer distancias relativas a los puntos de muestreo y así “dibujar” donde estarían los AP.

Los problemas con los que me encuentro en este caso es que la propia forma de la estructura del edificio, junto a las interferencias, hace que en ciertos puntos se falseen los datos porque la cantidad de señal que llega no es la que “debería” de llegar, aparentando que el AP se encuentra más lejos de lo que está en realidad.

Actualmente me encuentro atareado con esta última parte, pero confío en que con un tamaño muestral suficiente y utilizando el sentido común pueda llegar a buen puerto.

Espero haberos dado ideas para entretenerlos

Happy Hacking

Create tu propio escaner de redes wifi

Create tu propio escaner de redes wifi

¡Hola!

Sigo entreteniendome con NodeJS y las redes wifi. En esta ocasión estaba probando  a desautenticar usuarios conectados enviando paquetes deauth, para lo cual estaba cazando las MACs con airodump-ng. Cual fue mi sorpresa cuando no me aparecía uno de mis ordenadores -el que quería echar fuera de la red- como asociado a mi AP. Como se puede apreciar en la imagen únicamente me aparece asociado 1 solo ordenador, cuando deberían de aparecerme los 3, o como mínimo otro más, pues estaba navegando por él y generando tráfico que debiera de ser detectado. Nada.

En ese momento pensé: pues si airodump-ng no me lo está pillando, probemos a hacernos un escáner a ver si lo pillamos nosotros. Por supuesto que existen muchos escáneres geniales que podrían haberme solucionado la papeleta (o incluso simplemente usando WireShark y parseando el PCAP con un script en PERL) pero la idea es utilizar algo creado por uno mismo y de esta forma seguir aprendiendo.

La única información que quiero obtener son el nombre de la red, su mac, y quién esta conectado, ya que es lo único que necesito para mandar el deauth. Entonces… ¿de donde sacamos esos datos?

Lo primero que nos debería de venir a la mente son los beacons . Básicamente son frames cuya función es indicar la presencia de un punto de acceso. Se envían de forma automática contínuamente y contienen mucha información, entre ella la MAC del AP y el ESSID con el nombre de la red – es decir, gran parte de lo que necesitábamos-.

Los beacons parece que pueden aportarnos toda la información sobre el AP y tan sólo nos quedaría buscar en otra parte quien está asociado, pero… ¿nos quedamos sólo con este frame? La respuesta es un rotundo NO. No podemos recopilar datos únicamente de los beacons porque si la red se encuentra oculta éstos van con el ESSID vacío, de tal forma que no podríamos ver el nombre de la red. Luego toca buscar dónde más aparece el ESSID.

Y nuestra respuesta está en los probe response  frames. Cuando un AP recibe un probe request, ésta va a responderle con un probe response donde vendrá el ESSID -y disfruten de esto- que no es ocultado. En los probe request también puede aparecer la red, pero no los utilizaremos porque cuando un equipo tiene guardada una red oculta, éste envía contínuamente probe request para ver si ese AP está disponible. Incluso si la red está totalmente fuera del alcance. Es decir, contínuamente está preguntando “¿Está la red Sífilis aqui? ¿Está la red Sifilis aquí?” , por lo que si utilizásemos estos frames podríamos creer que existe una red cuando en realidad no está ni cerca: simplemente hemos pillado a un ordenador preguntando.

¡Ya sólo nos queda averiguar quien está asociado a cada AP! Tras mirar unos cuantos minutos capturas de WireShark concluí que los paquetes RTS podrían ser un buen candidato del que obtener información: aparecen tanto la dirección de quien envía el paquete como de quien la recibe, por lo que tan sólo nos quedaría correlar esta información con el listado de AP que obtenemos de los beacons y probe response y mostrarla.

El resultado final es este:

Ahora sí estamos pillando los  3 ordenadores que estaban conectados en esa red. Si os fijais la tercera red que se muestra tiene el nombre vacío debido a que se trata de una red oculta (el beacon tenia el nombre vacio) pero sin embargo justo debajo aparece su nombre (0verl0ad). Ésto es debido a que ha conseguido extraer la información  de los probe response.

En caso de que no hubiese nadie mandando probe request (para que responda) no podríamos saber el nombre real de la red…pero sí la longitud del ESSID. Eso significa que podremos bruteforcearlo con probe requests hastsa que obtengamos un probe response que nos indique que el string era el correcto (este es el siguiente script que tengo en mente ).

Vuelvo a repetir lo que dice al inicio, existen múltiples escáneres que podría haber usado, la idea era simplemente jugar un rato y solventar un problema.

El poder de FLUXION (hacking wifi)

El poder de FLUXION (hacking wifi)

Que es fluxion:

Es una nueva herramienta para hacer auditorias de seguridad inalámbrica. su funcionamiento es similar a wifite lanzando ataques de ingeniería social para que el usuario la coloque la contraseña y verificar si es la correcta.
si has tratado de instalar  fluxion te darás cuenta que te muestra errores que faltan ciertos componentes para instalar antes de ejecutarlo, pues  esta vez veremos su instalación y como corregir los errores de los componentes faltantes.

los errores de componentes son los siguientes:

dhcp-server
hostapd
lighttpd
php5-cgi

Como instalar

lo podemos hacer de dos formas.
1. clonando desde github
2. descargando desde acá:  Fluxion

abrimos una terminal , vamos al directorio donde esta y lo desempaquetamos (Descargas, Documentos, Escritorio, etc).
colocamos: sudo unzip fluxion-master
entramos al directorio cd fluxion-master luego lo corremos de la siguiente forma ./fluxion
veremos que nos muestra unos errores de color rojo, comenzamos a corregirlos.

abrimos una nueva terminal y colocamos lo siguiente:
leafpad /etc/apt/sources.list

luego de esto colocamos la lineas para los repositorios desde la pagina oficial de kali linux
http://docs.kali.org/general-use/kali-linux-sources-list-repositories

luego guardamos cambios, en la terminal colocamos lo siguiente , apt-get update esperamos que actualice, luego colocamos lo siguiente.

apt-get install isc-dhcp-server

esperamos que instale luego colocamos.

apt-get install hostapd

esperamos que instale luego colocamos esto
apt-get install lighttpd

para la instalación de php5-cgi debemos hacer lo siguiente, en una terminal nueva colocamos esto
leafpad /etc/apt/sources.list y copiamos lo siguiente.

deb http://old.kali.org/kali sana main non-free contrib, quedando de la siguiente forma

guardamos los cambios y ejecutamos lo siguiente: apt-get update esperamos que actualice y ejecutamos lo siguiente.

apt-get remove php5 php5-common php5-mysql php5-xmlrpc php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear php5-dev php5-imap php5-mcrypt

esperamos que termine y luego ejecutamos, apt-get install libapache2-mod-php5 esperamos que termine la instalación.

ya para terminar ejecutamos

apt-get install php5-cgi

esperamos que termine de instalar, ahora ya podemos ejecutar fluxion sin ningún problema
lo hacemos desde la siguiente forma, entramos al directorio donde lo tenemos guardado o clonado
colocamos ./fluxion y les quedaría de la siguiente forma.

Crackeando redes con WPA/WPA2

Crackeando redes con WPA/WPA2

Para poder obtener la clave de una red con cifrado WPA/WPA2, debemos capturar el Handshake de algún cliente y luego desencriptarlo.
Para lo que no sepan lo que es el Handshake se genera en el momento en el que un dispositivo se conecta en una red. La clave pre-compartida puede tener un tamaño de 8 a 63 caracteres, por lo que parece imposible crackear la clave.

Como se muestra en la imagen, el dispositivo envía una solicitud de conexión al router, el router responde pidiendo la clave de acceso, el dispositivo envía la clave de acceso. El router responde a esa autenticación, si es correcta se produce la asociación a la red y el router responde con un OK, es decir, lo asocia a la red.

Esta negociación que se produce, es el Handshake (Apretón de manos) y lo que haremos en este taller, será capturarlo y descifrarlo, ya que la contraseña viene cifrada dentro de él.

No hay ninguna diferencia entre el crackeo de redes WPA o WPA2. El método de autenticación es básicamente el mismo. Por lo que las técnicas a usar son idénticas.

Colocando nuestra interface en modo monitor

Lo que haremos ahora será ver el nombre de nuestra interface, para ello tipeamos lo siguiente:

airmon-ng

 

En mi caso figuran dos interfaces:

Wlan2: La placa de red que tiene mi notebook
Wlan1: Mi USB Wifi externo

Debido a que la placa de mi notebook no sirve para usarla con aircrack, usaré mi USB Wifi externo, es decir, la Wlan1
Ahora la pondremos en modo monitor con el siguiente comando:

airmon-ng start wlan1

 

Como muestra la imagen, la coloca en modo monitor
(Monitor mode enablen on mon0)

Scanneo de las redes cercanas

Para ver las redes que tenemos cerca, lanzaremos el siguiente comando:

airodump-ng mon0

 

Como bien dijimos al principio de este taller, el Handshake se genera a la hora de que un cliente se conecta a la red. Es por ello, que nuestro objetivo ahora será tirar a un cliente conectado, y cuando intente conectarse nuevamente, capturaremos ese Handshake.

Lo que debemos recordar de esta consola, son los siguientes datos:

BSSID (MAC del router)
STATION (MAC del Cliente conectado)
CH (Canal)

Frenamos el scanneo con la siguiente combinación de teclas CTRL + C

Seguido a esto, colocamos el siguiente comando:

airodump-ng mon0 –channel 1 –bssid D8:5D:4C:C7:DC:EE -w /underc0de

Explicaré brevemente los parámetros de este comando:

mon0 (Nuestra interface en modo monitor)
–channel (Canal)
–bssid (MAC del router al que atacaremos)
-w (Nombre del archivo en donde se guardará el handshake)

Volveremos a ver la misma pantalla que la anterior, pero esta vez solo observaremos el movimiento que está generando el router al que atraparemos.

Capturando el Handshake

En una nueva consola, procederemos a conectar uno de los clientes conectados para capturarle el Handshake, para ello, tipearemos el siguiente comando:

aireplay-ng -0 1 -a D8:5D:4C:C7:DC:EE -c 00:25:D3:4C:1B:84 mon0

 

En caso de que al tipear el comando, aparezca un error como el de la imagen, al mismo comando le añadimos –ignore-negative-one

aireplay-ng -0 1 -a D8:5D:4C:C7:DC:EE -c 00:25:D3:4C:1B:84 mon0 –ignore-negative-one

Esto sucede porque tenemos que aplicarle un parche a nuestro kernel, pero la forma más rápida es añadiendo la extensión al comando como hicimos.

Al ejecutar el comando, veremos como desconecta al cliente conectado, y en la otra consola podremos ver lo siguiente en la parte superior:

Como podemos observar, aparece el [WPA handshake D8:5D:4C:C7:DC:EE]

Eso quiere decir que ya capturamos el Handshake de la red. Ahora podemos cerrar todas las consolas activas e iniciar el proceso de cracking.

Crackeando el Handshake por Fuerza bruta

Para crackear el handshake por fuerza bruta, utilizaremos John The Ripper, el cual es un excelente para este tipo de tareas.

En una consola tipeamos lo siguiente

john –stdout:XX –incremental:YY | aircrack-ng -b D8:5D:4C:C7:DC:EE -w – /underc0de*.cap

En el comando se pueden reemplazar las XX por:

alpha  (solo letras)
digits  (solo números)
alnum   (numeros y letras)
all  (Todos los caracteres incluidos “,.-#%&)

Las YY son los números de caracteres que puede tener la contraseña, si colocamos 8, John the ripper combinará desde 1 hasta 8 caracteres.

Lo malo de esto, es que puede demorar desde minutos a años en sacar una clave. Y depende mucho del hardware que tengamos en nuestra pc.

Crackeando el Handshake por Diccionario

Para poder romper la clave por diccionario, colocaremos en la consola el siguiente comando:

aircrack-ng -w diccionario.txt -b D8:5D:4C:C7:DC:EE /underc0de*.cap

Rapidamente explicaré los parámetros del comando

-w (Nombre del diccionario)
-b (MAC del router)

Y finalmente el nombre del Handshake

Cómo crear una red WiFi para hackear dispositivos

Cómo crear una red WiFi para hackear dispositivos

Tanto si deseas tener acceso a un dispositivo en concreto, como si quieres obtener información al por mayor de todo tipo de datos privilegiados de las personas que están a tu alrededor, crear una red WiFi falsa para hackear estos dispositivos no es nada complicado, tan sólo necesitas un ordenador y leer este tutorial detenidamente.

En primer lugar, destacar que el ordenador que debéis utilizar a la hora de realizar este proceso no debe ser nuestro, ya que estos datos que se van a captar son privilegiados y personales, y recabarlos constituye un delito.

Para la realización de este procedimiento necesitaran un ordenador con la versión 4.x del programa Wifislax, la tarjeta de red del PC que probablemente ya incluya nuestro ordenador, y una tarjeta usb aparte, que será la que emita la red WiFi abierta con la cual vamos a crear nuestro cebo.

Pasos para crear una red WiFi falsa

En primer lugar, conecta tu sistema operativo a internet, encuentra la red WiFi que deseas compartir para cualquier usuario que tenga habilitada la conexión a redes WiFi abiertas, y conéctate a ella. Es importante que antes de abrir el programa pongas la tarjeta en modo monitor.

Una vez en modo monitor, abre el programa desde INICIO/WIFISLAX/CREDENCIALES/Airssl. Cuando abras el programa, te preguntará qué IP es la que deseas utilizar para realizar el ataque, si no es la que aparece por defecto deberéis introducirla.

A continuación, escoge la tarjeta de red que utilizas para conectarte a internet, y pulsa Intro. Te preguntará con qué tarjeta vas a emitir tu señal de WiFi falsa, selecciona el número que corresponda a tu tarjeta y pulsa Intro de nuevo.

Llegados a este punto, el programa ofrece dos posibilidades. Sí o no. Si le das a “Sí”, el programa va a usar un nombre de la red principal, esto es, la de la red a la que nosotros estamos conectados (no la red falsa). Si le das a “No”, creará una red falsa con el nombre que anteriormente le hayamos especificado.

Después se abrirán cuatro pantallas, “FakeAp”, que crea el punto de acceso, “Dhcp”, que asignará las IPs de las conexiones entrantes, “Ettercap”, que activará el sniffer, y por último “Password”, en la que nos mostrará las webs por las cuales la víctima está navegando, y las contraseñas que utiliza en cada una de ellas.

Apoya el blog dejándonos un comentario.

Happy Hacking.