APR Spoofing bajo Windows ? Certificados, DNS?s y contraseñas
---------------Serie Chaos in the LAN------------------------------
Parte 1 - http://www.mediavida.com/foro/3/chaos-in-the-lan-parte-i-443487#1
Parte 2 - http://www.mediavida.com/foro/3/chaos-in-the-lan-parte-ii-443488
Parte 3 - http://www.mediavida.com/foro/3/chaos-in-the-lan-parte-iii-443489
NOTA: Cuando copio pego de un documento random a Mediavida siempre se me sustituyen las " por ¿
Tutorial realizado con fines educativos no me hago responsable de nada de lo que se haga con el.
Abro una nueva serie de Tutoriales sobre temas de hacking y seguridad informática. Ya que este es más un foro gaming que un foro técnico intentaré que sea accesible para todos. Así mismo, en versiones posteriores iré aumentando la complegidad. Este primero Explica como hacer un Man in the Midle y pillar tráfico sobre protocolos Http plano, en la segunda parte explicaré como hacer session highjaking. Y en la tercera como pillar tráfico encriptado bajo ssl.
Con este artículo solo quiero que empecéis a investigar sobre estás cosas, no es muy profundo y la parte de "How To" es bastante descriptiva. Si queréis os hablaré más sobre este tipo de protocolos y cosas de red
Siempre se habla de los peligros que hay en internet, esa masa de ordenadores y cables con gente muy mala que te roba tus datos y te saquea las cuentas del banco, pero nunca se habla de algo más cercano: los peligros que hay en tu propia red local. ¿Quién no se ha conectado alguna vez desde un ciber, una cafetería o desde la universidad? Cuando utilizamos un ordenador ajeno pensamos: ?Dios mio la cantidad de gente que tiene que haber pasado por aquí, lo mismo hay algún keylogger instalado?, sin embargo, cuando utilizamos nuestro propio ordenador, aunque nos conectemos a una red ajena, siempre tendemos a pensar que es algo más seguro.
No tiene porqué.
Hoy os quiero hablar de nuestro queridísimo protocolo ARP, también conocido como ?esa cosa que localiza la MAC del router dentro de una red local?, y como engañarlo para nuestros malvados propósitos </muajajaj>.
Antes de nada hay que dejar claros unos conceptos:
Ethernet: La red local conectada de manera física. Eth0, eth1,? para los que uséis Linux.
Spoofing significa envenenar, más adelante entenderéis porqué.
ARP no es lo mismo que APR. ARP significa ?Address Resolution Protocol? (protocolo de resolución de direcciones), y APR significa ?ARP Poison Routing? (Evenenamiento de la dirección del protocolo APR, (más o menos)?. Está claro que a quien pensó el segundo nombre no se le ocurrió que podía ser lioso.
Empecemos:
Imaginemos que somos de los primeros tios que nos conectamos a Internet en el mundo, la cosa está todavía empezando. Como queremos dar acceso a Internet en toda nuestra universidad se nos plantea un problema, ¿Cómo narices hacemos para no tener que instalar 200 conexiones telefónicas diferentes para dar acceso a internet? La respuesta está clara, creando un switch que irá conectado a un router (o poniendo un router directamente) al que irán conectados todos los ordenadores que tenemos y que centralizará la conexión a internet.
Cuando observamos este paradigma con atención, nos damos cuenta de que tiene un fallo, ¿Cómo podemos identificar a cada host de la red y saber su dirección física, si solo disponemos de la dirección IP a la que queremos conectarnos? Dejando a un lado las preguntas obvias que puedan surgir y otras sutilezas que formarían parte de la teoría profunda de redes locales, la respuesta es clara, mandando una petición a todos los aparatos (a todas las tarjetas de red) de la red local para que se identifiquen. Eso es exactamente lo que hace el protocolo ARP.
Para que se vea mejor imaginémonos que estamos en una habitación 10 personas sentadas en círculo con las luces apagadas, y que solo nos podemos comunicar a través de un aparato que hay en el centro con el cual tenemos una conexión física. Ese aparato puede tanto comunicarnos con el resto de personas de dentro de la sala, como permitirnos mandar mensajes al exterior a través de un teléfono. No obstante, hay una pega en todo esto, tenemos que saber exactamente donde está sentada la persona o el aparato con quien nos queremos comunicar, es decir, tenemos que saber su dirección física, su MAC.
Para obtener la dirección física de una persona (su dirección MAC) sabiendo solo su nombre (su IP local), lanzamos un mensaje a todas las personas y aparatos que hay en la sala. Ese mensaje contiene una pregunta ?¿Eres X?, si es así, mándame tu dirección física, la mía es esta?, que traducido a nuestra red local sería algo así como ?¿Cuál es la dirección MAC de [esta IP]? Sí eres tu respóndeme a esta dirección física, yo soy X?. Todas las personas y aparatos de nuestra habitación reciben la pregunta. Si ellos son esa persona, o esa IP por la que se pregunta, mandan una respuesta a quién preguntó, ?Ehhh!!! Yo soy Fulanito, y mi dirección física es esta?. Las otras personas o aparatos que no se llaman ?Fulanito? simplemente, no responden a la pregunta.
De esta manera, nos llega un mensaje que nos indica donde está Fulanito, para que así nos podamos comunicar directamente con él. Nosotros, cogemos esta dirección física y la apuntamos en nuestra libreta de direcciones (que iremos actualizando cada X tiempo).
Un paquete ARP que pregunta por alguien es así
En la foto podemos ver como se manda la información, de donde viene el paquete ?source?, y ha donde va ?destination?. El protocolo ARP tiene alguna sutileza más, viaja sobre otro tipo de paquete, que es donde se incluye la IP. Vemos en la tabla de arriba una traducción grosso modo de la petición. ?Who has x.x.x.x? Tell Y.Y.Y.Y? Ese es un buen resumen de todo esto.
¿Recordáis que antes habíamos dicho que apuntábamos en una tabla la dirección? Pues eso es básicamente lo que hace cada dispositivo dentro de la red local. Apunta en una tabla que se actualiza cada X segundos, la dirección MAC que corresponde a cada host en la red. Esa tabla se renueva con nuevas peticiones cada X segundos, por lo que nuestro ataque deberá ser mantenido en el tiempo. Pasemos a la parte divertida.
Como hacer un ARP Poison Routing (APR)
Ahora, vamos a ver como generando respuestas ?falsas? a las peticiones que corren por la red local, podemos lograr engañar a los ordenadores para que crean que nosotros somos el punto de retransmisión (switch o router), y engañar al router para que piense que nosotros somos bien un host concreto, o incluso todos los hosts de la red local.
Este ataque ARP Poison Routing (APR) entra dentro de los ataques llamados ?Man in the Midle?, en español ?Hombre en el Medio?. Obviamente, se llama así, porque básicamente nos ponemos entre dos puntos de una conexión, en este caso, envenenando las tablas y así engañando a los hosts.
Hay que señalar, que desde Linux, utilizando Ettercap y Wireshark por ejemplo, se pueden hacer ataques más precisos, podemos incluso jugar con nuestra propia MAC. En este tutorial voy a enseñar como hacerlo en Windows y de una manera muy simple; para ello utilizaremos dos piezas de software. La primera y más importante se llama Cain and Abel, y lo podemos descargar de http://oxid.it. El segundo programa se nos instalará justo después de la instalación del Cain, WinPcap, que groso modo, sirve para capturar los paquetes que fluyen por nuestra red local.
Abramos el Cain pues? (si teneis el firewall activado posiblemente os diga algo; también es conveniente ejecutarlo como administrador, para que tenga buen acceso a todos los sockets).
Lo primero que tenemos que hacer es entrar a la configuración (tercera opción arriba del todo) y seleccionar nuestra tarjeta de red. En casi todos los casos ya vendrá puesta, pero por si acaso, comprobémoslo. Cuando lo hagáis fijaros también en la tabla, en el apartado que pone ?IP address?, será útil para saber en los rangos en los que se mueve nuestra red. En mi caso mi IP address es: ?10.10.104.54?, de lo que deduzco que los valores de mi red local se mueven entre 10.10.104.1 y 10.10.104.254. Si corro la barra un poco hacia la derecha veo también la ?Gateway? que es nada más y nada menos, que la IP local del router o switch al que estamos conectados, la puerta de salida. Darle a aceptar para salir.
Comencemos con la fiesta. Lo primero que tenemos que haces es empezar a sniffar paquetes de nuestra red local, para ello activaremos el sniffer, el segundo botóncito en el panel principal de arriba (el que tiene como dibujo una tarjeta de red). A continuación, aseguraos de que estais en la pestaña Sniffer de la parte superior, y en la pestaña Hosts de la parte inferior. Si es así, botón derecho sobre un espacio en blanco de la tabla, y entráis en la opción ?Scan MAC addresses?. Os sale una ventanita.
Podeis seleccionar bien la primera opción ?All hosts in my subnet?, todos los hosts en mi subred, o la segunda ?range?. La primera es útil para cuando se trata de una red doméstica por ejemplo, y escaneara solo el rango de IPs en los que estamos, en mi caso ?10.10.104.X?, en una red más típica seguramente será algo así como ?192.168.0.X?; en el caso de hacer esto en una red más grande, por ejemplo en una empresa o en la universidad, suele ser más útil ver los rangos en los que se mueven las IPs con un programa como wireshark (viendo de donde vienen las peticiones ARP por ejemplo), y escanear los rangos que veamos adecuados. Le damos a OK, y vemos como escanea y nos pone todos los ordenadores de nuestra red en la tabla.
A continuación, en la pestaña de abajo, vamos a donde pone APR. En el panel izquierdo que nos acaba de aparecer, seleccionamos de nuevo APR (si es que no está seleccionado ya), hacemos click sobre la tabla superior, y le damos al botón con el ?+? azul que se nos acaba de encender en el panel superior.
Se nos abre una ventanita, leemos lo que pone en el recuadro de aviso (RPV: que podemos ralentizar mucho el tráfico de red), y procedemos a seleccionar en la parte izquierda la IP del router o puerta de salida (si no la sabeis con certeza abrir un cmd y ejecutar el comando ?ipconfig?, el apartado de ?puerta de enlace predeterminada? es el que nos interesa), y en la parte derecha seleccionar todos los hosts de la red que queráis engañar (pulsando shift o control xD). Una vez le deis a aceptar veis que todos se han añadido a la tabla superior.
Ahora solo queda empezar a responder a las peticiones y envenenar sus tablas. Solo hay que darle al botón amarillo de la parte superior (el que está al lado del sniffer).
Una vez le hayais dado el programa empezará a recoger paquetes y datos interesantes que pasen por la red. Si vais abajo a la pestaña passwords, veis que capturará (o lo intentará) contraseñas y otra información interesante que pase por la red, ya sea por protocolo HTTP, o por otros. Para los que os hayais emocionado, deciros que casi todo el tráfico va a ser basura, que a lo sumo, nos va a permitir ver que páginas se visitan desde los diferentes ordenadores. Casi todo el tráfico interesante, como contraseñas o datos bancarios van encriptados por otros protocolos. De esta manera podeis pillar también (o intentarlo) conversaciones VoIP, en la pestaña VoIP de la parte inferior.
¿Qué más se puede hacer?
De nuevo cambiando a la pestaña APR de la parte inferior, podemos ver que seguramente el programa también esté capturando (o no) tráfico HTTPS, que por su naturaleza irá encriptado, o certificados de sesión donde pone ?APR-Cert?, que serán muy útiles si queremos hacer una falsificación de sesión, SSLstrip o cosas así.
Otra opción interesante es APR-DNS, que sirve para redirigir las peticiones DNS a donde queramos. Botón derecho, ?add to list? y metemos en el cuadrado superior la página que queramos suplantar, y en el de abajo la IP a la que queramos enviarle cuando haga esa petición (si no sabéis la IP, utilizad el botón ?resolve? xD). Con esto podemos engañar a la gente y mandarles a páginas nuestras cuando marquen una determinada página web. Podemos hacer desde phising, hasta liberar nuestra red de las 3456789 niñatas haciendo 456789 peticiones por minuto a feisbuk.
Al hacer esto les puede saltar o no un error en el certificado y mostrarles la página como no segura (y con razón). Ralentizaremos tremendamente la red, y pondremos nuestra tarjeta de red al límite, así que si lo que esperabais hacer era conseguir más conexión, mal. Para eso hay que hacerlo desde Linux y jugar con el forwarding.
A explorar. En la próxima entrega enseñaré a hacerlo desde Linux, o a completar un poco más el ataque desde Windows, ya veré.