- Phishing con Gophish – Parte 1: instalación, configuración y acceso al laboratorio
- Phishing con Gophish – Parte 2: preparativos y configuraciones adicionales
- Phishing con Gophish – Parte 3: envío de campañas
En el mundo de la ciberseguridad es crucial entender cómo los cibercriminales operan para poder defendernos de manera efectiva. Uno de los principales vectores de ataque es el phishing y suele ser la principal vía de acceso inicial en las organizaciones afectadas por un ciberataque.
En este artículo vamos a aprender a instalar y utilizar una herramienta de simulación de envío de phishing llamada Gophish. Además, no solo aprenderemos a instalar y hacer uso de la herramienta. También montaremos una infraestructura expuesta a internet para realizar el envío de phishing de manera similar a un entorno real.
Es importante aclarar que todo lo descrito a continuación sobre la serie de artículos tiene el objetivo de proporcionar al lector un enfoque didáctico acerca de cómo los cibercriminales pueden hacer uso de este tipo de herramientas y sus principales técnicas de ataque.
Antes de comenzar
En primer lugar, ¡aviso a navegantes!: vamos a hacer uso de Docker para montar la infraestructura. Si no sabéis instalar y usar Docker estáis de suerte. Nuestro compañero Alberto Jodar ha escrito una serie de artículos relacionados con el uso e instalación de Docker que os recomiendo leer antes de comenzar. Os dejo por aquí el enlace al primer artículo de la serie: Docker para ciberseguridad – Parte 1: Instalación e imágenes
Dicho esto, ¡comencemos!
Registro en AWS y despliegue de la instancia virtual
Queremos crear una infraestructura real y expuesta a internet. Para ello, vamos a registrar una cuenta en AWS: Enlace a registro
No os preocupéis, la cuenta es totalmente gratuita a pesar de tener que incluir algunos datos bancarios (tarjeta de crédito). AWS ofrece la posibilidad de hacer uso de algunos de sus servicios de manera limitada durante 1 año: catálogo
Nosotros vamos a hacer uso del servicio Amazon EC2. Se trata de un servicio que ofrece instancias virtuales donde podremos obtener capacidad de cómputo en la nube. Principalmente, hay que tener en cuenta que ofrece gratuitamente estos recursos:
- Instalar la imagen de sistema operativo que elijamos
- Hasta 30 GB de almacenamiento
- 750 al mes de computo con procesadores t2.micro (o t3.micro en las regiones en las que t2.micro no esté disponible)
PD: Podéis desplegar tantas instancias como queráis dividiendo los recursos anteriores entre todas. ¡Importante!: no debemos excedernos o de lo contrario comenzaran a cobrarnos, ¿y no queremos eso verdad? 🙂
Con la cuenta «root» de AWS creada (básicamente nuestro email de registro y contraseña utilizados) iniciamos sesión.
Nos dirigimos al panel de búsqueda superior y escribimos «EC2». Seleccionamos la siguiente opción:
Hay que cambiar la región de AWS sobre la que estamos operando. Vamos a seleccionar «Estocolmo» ya que se puede hacer uso del procesador t3.micro (es ligeramente mejor que t2.micro). Esto se puede hacer sobre la siguiente opción de la esquina superior derecha:
Para crear nuestra instancia hay que seleccionar la siguiente opción:
En este caso, vamos a hacer uso de las siguiente configuración (podéis cambiar cosas si os apetece pero tener en cuenta que entre dentro del paquete gratuito):
- Nombre de la instancia: GOPHISH_DFIRPILLS
- Imagen: Ubuntu 24.04 LTS x64, SSD Volume Type
- Tipo de instancia: t3.micro
- Permitir tráfico HTTP y HTTPS desde internet
- Permitir tráfico SSH desde cualquier lugar
- 27 GiB de almacenamiento tipo gp3
También es importante generar un par de claves. Esto lo vamos a necesitar para acceder a la instancia en remoto a través de SSH. Guardarlas en un lugar seguro de vuestro host:
Finalmente, pulsamos el botón «Lanzar instancia».
Ya tenemos lista la instancia virtual de AWS Es posible que tengamos que esperar unos minutos hasta que AWS la inicialice. Ole y ole 😉
Acceso a la instancia
Para acceder remotamente será necesario conectar por SSH. Os dejo algunas vías disponibles para hacerlo. Existen muchas más pero no vamos a entrar en ese detalle:
- Putty o MobaXterm. Tened en cuenta el formato de la clave privada .pem o .ppk dependiendo del tipo de cliente.
- Desde AWS a través de un servicio web que proporciona
A lo largo de la serie vamos a acceder haciendo uso de MobaXterm. Por aquí tenéis el enlace para instalaros el software.
Hay que crear una nueva sesión SSH. Para ello, rellenar las siguientes opciones de configuración. Básicamente se trata de especificar la IP de la instancia de AWS, el usuario de la sesión (ubuntu por defecto), la ruta donde hemos almacenado la clave privada generada de la instancia, la opción X11-Forwarding (esto lo entenderéis más tarde) y el nombre de la sesión.
La IP del servidor se puede extraer del panel de administración de instancias de AWS:
Una vez creada la sesión, podremos acceder al servidor haciendo doble clic sobre esta en MobaXterm.
Configuración del laboratorio
Modificación hostname
Lo primero que vamos a hacer es cambiar el nombre del host. Yo voy a nombrarlo con «GOPHISH-DFIRPILLS». Podéis poner el que queráis. Para ello, escribir el siguiente comando y guardar cambios sobre el fichero:
sudo nano /etc/hostname
Ahora reiniciamos la instancia para que se apliquen los cambios. Es posible que pasen varios minutos hasta que la instancia este preparada de nuevo:
sudo shutdown -r now
Tras volver a iniciar sesión por SSH, realizamos una actualización del sistema con:
sudo apt update
sudo apt upgrade
Instalación del navegador y dependencias X11 forwarding
Procedemos a instalar el navegador Chromium y todo lo necesario para hacer el reenvío de gráficos a través del servidor X11 de MobaXterm. Esto es lo que os mencionaba anteriormente que ibaís a comprender. Es una vía excelente para ejecutar con ventanas gráficas algunos software como el navegador. Esto nos va a permitir no exponer a internet algunos puertos relacionados con servicios del laboratorio como por ejemplo el panel de administración de Gophish. No obstante, es ligeramente incómodo de usar por su delay (a mi me entran ganas de golpear cosas 😆). Por ello, también os voy a enseñar a exponer los puertos hacia internet en caso de que así queráis. En DFIR PILLS tenemos opciones para todos los públicos 😂.
nano ~/.bashrc
#Añadimos al final del fichero
export XAUTHORITY=$HOME/.Xauthority
Guardamos el fichero anterior y ejecutamos:
source ~/.bashrc
Continuamos instalando algunas dependencias y el propio navegador:
sudo apt install xdg-utils
sudo apt install chromium-browser
Instalación de Docker y descarga de imágenes
Procedemos a instalar Docker. Podéis seguir los pasos de instalación aquí.
Con Docker instalado, vamos a obtener las imágenes de los componentes del laboratorio de phishing. El laboratorio se va a componen de 3 imágenes:
- Postfix: servidor SMTP
- Gophish: kit de simulación de campañas de phishing
- Mailhog: servicio email testing
docker pull gophish/gophish
La imagen de MailHog la vamos a montar desde el Dockerfile del proyecto de Github:
mkdir mailhog
cd mailhog/
wget https://raw.githubusercontent.com/mailhog/MailHog/master/Dockerfile
nano Dockerfile
Añadimos al fichero Dockerfile las siguientes líneas con la que podremos configurar el servicio web de MailHog con autenticación básica por HTTP:
COPY ./mailhog-auth.txt /etc/mailhog-auth.txt
CMD ["-auth-file=/etc/mailhog-auth.txt"]
Crearemos un usuario y contraseña en formato Bcrypt como indica la documentación (usuario:contraseña(bcrypt format). Es importante generar este fichero en el mismo directorio en el que se encuentra el Dockerfile. Yo voy a utilizar CyberChef para generarla:
nano mailhog-auth.txt
Para generar la imagen de MailHog, haremos uso del siguiente comando. :
docker build -t "mailhog" .
La imagen de Postfix la vamos a montar desde un Dockerfile desarrollado por nosotros mismos sobre la imagen base de ubuntu. Aquí os dejo el contenido del dockerfile:
# Usa la imagen base de Ubuntu
FROM ubuntu:latest
# Actualiza el repositorio de paquetes y instala los paquetes necesarios
RUN apt-get update && \
apt-get install -y nano net-tools opendkim postfix && \
apt-get clean
# Exponer el puerto 25 en la red Docker interna
EXPOSE 25
# Comando por defecto
CMD ["tail", "-f", "/dev/null"]
Para generar el dockerfile:
mkdir /home/ubuntu/postfixDocker
cd postfixDocker
nano Dockerfile
Ahora creamos la imagen con:
sudo docker build -t postfix .
Ya tenemos las tres imágenes de Docker listas para ser desplegadas como contenedores.
Despliegue/ejecución de contenedores
Vamos a ejecutar los contenedores con los siguientes comandos:
#Para lanzar Gophish
sudo docker run --name gophish -d -p 3333:3333 -p 443:443 -p 80:80 gophish/gophish
#Para lanzar MailHog
sudo docker run --name mailhog -d -p 8025:8025 mailhog
#Para lanzar Postfix.
sudo docker run -d --name postfix postfix
Ahora tenemos los tres contenedores ejecutándose con las siguientes características:
- Contenedor Gophish:
- Nombre: gophish
- Puertos expuestos al host: 3333 (servicio web administracion) , 443 y 80 (servicio web donde se presentará landing page de la campaña de phishing)
- Puertos del contenedor a la escucha: 3333, 443, 8080 y 80
- Contenedor Mailhog:
- Nombre: mailhog
- Puertos expuestos al host: 8025 (servicio web mailhog)
- Puertos del contenedor a la escucha: 1025 (servicio SMTP), 8025 (servicio web mailhog)
- Contenedor Postfix:
- Nombre: postfix
- Puertos expuestos al host: ninguno
- Puertos del contenedor a la escucha: 25 (SMTP)
Llegado a este punto, tenemos que cambiar la contraseña del usuario admin del panel de administración de gophish. Esta contraseña la podremos encontrar en los logs de ejecución del contenedor. Para ello, introducir el comando:
sudo docker container logs gophish
Buscando deberéis encontrar un mensaje como este en el que se os indica la contraseña:
Acceso a servicios del laboratorio
Solo nos queda una última cosa. Es hora de probar accesos a servicios. Comenzaremos con el acceso al panel de administración de gophish. Para esto, tenemos dos vía posibles que os voy a explicar a continuación:
- Desde internet
- Forwardeando los gráficos a través del servidor x11
La vía más segura es forwardeando los gráficos ya que no tendremos que exponer puertos a internet de la instancia. Es muy fácil ya que tenemos todo configurado ya. Simplemente hay que ejecutar el navegador Chromium. Se os tendrá que abrir una ventana en el host en el que estéis ejecutando MobaXterm.
chromium
Se accede vía: https://127.0.0.1:3333/. Indicáis el usuario «admin» y la contraseña anterior y os solicitara cambiarla.
Si por el contrario, queréis acceder desde internet entonces hay que exponer los puertos de la instancia. Esto se configura en AWS. Sobre la instancia, hay que dirigirse a «Seguridad» y hacer clic sobre el grupo de seguridad. AWS redirige a un panel donde se pueden modificar las reglas de entrada. Para cualquier servicio tendréis que exponerlo a internet en caso de querer acceder por esta vía. Muestro el ejemplo con el servicio de administración de gophish. Se puede configurar de tal manera que solo se pueda acceder desde vuestra IP pública que el ISP os haya asignado.
Recordar que en caso de acceder desde internet, deberéis indicar la IP pública de la instancia y puerto en la URL de vuestro navegador.
Adicionalmente, vamos a probar el acceso al servicio web de mailhog (nuestro SMTP de pruebas) a través de http://127.0.0.1:8025/. Recordar el usuario y contraseña que configuramos anteriormente:
¡Chinpun! Ya tenemos el laboratorio instalado, configurado y podemos acceder correctamente. En la siguiente entrada de la serie vamos a entender como configurar lo necesario para enviar campañas de phishing con éxito, hacer pruebas controladas y aprender a lanzarlas en entornos reales (controlados, no hagáis el mal por favor).
¡Nos vemos!