jueves, 11 de octubre de 2012

Modelo de ataque crackeo y hackeo Wap PSK Router




Esta guía/tutorial está hecha con mero carácter de aprendizaje, basada en un tutorial encontrada en otro foro que citaré en el pie del tutorial pero adaptada para que lo pueda entender la mayoría de los interesados, por parte de los lectores y del
que lo redacta, siendo desarrollado en un entorno local de laboratorio en el que todo el material es legítimo, ya saben, hay que ser buenos... 

Mi idea es darle un aspecto lo más práctico posible, no enrollándome demasiado en conceptos teóricos, que sin duda, la gente que de verdad esté interesada, se ocupará de aprender (No sean bagos por favor).

Antes de empezar vamos a pasar a comentar un poquito más en detalle los pasos que iremos
realizando:



– [In]Seguridad Wifi:
Como todo el mundo sabe, es común encontrar entre las redes de los vecinos que muchas de estas estén sin encriptación, o que usen WEP, y las menos WPA-PSK. Dado que el nivel medio de los usuarios que usan ordenadores suele ser de perfil medio-bajo-rebajo (ver el correo, el facebook, hablar por el msn, etc...), no se puede esperar gran cosa en cuanto a la seguridad en su router inalámbrico, asi que nos aprovecharemos de ello para sacar la clave y poder conectarnos a su misma red. Una vez conseguido esto, también es ver muy común, que debido a la vagancia/dejadez de los técnicos que instalan la conexión a internet, la contraseña por defecto de los routers permanece, cosa que también aprovecharemos para conectarnos a la configuración, y obtener valiosa información.

– Estamos dentro...:
Una vez realizado el paso anterior, ya estaremos en el mismo segmento de red que los hosts legítimos conectados al router inalámbrico, por lo que nos aprovecharemos de esto para sniffar tráfico y obtener más datos de las víctimas, como por ejemplo: passwords de todo tipo, información privada, etc...

– Rematando el asunto:
Para finalizar, después de recopilar toda la información que consideremos necesaria, la usaremos para conseguir acceso de Administrador al host elegido, y hacernos con el control total de este.

En el tutorial, el flaco hace todos las pruebas con máquinas virtuales. Yo no tengo problema ni dificultad en usarlas, pero debido a un amigo que seguramente leerá el tutorial este, lo voy a adaptar para que se pueda hacer sin necesidad decrear maquinas virtuales ni usarlas :eem: .
Cualquier distribución de Linux está permitida para usarla de "intruso", siempre y cuando tengan un 1% de idea del poder que tienen en su computadora.
Para la maquina víctima, en este caso, la típica, Guindows XP (la cara no)
Las 2 tarjetas inalámbricas:
– ipw3945, usada por la víctima para conectarse
– smc con chipset atheros y drivers madwifi-ng, usada por el intruso
Y por último, todas las herramientas utilizadas comunmente, como Aircrack-ng, WireShark, dsniff, etc...

Bueno, empezemos :A

Como ya comentamos anteriormente, es común encontrarnos la típica red de los vecinos, sin ningún tipo de seguridad, quizás con Wep, y en el mejor :A de los casos con Wpa/Wpa2. En nuestro caso, vamos a centrarnos en la alternativa más "difícil" que se nos podría presentar, es decir el caso en el que la red esté protegida con Wpa/Wpa2 con PSK (sino no tiene gracia), obviamente hay escenarios más difíciles, como por ejemplo el uso de Wpa/Wpa2 Empresarial (es decir, con el uso de un Servidor Radius), pero como su propio nombre indica, es una alternativa que se usa casi exclusivamente a nivel empresarial, y a veces ni eso, por lo que es altamente improbable que nos encontremos con algo de este tipo. Aunque el diseño de Wpa/Wpa2 aun no ha sido comprometido totalmente (ya veremos cuanto tarda), si que nos podemos aprovechar de sus implementaciones, en este caso el uso de Claves Pre-Compartidas no muy robustas y que hacen que sea el eslabón débil de la cadena. El primer paso, será la identificación del objetivo, así que sin más dilación, vayamos al grano.
Para ello, establecemos la conexión de nuestra placa de Wireless en modo monitor, y a continuación con ayuda de airodump-ng empezaremos a ver lo que se cuece por el vecindario! :oki:

