Categorías
Hacking Networking Services - Software

Verificación de dominios expirados para Phishing con DomainHunter

En este post se hablará de la herramienta Domain Hunter. Es un script muy sencillo pero útil en campañas de Red Team especialmente en la etapa de Delivery. En el momento en el que se plantea la creación de una campaña de Phishing es importante elegir un buen dominio para obtener los mejores resultados y en este sentido, Domain Hunter utiliza el servicio ExpiredDomains para encontrar aquellos que recientemente han expirado por diversos motivos. El objetivo de este proyecto, de hecho, no es el de obtener una lista de dominios que podrían ser utilizados para Phishing, sino el de proveer un listado de dominios que por diferentes motivos ahora se encuentran en estado de «Pending Delete» y que pueden ser comprados para aprovechar el posicionamiento que ya tienen, de cara a aplicar SEO no es lo mismo un dominio recién creado y sin presencia en Internet que otro que ya tiene algo de recorrido y posicionamiento en motores de búsqueda. Este servicio no solamente lista los dominios que están a punto de caducar, sino que también enseña aquellos que ya lo están y que ahora  se podrían comprar.

Instalación y uso de DomainHunter

Se puede utilizar DomainHunter (https://github.com/threatexpress/domainhunter) para automatizar el proceso de búsqueda de dominios en ExpiredDomains y tras leer el fichero README del proyecto es fácil entender sus funcionalidades. En primer lugar, la instalación puede hacerse utilizando el «requirements.txt» tan común en los proyectos basados en Python o por medio del fichero Dockerfile que se encuentra en el proyecto y que está preparado para crear un contenedor con todo lo necesario para ejecutar la herramienta.

Una vez instalado todo, se puede ejecutar el script «domainhunter.py» con la opción «-h» para explorar las alternativas que ofrece.


Hay que tener en cuenta que las últimas versiones de la API del servicio ExpiredDomains requiere de un usuario valido en el sistema, por ese motivo se ha incorporado en el script las opciones «–username» y «–password», aunque si solamente se indica el nombre de usuario, el script solicita la contraseña sin necesidad de introducirla en plano con la opción «–password».
Después de crear una cuenta en el servicio de ExpiredDomains se puede empezar a usar el script prácticamente sin ninguna dificultad, solamente hace falta indicar las opciones adecuadas para la búsqueda. Las más interesantes a efectos prácticos son las siguientes.

-k : Permite filtrar por los dominios que contienen una palabra concreta.

-ks : Permite filtrar por los dominios que empiezan por la palabra especificada.

-ke : Permite filtrar por los dominios que terminan por la palabra especificada.

-s : Ejecuta verificaciones sobre la reputación de un dominio o dirección IP especificada.

-f : Recibe un fichero en donde cada línea corresponde a un dominio o dirección IP. Con cada uno de estos elementos se aplican las mismas verificaciones que con la opción «-s».

Para una búsqueda directa sin aplicar ningún filtro basta simplemente con ejecutar el script utilizando una cuenta de usuario valida y automáticamente se podrán apreciar los resultados en la terminal.

Aplicando los filtros indicados anteriormente también se obtiene un listado de resultados que automáticamente se almacenan en un fichero HTML para su posterior consulta, así como una tabla que se enseña directamente en la terminal. Por otro lado, incluye algunas opciones como «–ocr» o «–alexa» que son mucho más especificas y permiten en este caso, aplicar un OCR a los captcha que suelen ser solicitados por parte de la plataforma y ordenar los resultados de acuerdo al ranking de Alexa para cada resultado de la búsqueda.

Aunque es un script fácil de instalar y utilizar, los mismos resultados se pueden obtener simplemente navegando por el servicio de ExpiredDomains con una cuenta de usuario valida, de hecho, se encuentran muchas más alternativas de cara al filtrado de dominios y se puede consultar el feed de los últimos que se han incorporado a la lista de «Pending Delete».

Tanto el script DomainHunter como el servicio ExpiredDomains son recursos interesantes a la hora de llevar a cabo una simulación de un ataque o un Red Team, especialmente en aquellos casos en los que hay que crear campañas de Phishing con algún dominio valido y lo más legitimo/creíble posible.

 

Un saludo y Happy Hack!
Adastra.

Categorías
Hacking Services - Software Web Applications

Phishing 2.0 con Evilginx2 – Parte 1.

Los ataques de phishing tradicionalmente se han basado en una plantilla con una estructura fija, la cual evidentemente puede quedar desactualizada rápidamente si no se mantiene y lo que es peor, es necesario poner una URL “rara” que probablemente nada tiene que ver con el dominio objetivo, la cual con un vistazo más detallado se puede apreciar claramente que no es el dominio del sitio web legitimo. Aún así, los ataques de este tipo siguen siendo predominantes y con unos muy buenos niveles de éxito. Existen un buen número de herramientas que permiten emprender este tipo de ataques con plantillas fijas y del mismo modo le permiten al atacante crear las suyas. No obstante, hoy en día ya encontramos lo que se conoce como el “phishing 2.0” y herramientas como Evilginx2 definen las bases de este tipo de ataques, más sofisticados y efectivos que los ataques de phishing clásicos basados en plantillas.

Evilginx2 es una herramienta que ha sido desarrollada en Go y que cuenta con las siguientes características:

* Se encarga de levantar de forma automática un servidor DNS para resolver las peticiones que se vayan a realizar contra un dominio concreto.

* Realiza un ataque de “Hombre en medio”, en donde no hace falta tener plantillas HTML fijas con la estructura del sitio web objetivo. Evilginx2 se encarga de realizar una petición HTTPS contra el sitio web legitimo y enseñar la estructura que devuelva el sitio web a la víctima.

* Evilginx2 es capaz de hacer un bypass sobre mecanismos de 2FA dado que no realiza ningún tipo de modificación sobre la estructura de la página, simplemente se encarga de actuar como cualquier cliente para el sitio web legitimo permitiendo que sea la víctima la que realiza la interacción con el servicio.

* Solicita y configura automáticamente un certificado SSL valido (Lets Encrypt) para el dominio que se utilizará para el ataque de phishing.

* Es capaz de mantener la condición de MITM entre la víctima y el sitio web legitimo tras la autenticación correcta. Esto permite capturar no solamente cookies de sesión o usuarios y contraseñas en texto plano, también permite obtener información sensible en la medida que el usuario va navegando por el sitio web legitimo pasando primero por el dominio configurado con Evilginx2.

Estás son solamente algunas de las “maravillas” que es capaz de hacer la herramienta. Sin embargo, existen algunas complicaciones que se pueden presentar en la configuración de este tipo de ataques con Eviginx2.

* Es necesario contar con una IP pública para poder resolver las peticiones DNS contra el dominio controlado por Evilginx2. Esto puede ser por medio de un VPS o servidor dedicado en cualquiera de los proveedores disponibles en Internet.

* Es necesario adquirir y configurar correctamente un dominio DNS. Como se verá más adelante, es necesario crear un registro DNS del tipo “A” que apunte a la IP pública donde se encuentra en ejecución Evilginx” y algunos registros “CNAME”.

* Dada la naturaleza de este tipo de ataque, si se realiza una campaña muy extensa o contra un objetivo “delicado”, es posible que el proveedor del VPS reciba quejas y que dependiendo de la gravedad de las actividades, se lleven a cabo acciones legales. En una campaña llevada a cabo por ciberdelincuentes profesionales, lo más probable es sea rápida y precisa, además también es posible que el proveedor del VPS contratado sea anónimo de tal manera que se dejen el menor número de trazas posible.

Requisitos e instalación.

Ahora que el lector entiende de qué va esto y el posible impacto que puede tener, resulta interesante pasar a la práctica viendo cómo instalar y configurar la herramienta para llevar a cabo un ataque de éste tipo.

En primer lugar, lo requisitos son los siguientes para que esto funcione bien.

  • Una dirección IP pública en un VPS o servidor dedicado. Se puede conseguir lo mismo en un entorno domestico creando reglas NAT en router que se encarguen de redireccionar las peticiones hacia el interior de la red local, sin embargo este enfoque es totalmente desaconsejado ya que el router no tendrá una IP fija todo el tiempo y además, es posible que Evilginx2 no funcione correctamente en este caso.
  • Un dominio correctamente configurado.
  • Una instalación limpia de Eviginx2, la cual puede ser partiendo del código fuente o de alguno de los paquetes precompilados que están preparados para ser descargados y ejecutarlos directamente, siendo ésta última opción la más sencilla y cómoda.

Primero lo más sencillo, la instalación. El repositorio oficial se encuentra disponible en GitHub: https://github.com/kgretzky/evilginx2 en dicho repositorio se incluyen las instrucciones básicas para su instalación, algo que no lleva mucho tiempo si se cuenta con todas las dependencias en GO requeridas por el programa. En “releases” se puede apreciar que existen paquetes preparados para utilizar la herramienta directamente.

Al ejecutar la herramienta es importante hacerlo con privilegios de root, utilizando “sudo” por ejemplo, ya que es necesario abrir el puerto 53 para el servidor DNS que levanta la herramienta. Se puede apreciar una tabla de phishlets, algo que se mencionará más adelante.

A continuación es necesario cumplir con los otros dos requisitos obligatorios que se han indicado anteriormente: Una IP pública y un dominio. Sobre el primero de ellos, es importante tener en cuenta que en dicha dirección IP pública se debe ejecutar Evilginx2. Es decir, la imagen anterior que enseña la ejecución de la herramienta corresponde a una instancia de Evilginx2 ejecutándose, en este caso concreto, en un VPS con una IP pública.

Sobre el segundo requisito, es necesario contar con un dominio correctamente configurado. Existen cientos de servicios en Internet que permiten contratar un dominio por muy bajo precio, sin embargo para realizar pruebas se puede utilizar un servicio como freenom.com el cual permite adquirir dominios de forma gratuita por un tiempo fijo.

Configuración del ataque.

A modo de ejemplo, se realizará un ataque de phishing con Evilginx2 utilizando el dominio “es-twitter.ml”. La selección de éste dominio es totalmente arbitraria, el lector puede elegir el que quiera.

En freenom se puede configurar el dominio recién creado fácilmente. En este caso interesa crear registros del “A”, “CNAME” y los correspondientes “NS”. Primero se configurarán los registros “NS” y “A”, posteriormente los registros CNAME tras configurar el dominio en Evilginx2. Como una imagen vale más que mil palabras, la configuración sería como se puede ver a continuación.

Con esto será suficiente para tener el los registros NS correctamente establecidos. Ahora, el registro “A” será como se puede ver a continuación. (Evidentemente, es necesario poner la IP en donde se encuentra Evilginx2 en ejecución).

Con esto el dominio está prácticamente listo. Ahora es necesario habilitar el “phishlet” correspondiente a Twitter para poder continuar con la configuración y posterior preparación del ataque. Un phishlet es similar a las plantillas que se utilizan en las herramientas destinadas a este tipo de ataques, sin embargo, en lugar de contener una estructura HTML fija, contienen “metainformación” sobre cómo conectar con el sitio objetivo, parámetros soportados y páginas de inicio a las que debe de apuntar Evilginx2. Los phishlets son ficheros de texto en formato YAML y la herramienta se encarga de cargarlos desde el directorio <EVILGINX2_ROOT>/phishlets esto significa que es posible crear ficheros en formato YAML para sitios web concretos que no se encuentran entre los que vienen por defecto en la herramienta. Algo que es bastante habitual en una campaña de RedTeam en la que se aplican técnicas de Phishing 2.0.

Bien, ahora que el dominio se encuentra “casi” configurado por completo, es el momento de abrir la terminal con Evilginx2 y realizar algunas configuraciones básicas. En primer lugar, el comando “help” enseñará los comandos disponibles en la herramienta, que como se puede ver, no son muchos.

El primer comando a ejecutar será de configuración global, para establecer el dominio y la IP pública.

Ahora es el momento de habilitar el phishlet correspondiente, que en este caso será el de Twitter.

El primer comando ha permitido habilitar el phishlet “twitter” y ha establecido el hostname que será utilizado para el ataque de phishing. En este caso concreto, la URL “twitter.com.es-twitter.ml” será el señuelo que se le enviará a las víctimas. Algo que resultará totalmente “creíble” al ver que la conexión se establecerá por HTTPS con certificado perfectamente valido y que además, en la URL pone “twitter.com”. Mucha gente seguramente picará. Bien, pero antes de continuar con los detalles del ataque, es necesario terminar la configuración del dominio. Al ejecutar el segundo comando se obtienen los registros CNAME que hay que incluir en la configuración del dominio en freenom. La configuración final del dominio será como se puede apreciar en la siguiente imagen.

Con estos pasos ya se encuentra todo preparado para elaborar el ataque de Phishing con Evilginx2, algo se explicará en detalle en el próximo post.

Si has hecho todo bien hasta aquí, el siguiente paso que corresponde a la ejecución del ataque propiamente dicho será bastante fácil y rápido.

Un saludo y Happy Hack
Adastra.

Categorías
Hacking Services - Software Web Applications

Herramientas de pentesting interesantes: Shellphish – Parte 3

Sin lugar a dudas, los ataques de phishing hoy en día sustituyen una de las amenazas más frecuentes cuando se habla de seguridad perimetral y es que el factor humano es siempre, el más problemático y difícil de gestionar en todos los aspectos de una organización. No es de extrañar que en algunas pruebas de seguridad enfocadas al RedTeam se incluyan este tipo de técnicas con el objetivo de medir la seguridad del perímetro desde adentro. Quiénes han picado en un ataque de phishing y han pinchado en el enlace, quiénes no han sabido detectar que ese correo electrónico contiene un enlace a un sitio malicioso. Son cuestiones que se afrontan con la formación a los empleados y a la que difícilmente las soluciones de seguridad perimetral pueden hacer frente de forma eficaz. En este sentido existen múltiples herramientas y frameworks enfocados a la ejecución de campañas de phishing, cuyo objetivo es precisamente probar la seguridad del perímetro de una organización ante este tipos de ataques aunque como es evidente, también son herramientas que dadas sus funcionalidades y lo bien hechas que están se utilizan directamente por parte de ciberdelincuentes. En este post hablaré de una de estas herramientas llamada “shellphish”, que sin ser la más interesante o potente sí que hace bien su trabajo y para lo que fue desarrollada por lo tanto merece una mención. En próximos posts hablaré de herramientas mucho más completas y con un enfoque más moderno como es el caso de “evilginx” o “gophish”.
NOTA: Si te interesa aprender más en profundidad sobre técnicas de ingeniería social, es posible que te resulten útiles los recursos del “Social Engineering Framework” (https://www.social-engineer.org/framework/general-discussion/) y el uso de otras herramientas como SET de las que ya he dedicado una serie completa hace algunos años, empezando aquí.

Introducción y uso de Shellphish

Se trata de una herramienta que provee un conjunto de plantillas para los sitios más populares en Internet, entre los que se encuentran Facebook, Twitter, Netflix, Instagram, entre otros. No obstante, dada su flexibilidad es posible crear plantillas personalizadas para sitios web que no se encuentran incluidos en la herramienta, de tal manera que es posible llevar a cabo campañas de phishing contra un objetivo concreto. El uso de la herramienta es realmente simple, basta con seleccionar una plantilla, establecer el tipo de servidor para que sea accesible desde Internet (puede ser serveo.net o Ngrok) y posteriormente, esperar a que el usuario “pinche” en el enlace que se enviaría por email (o cualquier otro medio).

Para instalar la herramienta, basta con clonar el repositorio oficial y ejecutar el script “shellphish”

>git clone https://github.com/thelinuxchoice/shellphish.git

>cd shellphish && chmod 755 shellphish.sh

>./shellphish.sh

Una de las dependencias obligatorias de la herramienta es una versión reciente de PHP, dado que se encuentra desarrollado en dicho lenguaje. Cuando se ejecuta el script de shellphish se abre un asistente muy básico en donde se puede apreciar un listado de las plantillas soportadas por la herramienta y el permite al usuario seleccionar una de ellas.

Se puede seleccionar cualquiera de los servicios disponibles, pero hay que tener en cuenta que las plantillas son fijas, es decir, que si existe algún cambio en cualquiera de los sitios web legítimos, dicho cambio tendrá que ser aplicado también en la plantilla para que sea más creíble. El funcionamiento interno de la herramienta también resulta sencillo. En el directorio <SHELLPHISH_ROOT>/sites se encuentran todas las plantillas de cada uno de los sitios que se listan en el menú principal. En cada uno de los directorios correspondientes a dichos servicios, aparecen como mínimo los siguientes ficheros:
index.php: Se encarga de ejecutar un “include” del fichero “ip.php” y posteriormente realiza una redirección incluyendo la cabecera “Location” en la respuesta con el valor “login.html”.

login.html: Como es natural, incluye la estructura HTML del sitio web legitimo, sin embargo dicha página web está configurada de tal manera que las acciones sobre ella (por ejemplo, pinchar sobre el botón de login) son procesadas por el script “login.php”.

ip.php: Se trata de un script que se encarga de recopilar la información del cliente que accede al sitio web falso. Incluye información básica como la IP del navegador de la víctima, país, ciudad, ISP, etc.

login.php: Es un script que simplemente se encarga de almacenar y enseñar por pantalla la información de login del usuario.

Todas las plantillas en shellphish tienen lo mismo, por lo tanto es fácil extender esto a otras plantillas personalizadas, es decir, a otros sitios web que no se encuentren en la lista de plantillas por defecto en la herramienta.

Después de seleccionar la plantilla a utilizar, la herramienta pedirá al atacante que seleccione el tipo de servidor web para la plantilla seleccionada en el paso previo. En este caso cualquiera de las dos opciones es valida ya que ambas funcionan bastante bien (Serveo.net o Ngrok). Posiblemente resulte conveniente utilizar Serveo.net dado que las conexiones pasan por medio de un túnel SSH.

Una vez que el servidor web se encuentre levantado y la víctima haya entrado en el sitio web falso, se ejecuta el fichero “ip.php” que se encuentra disponible en la plantilla seleccionada y que tal como se ha explicado anteriormente, se encarga de recolectar información básica sobre el navegador del usuario.

A continuación, la víctima podrá ver la misma estructura del sitio web, así que salvo que se fije en la URL no hay nada que en apariencia resulte sospechoso. Si el usuario trata de iniciar sesión en el supuesto servicio, se ejecutará el script “login.php” que se encargará de procesar lo que el usuario ha escrito en las cajas de texto (típicamente, usuario y contraseña).

Se puede ver que además, se encarga de guardar estos detalles en un fichero de texto que posteriormente se puede consultar fácilmente. Todas las plantillas en Shellphish tienen el mismo comportamiento.

Con shellphish también es posible crear plantillas personalizadas y para ello la herramienta cuenta con un asistente que paso a paso, establece un sitio web genérico en el que se pide usuario y contraseña. No obstante es bastante básico lo que genera la herramienta (por no llamarlo cutre) por lo tanto para un ataque de phishing real será mucho más conveniente crear la plantilla manualmente, que como se ha explicado antes no tiene ninguna dificultad, basta simplemente con crear un directorio en <SHELLPHISH_ROOT>/sites con el nombre del sitio web e incluir los ficheros mencionados unos párrafos más arriba.

Para activar el asistente en shellphish se debe seleccionar la opción “Custom” y tal como se puede ver en la siguiente imagen, es necesario comenzar a rellenar ciertos campos.

Ahora, cuando una potencial víctima entra en “https://torrens.serveo.net” podrá ver lo siguiente. Algo que a mi gusto resulta bastante deficiente desde el punto de vista estético, por este motivo es posible que el mejor enfoque sea crear la plantilla manualmente.

Se trata de una herramienta para realizar ataques de phishing basados en servicios existentes, sin embargo dada su simplicidad también es posible crear plantillas personalizadas partiendo de la clonación de un sitio web legitimo. Sin ser una herramienta con muchas características o funcionalidades, cumple bastante bien con el objetivo para el que fue creada.

Un Saludo y Happy Hack!
Adastra.

Categorías
Hacking Networking Services - Software Web Applications

Ataques homógrafos

Entrada escrita por «L-Cafe».
Twitter @L__Cafe
Telegram Nick: lian.rs
En los últimos días se ha hablado mucho de un tipo de ataque de phishing que consiste en sustituir letras de un dominio por caracteres, generalmente cirílicos, que tienen el mismo aspecto a simple vista, pero diferente representación Unicode.

Por ejemplo: Haz click aquí: https://www.xn--80ak6aa92e.com/. La página que obtienes no es la oficial de Apple. ¿Por qué? Hace mucho tiempo, se elaboró un estándar que permitía registrar nombres de dominio que contuvieran caracteres fuera de ASCII, por ejemplo: nombres de dominio con caracteres como ç, ñ, o incluso hanzi, como 國, caracteres árabes, como جزائر, entre otros.

 

xn–80ak6aa92e.com

En concreto, idiomas como el ruso, tienen letras similares al alfabeto latín, y, dado que se pueden registrar dominios con estos caracteres, por desgracia también se puede utilizar esto con fines no tan nobles, como realizar phishing.

Pero el candadito verde significa sitio seguro, ¿No?

Este es otro gran problema. Debido a que estos dominios son totalmente válidos y estándar, también se pueden solicitar certificados de cifrado, sin embargo, si indagamos, veremos que el certificado está expedido por Let’s Encrypt, una autoridad certificadora que expide certificados gratuitos. Estos certificados gratuitos están genial para administradores de sistemas que no tengan muchos recursos, y no quieran gastarse cientos de euros en un certificado para proteger a sus visitantes.

 

certificado de xn–80ak6aa92e.com

Mientras que la web oficial tendría un certificado con validación extendida (EV), que generalmente suele costar bastante más caro, pero a una gran multinacional como Apple, no le supone un gran desembolso. Esta es una de las razones más importantes para contratar certificados con validación extendida en lugar de certificados sencillos: Ayudan a contrarrestar el phishing en gran medida, especialmente en los casos en los que la dirección web es muy parecida. Podría por ejemplo darse que alguien registre el dominio appiie.com, pero los enlaces se entreguen con las dos i en mayúsculas, haciendo parecer la letra L.


Apple.com

Cómo evitarlo

Si utilizas Google Chrome, debes actualizar inmediatamente si estás utilizando una versión inferior a la 58.0.3029.81. Una vez que hayas actualizado, el enlace del principio aparecerá como xn--80ak6aa92e.com, que es el dominio real, evidenciando que la web efectivamente no es apple.com.

En el caso de Firefox, debes seguir estos pasos:
1. Escribe about:config en la barra de direcciones y pulsa enter.
2. Escribe punycode en la barra de búsqueda del gestor de configuración.
3. Busca un parámetro llamado network.IDN_show_punycode.
4. Haz doble click para cambiar su valor de false a true.

Independiente de esto, la mayoría de navegadores modernos (ejem, Internet Explorer también, cómo han cambiado las cosas) incluyen filtros anti phishing por defecto, lo que ayuda a contrarrestar este problema en gran medida, pero no son sistemas totalmente fiables (¿Acaso hay algo totalmente fiable?).

En resumen

Como siempre, debéis tener cuidado con dónde metéis vuestros datos, usar verificación en dos pasos siempre que sea posible (en Apple lo es), utilizar gestores de contraseñas para generar claves únicas y totalmente aleatorias para cada sitio.

 

Entrada escrita por «L-Cafe».
Twitter @L__Cafe
Telegram Nick: lian.rs