Lanzamiento de una simulación pedagógica de phishing en un inquilino de Microsoft 365 con Gophish

Mi objetivo

Con el fin de sensibilizar a los usuarios del inquilino de Microsoft 365 que utilizo, miré cómo crear una campaña de phishing para «atraparlos» y activar la formación sobre este tema.

Los mensajes de prevención y las campañas de higiene digital no son suficientes, se necesita un hecho concreto para tratar de generar conciencia.

descargo

A riesgo de repetirme, mi objetivo no es lanzar una campaña de correo directo o phishing, es pedagógico.

Tenga en cuenta que los elementos que se explican a continuación no funcionarán si no es administrador del inquilino para atacar, ya que debe autorizar la IP de GoPhish, sin esta autorización, la campaña de phishing está bloqueada por los sistemas de seguridad de Microsoft (¡Gracias!)


Herramientas utilizadas

  • Obviamente, utilizo el Microsoft 365 Tenant al que le pediré que autorice el envío de la IP de mi campaña, así como el famoso 5321.MailFrom (o remitente del sobre).

  • GoPhish en la versión 0.12.1 el día de la escritura de este RetEx

  • Plataforma AWS de Amazon y, más concretamente, instancias EC2

Creo una cuenta de Amazon AWS 

Sigue los 5 pasos y luego:

Creo una instancia en EC2

Todo lo que explico sobre esta parte es completamente gratuito, podemos beneficiarnos de la licitación de un año, Eso es suficiente para mi necesidad.


Debe haber creado una cuenta en AWS y luego ir a Amazon EC2

En la parte superior derecha, compruebe que se encuentra en la región de Europa/París

entonces


Descargo el archivo clave, tenga cuidado de tomar un archivo ppk y no pem.

Una vez que todo está instalado y lanzado, tengo todo verde:

Configurar el grupo de seguridad de mi instancia

Como medida de seguridad, ya he reservado el acceso SSH a mi única dirección IP a través del asistente de creación de instancias, ahora necesito configurar los puertos que utilizará GoPhish.

Voy a Red y Seguridad y luego Grupos de Seguridad, selecciono el grupo de asistente de lanzamiento, reglas entrantes, modifico reglas entrantes

Agrego una entrada TCP personalizada con un número de puerto que no sea 3333 que será el número de puerto que usaré para GoPhish, puse 8531 por ejemplo.

Uso una dirección IP elástica (opcional)

Para tener siempre la misma dirección IP, utilizo esta función.

Tenga en cuenta que las direcciones IP elásticas pagan cuando no están asociadas con una instancia en ejecución. Esto significa que si reserva una dirección IP elástica pero no la usa, se le cobrará. Sin embargo, una vez que una dirección IP elástica está asociada con una instancia en ejecución, no se le cobrará mientras la instancia se esté ejecutando y la dirección IP esté asociada con esa instancia. Si la instancia se detiene o termina, aún se le puede cobrar por usar la dirección IP elástica, a menos que la desvincule de la instancia o la libere.

Instalo Putty 

Putty me permitirá conectarme en SSH a mi instancia EC2, esto de una manera segura con un conjunto de claves (privado / público).

Necesito recuperar la configuración de conexión en la instancia.

Para ello, hago clic con el botón derecho en la instancia y, a continuación, «log in» / SSH Client.

Tomo nota del DNS público que se me da, me servirá para el anfitrión de Putty

Lanzo Putty, agrego el Host:

a continuación, especifique el archivo de clave privada creado anteriormente:

Para simplificarlo, agrego el usuario ubuntu como inicio de sesión automático en Connection/Data

Empiezo la conexión, está bien, tengo la línea de comandos Ubuntu.

Instalo GoPhish

Voy a buscar la última versión que necesita ser descargado en el Depositario oficial de Github.

El día que se creó este RetEx, la última versión está aquí:
https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip

En la línea de comandos de Ubuntu, cargo el archivo zip y lo desempaqueto en opt/:

wget https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-v0.12.1-linux-64bit.zip sudo apt install unzip unzip gophish-v0.12.1-linux-64bit.zip -d ./gophish rm gophish-v0.12.1-linux-64bit.zip sudo chmod +x ./gophish/gophish


