Cómo hacer una campaña de phishing paso a paso con Phishing Frenzy

Phishing Frenzy es una aplicación de código abierto en Ruby on Rails que pueden adoptar los pentesters para gestionar campañas correo de electrónico de phishing. El proyecto lo inició en 2013 Brandon "zeknox" McCann para hacer más eficiente el proceso haciendo las campañas de phishing lo más realistas posibles a través de su gestión, reutilización de plantillas, generación de estadísticas y otras características.

Vamos a hacer una campaña de ejemplo para que os hagáis una idea del uso de la herramienta y de sus posibilidades. Para ello, vamos a idear un phishing falsificando la página de login de LinkedIn, recopilando las direcciones de correo de una empresa y enviando como gancho un mensaje con un enlace a una supuesta oferta de empleo.

Empezaremos instalando Phishing Frenzy en una máquina virtual Kali Linux pero, en lugar de invertir más de una hora en instalar paso a paso lo necesario, vamos a aprovechar Docker para bajarnos directamente el contenedor y empezar a usarlo en tan sólo unos minutos.

Para ello nos traemos e instalamos directamente el repositorio:

vmotos@kali:~$ sudo docker pull b00stfr3ak/ubuntu-phishingfrenzy

Confirmamos que la imagen se ha instalado correctamente:

vmotos@kali:~$ sudo docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
b00stfr3ak/ubuntu-phishingfrenzy   latest              3863078923b4        3 months ago        1.24 GB

Y ejecutamos:

vmotos@kali:~$ sudo docker run -d -p 80:80 b00stfr3ak/ubuntu-phishingfrenzy
c8c31f9e4979ab6e272cc816ad021da2f88d8ce3095c98403001a02529b03fd8            3863078923b4        3 months ago        1.24 GB

Si eres de los que te gusta trastear, puedes comprobar el funcionamiento del repositorio en Docker con:

root@kali:~# docker ps
CONTAINER ID        IMAGE                              COMMAND                CREATED             STATUS              PORTS                NAMES
c8c31f9e4979        b00stfr3ak/ubuntu-phishingfrenzy   "/bin/sh -c /startup   8 minutes ago      Up 48 minutes       0.0.0.0:80->80/tcp   tender_torvalds    

E incluso abrir un shell dentro del contenedor para revisar la configuración:

root@kali:~# docker exec -t -i c8c31f9e4979 /bin/bash
root@c8c31f9e4979:/# vi /etc/apache2/apache2.conf
....
# Phishing Freezy
Include pf.conf
...
root@c8c31f9e4979:/# vi /etc/apache2/pf.conf
VirtualHost *:80>
ServerName phishingfrenzy.local
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /var/www/phishing-frenzy/public
RailsEnv development

# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews

Como veis el virtual host de Apache tiene como ServerName
phishingfrenzy.local así que añadimos la entrada en nuestro fichero host local con la IP de la máquina virtual y abrimos la aplicación web con el navegador. Las credenciales por defecto son:

username: admin
password: Funt1me!



Lo primero que haremos es importar la plantilla de LinkedIn desde un repositorio en Github destinado a que la comunidad vaya subiendo y compartiendo más templates que sean útiles en distintos escenarios.

Para importar plantillas tenemos que ir a Templates y pulsar el botón Restore. Luego busca el archivo Zip e importa el template.  


Una vez importada, la plantilla estará disponible y lista para ser asignada para todas las futuras campañas de phishing.


Si quieres subir tu propio template tendrás que respetar la siguiente estructura de directorios:
root
|--archive
|   |-- templateName.zip
|
|--email
|   |-- email.html.erb
|
|--images
|   |-- email.jpg
|   |-- website.jpg
|
|--www
|   |-- index.php
|   |-- failed.php
|
|--README.txt
 
La carpeta 'archive' contendrá el archivo comprimido que se exportó desde el UI de Phishing Frenzy.
La carpeta 'email' contendrá el correo electrónico que se utiliza para para la plantilla de phishing.
La carpeta 'images' contiene imágenes frescas para que quede bonita la plantilla ;)
La carpeta www es la de los archivos que se utilizan para el sitio web de phishing. Esta puede incluir cualquier fichero necesario para ejecutar el sitio web (todos los css, js u otros archivos).


Pero volvamos a nuestra campaña. Ahora que tenemos preparada la plantilla vamos a empezar a recopilar las cuentas de correo de nuestras futuras víctimas. Antes de empezar con la enumeración tendremos que añadir una clave de búsqueda de Bing (Bing Search API). Activamos una suscripción y copiamos la clave de cuenta principal.


Vamos a 'Admin', 'Global Settings' y la añadimos:


Después vamos a 'Resources', 'Email Enumeration'. Indicamos el dominio a analizar y seleccionamos el número de enlaces a seguir:
 

Como resultado se nos mostrarán las cuentas obtenidas:


Si los resultados del harvester no nos parecen suficientes podemos complementar la búsqueda con otras herramientas. Por ejemplo con Metaploit:
msf > use auxiliary/gather/search_email_collector 
msf  auxiliary(search_email_collector) > set DOMAIN dominio.com
DOMAIN => dominio.com
msf  auxiliary(search_email_collector) > run

[*] Harvesting emails .....
[*] Searching Google for email addresses from dominio.com
[*] Extracting emails from Google search results...
[*] Searching Bing email addresses from dominio.com
[*] Extracting emails from Bing search results...
[*] Searching Yahoo for email addresses from dominio.com
[*] Extracting emails from Yahoo search results...
[*] Located 170 email addresses for dominio.com
[*]  19ee5962-8ff6-416d-83fa-b0ba137c62e7@dominio com
 
 o con TheHarvester:
root@kali:~# theharvester -d dominio.com -l 50 -b bing -f /tmp/resultado.html

A continuación creamos nuestra campaña de prueba:


Seleccionamos el template de LinkedIn y configuramos SMTP, que en mi caso es GMail (precarga las opciones):
 

Personalizamos un poco el email que será enviado a nuestras víctimas:


Seleccionamos los objetivos de la campaña. Podemos importar numerosos contactos directamente copiando de un csv y pegando las cuentas en el UI con este formato:
firstname0, lastname0, email0@domain.net
firstname1, lastname1, email1@domain.net
firstname2, lastname2, email2@domain.net
firstname3, lastname3, email3@domain.net
firstname4, lastname4, email4@domain.net
 
^*Los argumentos 'firstname' y 'lastname' son opcionales.


 
Y finalmente lanzamos la campaña ('launch'):


Si todo ha ido bien las víctimas deberían recibir un mail como este:


Y, si pinchan en el botón 'Confirm you know Sarah Rodriguez' del ejemplo, serán redireccionados a la URL que hayamos puesto con la página falsa de login:


Ahora sólo hay que sentarse con la caña y esperar a que piquen...


Y ésto es lo que sería la instalación básica e iniciación de una campaña de phishing. Por supuesto en un escenario real habría que trabajar algo más antes. Podríamos clonar un sitio web, anonimizar todos los nodos, activar SSL, inyectar javascript mediante los hooks de BeEf integrado e incluso obtener una shell mediante un ataque HTA Powershell. 

"Dale a un hombre un pescado y lo alimentarás por un día. Enséñale cómo pescar y lo alimentarás durante una vida".
570 aC-490 aC - Lao Tsé

Comentarios