thefatal@note1:~$ sudo ifconfig wlan0 down
thefatal@note1:~$ sudo iwconfig wlan0 mode monitor
thefatal@note1:~$ sudo airodump-ng wlan0

Una vez ingresado este último comando, la consola se limpiará y aparecera algo así (voy a usar las imagenes del tutorial, despues si alguien no entiende pregunte o pida qe voy a poner imagenes tomadas por mí) 

 

Como vemos en la imagen, hay bastante redes, una de ellas sin ningún tipo de protección, varias con WEP, y el resto con WPA-PSK, nosotros vamos a centrarnos en la red con Essid “Casa_Antonio”, que como vemos, tiene el cifrado que andábamos buscando. A continuación, vamos a filtrar un poquito el asunto, limitándonos a capturar paquetes del canal en el que se encuentra la red citada:

thefatal@note1:~$ sudo airodump-ng -c 2 -bssid 00:1A:2B:42:9A:9A -w vecinos wlan0

Ahora me detendré un momento para explicar el comando recien ingresado:

-c = Lo que hace es obligar al comando a utilizar el canal de Wireless 2
-bssid = Lo que hace es obligar al comando a capturar paquetes de esta estación
-w = Escribe los datos obtenidos al archivo "vecinos"

El siguiente paso, será conseguir que el cliente conectado se caiga, para que tenga que volver a autenticarse, y en ese momento capturar el 4-way handshake, que usaremos para, mediante fuerza bruta, sacar la PSK y poder conectarnos como si fuésemos un cliente legítimo.   Como comenté al principio, el objetivo de esta guía es centrarnos en la parte práctica, pero si alguien está interesado en una explicación más exacta y formal de la “debilidad” de la PSK, proximamente postearé mas información sobre este tipo de cifrado, junto con sus vulnerabilidades y demás. Para los que son impasientes, pueden encontrar información en otros foros, simplemente preguntenle al tio Google   .

Prosigamos. Ahora, en una nueva terminal obligaremos al cliente legítimo a re-autenticarse
para poder capturar el handshake:

thefatal@note1:~$ sudo aireplay-ng -0 0 -a 00:1A:2B:42:9A:9A -c 00:13:02:19:12:5B wlan0
14:10:06 Waiting for beacon frame (BSSID: 00:1A:2B:42:9A:9A) on channel 2
14:10:07 Sending 64 directed DeAuth. STMAC: [00:13:02:19:12:5B] [ 0| 0 ACKs]
14:10:08 Sending 64 directed DeAuth. STMAC: [00:13:02:19:12:5B] [ 0| 0 ACKs]
14:10:10 Sending 64 directed DeAuth. STMAC: [00:13:02:19:12:5B] [ 0| 0 ACKs]


Donde le indicamos que realice un ataque de desautenticación, contra el cliente -c, conectado al AP -a, y que lo haga indefinidamente (hasta que nosotros lo paremos   ).

Ahora, volviendo a la otra terminal, nos tendría que cambiar a algo así



 

Como observamos en la ventana del airodump, el cliente se cae, y al rato se vuelve a conectar, momento en el que ya tenemos lo que queríamos!

El último paso será conseguir la PSK mediante fuerza bruta, pero a esto de la fuerza bruta, le podemos añadir un toque elegante: Rainbow Tables. Estas son un tipo de tablas de búsqueda especiales que permiten recuperar passwords usando los hashes de estos. Estas tablas están basadas en la teoría de cambio de tiempo por espacio. Si quereis más información sobre las Rainbow Tables podéis echarle un vistazo a:
– http://www.slideshare.net/gonalvmar/rainbow-tables
– http://en.wikipedia.org/wiki/Rainbow_table
Para este ataque voy a usar coWPAtty, es una programa del tipo aircrack pero que añade 2 funcionalidades muy interesantes:
– La primera es el uso en sí de las Rainbow Tables, estaría bien usarlas para esta guía, pero debido a que son más de 30 Gb y además no accesibles (al menos no las he encontrado) desde descarga directa alargaría mucho su descarga
– La utilidad trae un programa llamado genpmk, que se usa para precomputar los archivos hash de forma similar a como se hace en las Rainbow Tables, y que es la herramienta que en conjunción con coWPAtty vamos a usar. El primer paso será generar los hash files para un SSID en específico, en nuestro caso “Casa_Antonio”:

