
Uma nova abordagem para Browser In The Browser (BITB) sem o uso de iframes, permitindo contornar os tradicionais framebusters implementados por páginas de login como a Microsoft e o uso com Evilginx.
Uma nova abordagem para Browser In The Browser (BITB) sem o uso de iframes, permitindo contornar os framebusters tradicionais implementados por páginas de login como a Microsoft.
Este código de prova de conceito (POC) foi criado para usar este novo BITB com Evilginx e um phishlet do Microsoft Enterprise.

Antes de mergulhar a fundo nisso, recomendo que você veja minha palestra no BSides 2023, onde introduzi este conceito pela primeira vez, com detalhes importantes sobre como criar o ataque de phishing "perfeito". ▶ Assistir ao Vídeo
Esta ferramenta é apenas para fins educacionais e de pesquisa. Ela demonstra um método Browser In The Browser (BITB) sem base em iframes. O autor não é responsável por qualquer uso indevido. Use esta ferramenta apenas de forma legal e ética, em ambientes controlados para testes de defesa em cibersegurança. Ao usar esta ferramenta, você concorda em fazê-lo de forma responsável e por sua própria conta e risco.
No último ano, tenho experimentado diferentes truques para criar o ataque de phishing "perfeito". As típicas "bandeiras vermelhas" que as pessoas são treinadas para procurar são coisas como urgência, ameaças, autoridade, má gramática, etc. A próxima melhor coisa que as pessoas verificam hoje em dia é o link/URL do site com o qual estão interagindo, e elas tendem a ficar muito conscientes no momento em que são solicitadas a inserir credenciais sensíveis, como e-mails e senhas.
É aí que o Browser In The Browser (BITB) entra em cena. Originalmente apresentado por @mrd0x, BITB é um conceito de criar a aparência de uma janela de navegador crível dentro da qual o atacante controla o conteúdo (servindo o site malicioso dentro de um iframe). No entanto, a barra de URL falsa da janela do navegador falso é definida para o site legítimo que o usuário esperaria. Isso combinado com uma ferramenta como o Evilginx se torna a receita perfeita para um ataque de phishing crível.
O problema é que, nos últimos meses/anos, grandes sites como a Microsoft implementaram vários pequenos truques chamados "framebusters/framekillers" que principalmente tentam quebrar iframes que possam ser usados para servir o site com proxy, como no caso do Evilginx.
Em suma, Evilginx + BITB para sites como a Microsoft não funciona mais. Pelo menos não com um BITB que depende de iframes.
Um Browser In The Browser (BITB) sem nenhum iframe! Simples assim.
Isso significa que agora podemos usar BITB com Evilginx em sites como a Microsoft.
Evilginx aqui é apenas um exemplo forte, mas o mesmo conceito pode ser usado para outros casos de uso também.
Framebusters têm como alvo específico iframes, então a ideia é criar o efeito BITB sem o uso de iframes, e sem interromper a estrutura/conteúdo original da página com proxy. Isso pode ser alcançado injetando scripts e HTML além do conteúdo original usando pesquisa e substituição (também conhecido como substituições), e depois confiando completamente em truques HTML/CSS/JS para criar o efeito visual. Também usamos um truque adicional chamado "Shadow DOM" em HTML para colocar o conteúdo da página de destino (fundo) de forma que não interfira com o conteúdo com proxy, permitindo-nos usar flexivelmente qualquer página de destino com pequenos scripts JS adicionais.
Crie uma VM Linux local. (Eu pessoalmente uso Ubuntu 22 no VMWare Player ou Parallels Desktop)
Atualize e atualize os pacotes do sistema:
sudo apt update && sudo apt upgrade -y
Crie um novo usuário evilginx e adicione o usuário ao grupo sudo:
sudo su
adduser evilginx
usermod -aG sudo evilginx
Teste se o usuário evilginx está no grupo sudo:
su - evilginx
sudo ls -la /root
Navegue até o diretório home do usuário:
cd /home/evilginx
(Você também pode fazer tudo como usuário sudo, já que estamos executando tudo localmente)
Baixe e construa o Evilginx: Documentação Oficial
Copie os arquivos do Evilginx para /home/evilginx
Instale o Go: Documentação 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
ADICIONE: export PATH=$PATH:/usr/local/go/bin
source ~/.profile
Verifique:
go version
Instale o make:
sudo apt install make
Construa o Evilginx:
cd /home/evilginx/evilginx2
make
Crie um novo diretório para nossa compilação do Evilginx junto com phishlets e redirectors:
mkdir /home/evilginx/evilginx
Copie a compilação, phishlets e 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
Correção rápida do firewall do Ubuntu (obrigado a @kgretzky)
sudo setcap CAP_NET_BIND_SERVICE=+eip /home/evilginx/evilginx/evilginx
No Ubuntu, se você receber o erro Failed to start nameserver on: :53, tente modificar este arquivo
sudo nano /etc/systemd/resolved.conf
edite/adicione DNSStubListener para no > DNSStubListener=no
depois
sudo systemctl restart systemd-resolved
Como usaremos o Apache2 na frente do Evilginx, precisamos fazer o Evilginx ouvir em uma porta diferente de 443.
nano ~/.evilginx/config.json
ALTERE https_port de 443 para 8443
Instale o Apache2:
sudo apt install apache2 -y
Ative os módulos do Apache2 que serão usados: (Também estamos desativando o módulo access_compat, pois às vezes 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
Inicie e ative o Apache:
sudo systemctl start apache2
sudo systemctl enable apache2
Teste se o Apache e o networking da VM funcionam visitando o IP da VM a partir de um navegador na máquina host.
Instale o git se ainda não estiver disponível:
sudo apt -y install git
Clone este repositório:
git clone https://github.com/waelmas/frameless-bitb
cd frameless-bitb
Crie diretórios para as páginas que serviremos:
sudo mkdir /var/www/home
sudo mkdir /var/www/primary
sudo mkdir /var/www/secondary
Copie os diretórios de 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: Remova a página padrão do Apache (não usada):
sudo rm -r /var/www/html/
Copie o phishlet do O365 para o diretório de phishlets:
sudo cp ./O365.yaml /home/evilginx/evilginx/phishlets/O365.yaml