Tendré que configurar la IP gophish y su puerto.
Para ello, modifico el archivo config.json

cd gophish vim config.json

Reemplazo 127.0.0.1:3333 por 0.0.0.0:8531 en la línea listen_url

Lanzo gophish

./gophish

Recibo un mensaje de error, probablemente seguridad al escuchar el puerto 80 por un usuario no root, rápidamente traté de arreglar esto con ipfw pero no está en mi máquina y con iptables, no tenía nada más satisfactorio. Es bastante feo y desaconsejable, pero como mi instancia de Ec2 no permanecerá en producción, lanzo un:

sudo ./gophish

Muy bien, mi GoPhish es lanzado 

en el texto de la línea de comandos, recupero la contraseña que se me dio en la línea

Por favor, inicie sesión con el administrador de nombre de usuario y la contraseña xxx

Quiero usar Gophish sin mantener mi ventana SSH abierta (opcional)

Agrego este párrafo aquí para mayor consistencia, pero se puede ejecutar más tarde cuando Gophish funcione manualmente.

Autorizo el lanzamiento de Gophish sin ser root (sudo)

Para evitar tener que usar un comando sudo para lanzar Gophish, autorizaré al usuario ubuntu para interactuar en el puerto 80, que es un puerto privilegiado. De hecho, la orden cap_net _bind _service permite a este ejecutable (gophish) vincular sockets de red a puertos con un número menor o igual a 1024, incluso si no se ejecuta como usuario root.

sudo setcap 'cap_net _bind _service=+ep' /home/ubuntu/gophish/gophish

Por lo tanto, a partir de ahora, no es necesario escribir sudo para lanzar gophish, el comando puede ser:

./gophish


Abra el mensaje de error gophish_admin.key: permiso denegado

Si aparece este mensaje de error, debe cambiar los permisos del archivo gophish_admin.key

Aquí están los pedidos:

cd ~/gophish ls -l gophish_admin.key sudo chmod 644 gophish_admin.key sudo chown ubuntu:ubuntu gophish_admin.key ls -l gophish_admin.key ./gophish

 

Declaro el gophish como un servicio

Voy a añadir un archivo gophish.service en /etc/systemd/system/gophish.service

[Unidad] Descripción=GoPhish Service After=network.target [Servicio] ExecStart=/home/ubuntu/gophish/gophish Type=simple PIDFile=/var/run/gophish User=ubuntu WorkingDirectory=/home/ubuntu/gophish [Instalar] WantedBy=default.target

Para no tener que escribir todo, puse esto en una esencia, para recuperarlo directamente:

sudo wget https://gist.githubusercontent.com/sigalou/267349eada979e07c99dc5944253169c/raw/e5d8769bb86b40e15ad0c4631629d575e440199a/gophish.service -O /etc/systemd/system/gophish.service

Esto puede ser probado por:

sudo systemctl daemon-reload sudo systemctl enable gophish sudo systemctl start gophish sudo systemctl status gophish

Relanzo mi cuerpo, está bien, Gophish se inicia automáticamente.

Voy a lanzar GoPhish.

De vuelta en mi navegador, noto la ip elástica o la ip pública de la instancia, pego esta dirección seguida de:8531 que es el puerto definido anteriormente

Así que voy por ejemplo a https://13.36.81.72:8531

Aquí usamos "admin" y la contraseña registrada en la línea de comandos en el momento del lanzamiento. Inmediatamente GoPhish pide cambiar la contraseña y estamos conectados a GoPhish.

Estoy añadiendo un usuario «trapper» al Inquilino 365

Al iniciar sesión como administrador con el derecho de administrar usuarios, agrego un nuevo usuario.

Elegí usar un usuario que compongo como si fuera una cuenta oficial de Microsoft Account Management.

Incluso le puse un bonito logo que es serio.

Por supuesto, le asigno una licencia que le permite tener una cuenta de correo electrónico y luego voy a la Correo de este usuario entonces Software de correo y voy a marcar al menos la casilla SMTP autenticado.

(Opcional) Para hacer mi vida más fácil y no tener que agregar esta casilla a la carta, puse una transferencia de todos los correos electrónicos recibidos en esta casilla a mi dirección de correo electrónico en Correo / Correo de transferencia.

Configurar Microsoft Defender para permitir GoPhish

Microsoft lo ha planeado todo. Pensaron en ofrecer una campaña educativa de phishing (licencia de Defender Plan 2) con una licencia pagada, pero también pensaron en hackers sin dinero al permitirles autorizar esto manualmente.

Estoy lanzando Microsoft Defender.

Entonces Estrategias y reglas

Entonces Estrategias de Amenazas/Descuento Avanzado

Y finalmente Tab Simulación de phishing

Gracias Sigalou!!! Tuvimos que encontrar esta pestaña 

Entonces usted tiene que configurar el campo y el PI.

El dominio es la dirección del dominio que enviará el correo electrónico, esto corresponde al dominio de SMTP From que especificaré en GoPhish.

La IP es la IP elástica o pública de la instancia.

Configurar GoPhish SMTP

De vuelta en GoPhish, voy a Envío de perfiles y crearé un perfil para enviar mensajes:

Gracias al botón Enviar correo electrónico de prueba, puedo comprobar que todo funciona a la perfección, recibo un mensaje

A estas alturas, ya es una muy buena victoria personal, he podido configurar una máquina virtual, instalar GoPhish, configurarla, averiguar cómo no quedarme atascado por la seguridad de Microsoft permitiendo esta manipulación y ganar … llega el email de prueba!!! Para aquellos que están descubriendo mi RetEx, no imaginen que tomó tiempo escribir esta página, son horas de manipulación (y aprendizaje).

Voy a recuperar a todos los usuarios del Tenant Microsoft 365

Dos formas de recuperar usuarios, la más sencilla con la interfaz gráfica del centro de administración M365, de lo contrario esto se puede hacer con un comando powershell.

No voy a explicar esta segunda forma de hacer las cosas, Florian lo explicó en su excelente tutorial.

Tomo la fórmula más simple, voy al panel de administración y luego Usuarios activos entonces Usuarios de exportación.

La exportación va bien, trabajo un poco en el archivo en Excel para eliminar columnas y filas innecesarias que no son usuarios. Así que tengo un archivo de Excel perfecto con 4 columnas, inicio un registro CSV con una coma en separador para poder importar en GoPhish.

Inyecto usuarios en un grupo GoPhish

Añado un nuevo grupo, empiezo a importar mi archivo CSV.

¡Ahora tengo un nuevo grupo listo!

Configurar el correo de phishing

Este es el correo electrónico que recibirán los destinatarios de la campaña.

Para hacer esto, le pedí a Microsoft que me enviara un mensaje, así que mantuve el formato del mensaje. Al final, esto da:

Me gustaría señalar que es pedagógico, no me preguntes el código HTML de la página, considero que depende de todos hacer el trabajo.

Configurar la página de phishing

Llamada Landing page, esta página de phishing es la página en la que aterrizará el usuario al hacer clic en el enlace que se le ofrece en el correo electrónico que recibió.

Fui a buscar modelos para no reinventar el agua caliente (gracias souleiman)

Aquí está el mejor enlace que podría usar para hacer que la página de inicio de sesión de M365 sea lo más realista posible.

Estoy pensando en el final de la configuración de la página de destino para comprobar la recuperación del correo electrónico y la contraseña. Tengo la idea de poder mostrar los dos primeros caracteres, por ejemplo, y la última de las contraseñas «robadas» durante la formación o sensibilización de los usuarios. Tenga en cuenta que las contraseñas recuperadas se dan en claro, por lo que desencadenaré un cambio de todas las contraseñas de todos los usuarios unos días después de la campaña de phishing educativo.

Cuando el usuario hace clic en el enlace reconectar o en el botón azul Reconectar, aterriza en:

No me pidas el código HTML de esta página.

Lanzo la campaña de phishing

En resumen, he creado un grupo de usuarios, una plantilla de correo electrónico, una página de phishing, para que pueda ir a Campañas para lanzar la campaña.

A la hora de presionar Campaña de Lanzamiento, los emails salen de …

 

Regresaré en un rato para dar noticias de la campaña aquí …

Bibliografía