thefatal@note1:~/Escritorio/cowpatty-4.3$ ./genpmk f /etc/dictionaries-ommon/words -d hash_file -s "Casa_Antonio"

Como vemos, usamos un diccionario del sistema, y que la salida se hará al archivo hash_file.
Una vez generado el hash file lo podemos usar contra cualquier red cuyo SSID sea “Casa_Antonio”, y procedemos a ello:

thefatal@note1:~/Escritorio/cowpatty-4.3$ ./cowpatty -r ~/Escritorio/guia_elhacker capturaswifi/*.cap -d hash_file -s "Casa_Antonio"

A continuación vemos la salida del programa:


 


Voilà! Ya tenemos la PSK, asi que ya hemos conseguido nuestro primer objetivo! :oki:



Una vez que nos conectamos a la red, el siguiente paso podría ser ponernos directamente a sniffar tráfico, pero antes de esto, trataremos de acceder a la configuración del router, ya que si conseguimos acceso podremos recopilar información relevante, como IP de los hosts conectados, mapear puertos para hacer scans de puertos a los host conectados, etc... Los routers inalámbricos suelen tenes un mini servidor http que provee acceso a la configuración a través del puerto 80, para cerciorarnos de esto:

thefatal@note1:~$ ifconfig wlan0
ath0 Link encap:Ethernet direcciónHW 00:13:f7:3b:b4:e0
inet dirección:172.16.72.130 Difusión: 172.16.72.255 Máscara:255.255.255.0

thefatal@note1:~$ nc 172.16.72.2 80
HTTP/1.1 400 Bad Request
Server: micro_httpd
Cache-Control: no-cache
Date: Sat, 01 Jan 2000 02:06:21 GMT
Content-Type: text/html
Connection: close
<HTML><HEAD><TITLE>400 Bad Request</TITLE></HEAD>
<BODY BGCOLOR="#cc9999"><H4>400 Bad Request</H4>
No request found.
COMTREND CT-536/HG-536+
<HR>
<ADDRESS>
<A HREF="http://www.acme.com/software/micro_httpd/">micro_httpd</A>
</ADDRESS>
</BODY></HTML>
Lo primero que hemos hecho es averiguar que Ip se nos ha asignado, y la máscara, para así saber cual es la puerta de enlace.
Una vez que sabemos que es la 172.16.72.2, nos conectamos al puerto 80 con ayuda de netcat y vemos que nos ha “escupido” información que nos puede ser útil. En primer lugar nos devuelve un error 400, pero a continuación nos muestra el modelo del router, así como el mini servidor Web que comentamos anteriormente (micro_httpd).
Ahora tenemos 2 opciones:
– Buscar una vulnerabilidad en el Servidor micro_httpd, y tratar de explotarla para conseguir acceso.
Esto no es muy difícil, basta con buscar un poco en google y obtenemos por ejemplo esto: http://www.securityfocus.com/archive/1/499503
Donde se informa de varias vulnerabilidades en este servidor, y más en concreto en la implementación que corre sobre nuestro router, así que sólo tendríamos que leer un poquito y aplicar el exploit correspondiente para acceder.
– La opción “vaga” es, ya que sabemos el modelo concreto del router, buscar por internet las contraseñas por defecto, ya que no suelen ser cambiadas ni por los usuarios ni por los “técnicos” que hacen la instalación.
Dicha búsqueda nos indica que: Admin,Admin correspone al User,Pass por defecto. Así que ahora ya mediante nuestro navegador favorito, nos conectamos a la Ip indicada anteriormente, introducimos la tupla Admin,Admin y...


 

Aquí vemos la pantalla principal de configuración, donde podemos destacar cosas que nos podrían ser de gran utilidad, como las tablas NAT, el mapeo de puertos, la configuración Wireless... 

 

Un poquito más en detalle, la sección de Wireless, donde vemos que podemos tocar toda la configuración: Nombre de la red, Seguridad, Filtrado MAC, etc.. Y en pantalla vemos como hay 2 clientes conectados, el legítimo, y nosotros...   
El único “detalle” a comentar, es que en este tipo de router no muestra las Ip's de los hosts conectados, pero esto como veremos, no va a resultar ser ningún problema. Para sacar la Ip del host conectado nos ayudaremos de Ettercap. Su funcionamiento es muy simple, nos vamos a la pestaña Sniff-&gt; Unified Sniffing, y seleccionamos el interfaz adecuado. A continuación escaneamos todos los hosts que haya conectados, y los listamos (pestaña Host). Obteniendo el siguiente resultado: 

 

Las 2 primeras entradas corresponden a interfaces creadas por vmware (no le den bola. Yo al principio dije que el que creó este tutorial usaba VM) a modo de router de la red virtual, en nuestro caso vamos a trabajar con la 172.16.72.2 como puerta de enlace. La 3era entrada corresponde al host legítimo (nuestra víctima). 

Y finalmente la última dirección la usa vmware. 
Así que ya tenemos lo que queríamos: 
– Router: 172.16.72.2 
– Víctima: 172.16.72.131 
El siguiente paso será mediante arpspoofing hacernos pasar por el router y hacer un MiM (Men In Middle) para capturar todo el tráfico que pase desde la víctima hasta el router y viceversa. Esto con Ettercap es sencillo, simplemente nos ponemos encima de la Ip del router y lo añadimos a la lista de “víctimas” pulsando el 1, y a continuación añadimos a la víctima pulsando el 2. 
Finalmente hacemos el arp poisonning (Mitm → Arp Poisonning), y empezamos a capturar paquetes (Ettercap → Start Sniffing) 
Si ahora abrimos el wireshark y empezamos a capturar tráfico, filtrando sólo el tráfico de la Ip víctima (ip.addr == 172.16.72.131), veremos el tráfico que genera: 

 

En la imagen podemos ver el filtro que hemos aplicado, y cómo la víctima ha entrado en la página Web http://www.as.com 
Si seguimos capturando tráfico, observaremos que se puede leer en claro la información que no va cifrada, por ejemplo user y pass de conexiones a FTP, pero también observamos que habrá tráfico cifrado (TLS, SSL v2), que aunque vemos, no tiene sentido aparente... Vamos a tratar de remediar esto, para ello usaremos SslStrip, una magnífica herramienta que se sirve de la poca atención de los usuarios en su navegación, incluso cuando son cosas de alto valor, como cuando navegamos por la página de nuestro Banco... 
Lo que hace es hacer un MiM entre el Servidor de turno y la víctima, de forma que se conecta con el servidor mediante HTTPS, pero sin embargo el tráfico con la víctima va en texto plano (HTTP). 
Con todo lo anterior, y una vez tenemos SslStrip en nuestra máquina y seguimos las instrucciones de se README, lo único que deberemos de hacer será: 

thefatal@note1:~$ sudo python sslstrip.py -w captura_sslstrip -s -l 5555 -k -f 

Consiguiendo que se guarde sólo el tráfico SSL en el archivo captura_sslstrip, escuchando las conexiones en el puerto 5555, matamos las conexiones existentes y usamos el icono del candadito. 
Ahora, en cuanto la víctima se conecte a alguna página que use HTTP sobre tls/ssl podremos capturar todo como si fuese texto plano. Para ver los resultados basta con hacer un: 

thefatal@note1:~$ sudo tail -f captura_sslstrip 

y esperar a que pique el anzuelo...   
o de una forma más gráfica con el wireshark: 



Como vemos, en este caso hemos capturado el proceso de autentificación a una cuenta de 
correo, esto es sólo la puntito del iceberg, echarle imaginación... 

Una vez que hemos robado toda la información que consideremos oportuna, el último pasito será hacernos con el control total del ordenador de la víctima. 
Los pasos típicos son los siguientes: 
– Recopilar información sobre los servicios/programas que usa la víctima 
– Centrarnos en uno e intentar buscar una vulnerabilidad conocida 
– Explotarla y hacernos con el control total 
En la posición en la que nos encontramos, lo lógico sería mediante nmap scanear el host, en busca de servicios activos y vulnerables, pero... Puede que esto no haga falta, como somos expertos en seguridad y estamos al día de los últimos bugs, hemos leido en el foro de elhacker.net que hay una vulnerabilidad en versión 3.5 del navegador Web Firefox, y la vulnerabilidad va de la manita de un par de exploits publicados en milw0rm. 
Así que vamos a probar suerte, con ayuda de wireshark vamos a analizar las cabeceras de las peticiones Webs en busca de saber que navegador usa la víctima y ver si hay suerte... 
Como vemos, en este caso hemos capturado el proceso de autentificación a una cuenta de correo, esto es sólo la puntita del iceberg, echarle imaginación... 

 

Y efectivamente hemos tenido suerte! Así que manos a la obra... Si buscamos en milw0rm, tenemos 2 exploits, el primero es una POC en la que sólo hace saltar la calculadora, pero el segundo está codificado en python y crea una conexión al puerto 5500 donde nos podremos conectar remotamente con privilegios de administrador... Lo que nosotros haremos será usar el código del primer exploit, pero modificando el shellcode por el del segundo. Una vez que tenemos el exploit, nos montaremos un Apache en nuestro ordenador (lo que he hecho yo), o podemos subirlo a algún servicio de hosting gratuito.
Para acabar, nos ayudaremos de nuevo del ettercap para hacer un DNS poisoning y redireccionar por ejemplo la página de google a nuestro exploit... Otra opción sería por ejemplo usar un proxy y cambiar la página que pide la víctima por la nuestra, en fin, hay infinidad de formas de actuar! 

Exploits originales: 
– 
http://www.milw0rm.com/exploits/9247
– 
http://www.milw0rm.com/exploits/9181 
Lo único que tenemos que hacer es cambiar la shellcode del segundo por el del primero, si quereis otro tipos de payloads, siempre os podéis ayudar de metasploit y su página web, que es como un sastre a medida. :d 
No voy a pararme en explicar como instalar el Apache ya que no es el cometido de este artículo, asi que suponiendo que lo tenemos ya corriendo en nuestra máquina y el exploit debidamente colocado, continuemos. Para realizar el DNS spoofing con ettercap, lo primero será modificar el archivo de configuración de nuestro “DNS local”, ubicado en: /usr/share/ettercap/etter.dns 
Y dejaremos únicamente esto: 

*.google.* A 172.16.72.130 

Donde le indicamos que mediante una entrada tipo A de DNS (traducción de nombre de dominio a dirección Ip), nos redirija al Servidor Web ubicado en nuestro host!   
El siguiente paso será irnos en ettercap a la pestaña Plugins-&gt; Manage the Plugins y activamos dns_spoof. Ahora sólo queda esperar a que la víctima intente ir a google y... 

 

Esta sería una vista de las conexiones en el host víctima, antes y después de acceder 
opuestamente a google, cuando en realidad corrió el exploit. 

 



Esta sería una captura en la que vemos cómo nos conectamos desde nuestro host al puerto
que nos ha habilitado el exploit en la víctima.

 

Y finalmente vemos como podemos navegar a nuestro antojo por el sistema... somos
administradores!!! → CONTROL TOTAL

Espero qe les sirva meramente de forma de aprendizaje, ya que sino me meten en cana... jaja, na, mentira, cualquier duda, la responderé apenas pueda, como siempre.

Creado por :: Antonio Sánchez Camacho y modificado por TheFatal



Descargal el Documento en PDF Tutorial

http://www.mediafire.com/view/?024f16o9662rku4

1 comentario: