Seguramente todo el mundo ha oído hablar de la Deep Web, donde todo lo que existe en el mundo digital - o casi - se dice que se puede encontrar. Claro está, hay que hacerlo buscando correctamente, pero sin buscadores tradicionales, ya que mucho del contenido es contenido no indexado que si no sería "Sufrace Web". En este artículo, nos vamos a sumergir un poco en la DarkNet, en una página que nos permite obtener credenciales de direcciones de correo electrónico que se han visto comprometidas a lo largo del tiempo.
Si quieres conocer mucho mejor cómo funcionan las redes de la Deep Web, como TOR, FreeNET o I2P, y cuáles son los principales beneficios para la privacidad y el anonimato, ya sabes que en 0xWord Daniel Echeverri escribió un libro largo y explicativo sobre este tema.
La página de la que vamos a echar mano es una web publicada como Hidden Service en un dominio .onion. Esto nos indica que estamos en la red TOR, si intentamos acceder a través de un navegador común, obtendremos un mensaje como el que sigue:
Nada complicado. Todos podemos llegar a este Hidden Service y, si tu contraseña sale a relucir, haz un cambio de inmediato, y asegúrate de tener un Segundo Factor de Autenticación. Ahora bien, ¿podemos hacer la consulta a través de un script que nos sea útil para un pentesting usando Python?
De manera “convencional” no, ya que nos devolverá el siguiente error: "Failed to establish a new connection: [Errno 11001] getaddrinfo failed'. Vamos a ver cómo hacemos para que las peticiones de nuestro script en Python puedan ser enviadas a la red TOR.
Automatizando scripts con Python en la red TOR
Un simple requests.get, o requests.post no nos va a servir, necesitamos ir a la red TOR. Para ello podemos configurar el proxy en una sesión y hacer las peticiones. Para montar el script necesitaremos saber qué datos envía la petición. Podemos usar Burp o revisar la petición en el navegador para conseguir esta información.
La petición es POST y envía 5 parámetros, donde rápidamente se aprecia que el usuario del e-mail y dominio se envían por separado. Ya estamos preparados para obtener la página desde Python, pero a nosotros nos interesa filtrar el contenido, no queremos el HTML completo.
Para ello un simple proceso de "web-scraping" nos ayudará. Si inspeccionamos el contenido de la web con los resultados, vemos que los resultados se muestran dentro de unas etiquetas ‘pre’, así que con el uso de la librería bs4 podemos sacar los datos deseados. La salida del script se puede ver en la imagen siguiente.
El script ‘make.sh’ son tres líneas simplemente para instalar e iniciar TOR, instalar Python 3 y Pip3 - normalmente ya está instalado como sucede en el ejemplo de la imagen de arriba -, junto a una dependencia en Python, que es Pysocks.
El puerto por defecto está en el 9050, pero podemos cambiarlo si se desea a otro modificando el archivo /etc/tor/torrc y agregando al final la línea SocksPort, en el script podemos indicarle el proxy. Vamos a ver un vídeo de su uso en un sistemas Microsoft Windows con el ejemplo de l correo falso ‘fakemail@gmail.com’.
Visto un ejemplo, visto todos, con este tipo de funcionalidad puedes empezar a generar tus propios scripts para ir sacando la información que deseas y no solo contraseñas. Si quieres consultar el código del script, puedes visitar el siguiente repositorio de mi GitHub.
¡Hasta pronto!
Autor: Josué Encinar García (@JosueEncinar), autor del blog BoomerNiX y Security Researcher en ElevenPaths y en el equipo de Ideas Locas de la unidad CDO de Telefónica.
Figura 1: Deep Web: Cómo buscar tus contraseñas en las "profundidades" de Internet |
Si quieres conocer mucho mejor cómo funcionan las redes de la Deep Web, como TOR, FreeNET o I2P, y cuáles son los principales beneficios para la privacidad y el anonimato, ya sabes que en 0xWord Daniel Echeverri escribió un libro largo y explicativo sobre este tema.
Figura 2: Deep Web: Privacidad y Anonimato |
La página de la que vamos a echar mano es una web publicada como Hidden Service en un dominio .onion. Esto nos indica que estamos en la red TOR, si intentamos acceder a través de un navegador común, obtendremos un mensaje como el que sigue:
“No se puede acceder a este sitio web”Ya que no encuentra la dirección IP del servidor asociado a ese TLD. Sin embargo, si tiramos a través de la red de TOR podremos hacer nuestras consultas y verificar si nuestro correo regala “contraseñas” a los cibercriminales. En la imagen siguiente se puede ver el resultado usando una dirección de e-mail falsa.
Figura 3: Consulta de dirección de e-mail en el Hidden Service de TOR |
Nada complicado. Todos podemos llegar a este Hidden Service y, si tu contraseña sale a relucir, haz un cambio de inmediato, y asegúrate de tener un Segundo Factor de Autenticación. Ahora bien, ¿podemos hacer la consulta a través de un script que nos sea útil para un pentesting usando Python?
Figura 4: Libros de Python para Pentesters y Hacking con Python de Daniel Echeverri |
De manera “convencional” no, ya que nos devolverá el siguiente error: "Failed to establish a new connection: [Errno 11001] getaddrinfo failed'. Vamos a ver cómo hacemos para que las peticiones de nuestro script en Python puedan ser enviadas a la red TOR.
Automatizando scripts con Python en la red TOR
Un simple requests.get, o requests.post no nos va a servir, necesitamos ir a la red TOR. Para ello podemos configurar el proxy en una sesión y hacer las peticiones. Para montar el script necesitaremos saber qué datos envía la petición. Podemos usar Burp o revisar la petición en el navegador para conseguir esta información.
Figura 5: Petición POST al Hidden Service de TOR analizada en el navegador |
La petición es POST y envía 5 parámetros, donde rápidamente se aprecia que el usuario del e-mail y dominio se envían por separado. Ya estamos preparados para obtener la página desde Python, pero a nosotros nos interesa filtrar el contenido, no queremos el HTML completo.
Para ello un simple proceso de "web-scraping" nos ayudará. Si inspeccionamos el contenido de la web con los resultados, vemos que los resultados se muestran dentro de unas etiquetas ‘pre’, así que con el uso de la librería bs4 podemos sacar los datos deseados. La salida del script se puede ver en la imagen siguiente.
Figura 6: Respuesta del servidor en la red TOR con las credenciales |
El script ‘make.sh’ son tres líneas simplemente para instalar e iniciar TOR, instalar Python 3 y Pip3 - normalmente ya está instalado como sucede en el ejemplo de la imagen de arriba -, junto a una dependencia en Python, que es Pysocks.
Figura 7: Readme del script pwndb en Github |
El puerto por defecto está en el 9050, pero podemos cambiarlo si se desea a otro modificando el archivo /etc/tor/torrc y agregando al final la línea SocksPort
Figura 8: PoC de búsqueda de contraseñas en la Deep Web
Visto un ejemplo, visto todos, con este tipo de funcionalidad puedes empezar a generar tus propios scripts para ir sacando la información que deseas y no solo contraseñas. Si quieres consultar el código del script, puedes visitar el siguiente repositorio de mi GitHub.
¡Hasta pronto!
Autor: Josué Encinar García (@JosueEncinar), autor del blog BoomerNiX y Security Researcher en ElevenPaths y en el equipo de Ideas Locas de la unidad CDO de Telefónica.
Muy buenas Chema.
ResponderEliminarY no se podia salir a traves de Proxuchains tambien?
Chema
ResponderEliminarEste es el tercer comentario que escribo! A ver si te lo puedo mandar por fin. Te decía que soy una chica de Zaragoza y que ha sido un placer conocerte y bueno, que tengo varias preguntas para hacerte y que espero que me contestes. Quiero saber más sobre cómo el gobierno español utiliza nuestros datos, ¿Lo hacen desde el cni? Estoy escribiendo un relato sobre espionaje y me gustaría saber si tú querrías ayudarme a escribir las partes técnicas. Estoy investigando pero me cuesta mucho. Espero que me leas y me contestes, aquí tienes mi correo electrónico. Un saludo y mil besos, majo!
ResponderEliminarCuriosear artículos de tu blog, siempre es una sorpresa entretenida, venía por 10 mnts, ya pasaron 30. Gracias y te apoyo en tu rebeldía contra los sombreros, yo me compré un gorro también.
ResponderEliminarmuy mal los pasos para chacer el script de python, no capté nada
ResponderEliminar