Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cuddlephish — Browser-in-the-Middle (BitM) Armado para Testadores de Penetração | Kitploit
Ferramentas/GitHubGitHub/fkasler/cuddlephish
Ferramentas de PhishingExploração de Aplicações WebPhishingTestes de PenetraçãoEngenharia SocialRed Teaming
GitHubfkasler/cuddlephish

cuddlephish

Browser-in-the-Middle (BitM) Armado para Testadores de Penetração

Ver Repositório
6738081há 1 mêsRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CuddlePhish

phishy

Navegador-no-meio (BitM) multi-usuário armado para testadores de penetração. Este ataque pode ser usado para contornar a autenticação multifator em muitas aplicações web de alto valor. Funciona até mesmo para aplicações que não utilizam tokens de sessão e, portanto, não seriam exploráveis usando ataques tradicionais de roubo de tokens. Esta é uma ferramenta de engenharia social e não explora nenhuma falha técnica no serviço alvo.

Início Rápido

Esta ferramenta é um servidor web especializado. Foi projetada para ser executada em um servidor Linux Debian 11 (Bullseye) e depende de informações de IP público para proteger a funcionalidade de administração. Não espere conseguir testar localmente sem enfrentar grandes dificuldades.

Aviso: Chromium não é suportado em ARM. Embora seja tecnicamente possível forçar o uso de um binário Chromium ARM, você perderá todos os recursos/proteções adicionais do puppeteer-extra.

Esta configuração de exemplo utiliza o Caddy para lidar com TLS, SNI e adicionar alguns cabeçalhos personalizados, como 'X-Real-IP', a cada requisição. Você não precisa usar o Caddy com o Cuddlephish, pois o mesmo proxy reverso pode ser configurado usando Nginx, Apache, etc. Eu gosto do Caddy porque é fácil de instalar com Docker e tem plugins para gerenciar certificados Letsencrypt para a maioria dos registradores de domínio. O Caddyfile de exemplo mostra como configurá-lo para Gandi. Consulte a documentação do seu registrador.

Instale Docker, Node, XVFB e algumas outras dependências:

git clone https://github.com/fkasler/cuddlephish
cd cuddlephish
sudo bash install_deps.sh

Você pode então usar o Docker para construir o Caddy com um plugin de certificado curinga para seu registrador. O exemplo é para Gandi. Consulte a documentação aqui e a lista de módulos de provedores DNS aqui. Você pode modificar o Dockerfile para seu registrador antes de construir:

sudo docker build -t caddy .

Agora modifique o Caddyfile para trocar seu domínio e a chave de API do Gandi (ou outro registrador) e inicie o Caddy. Recomendo iniciar isso em uma janela screen ou tmux para que você possa executar o servidor Node em outra janela em breve:

sudo docker run -p 80:80 -p 443:443 -p 2019:2019 -v $PWD/Caddyfile:/etc/caddy/Caddyfile --network=host caddy:latest

Com o Caddy lidando com o tráfego para nós nas portas 80 e 443, podemos finalmente executar a ferramenta!

Instale as dependências do Node:

npm install

Alguns ajustes de configuração: PASSO CRÍTICO: Certifique-se de modificar o config.json de exemplo para adicionar seu(s) IP(s) público(s) aprovado(s) para acesso de administrador. Essa lista de permissões de IPs é o que dita o acesso à interface web "/admin". Você também deve alterar a chave de socket padrão para algo mais seguro.

A ferramenta não está configurada para atacar nenhum login por padrão, então você precisará adicionar alguns. Há um script 'add_target.js' para facilitar essa etapa. Basta executar o script e colar a URL do portal de login que você deseja segmentar quando solicitado:

node add_target.js

Isso capturará o nome do serviço, o título da aba e o favicon para você e adicionará uma entrada em 'targets.json'. Você pode executar este script várias vezes e ele adicionará seus novos alvos. O script nomeará cada serviço com base no domínio, sem o nível superior. Então, para 'https://www.example.com/login.php', o serviço seria apenas 'example' ao especificar seu alvo quando você...

Execute-o!

node index.js example

Após alguns segundos, você deve ver uma mensagem no console quando sua primeira instância automatizada do Chrome fizer check-in via websockets. Agora, os visitantes do seu site de phishing devem ver o que parece ser a página de login alvo, mas na verdade é um feed de vídeo da sua instância automatizada do navegador. Eles também podem interagir com sua instância do navegador e fazer login para você.

Se você configurou corretamente seu(s) IP(s) de administrador no config.json, você deve conseguir visualizar uma interface web especial '/admin' para rastrear usuários, visualizar logs de teclas, assumir o controle de instâncias do navegador logadas, roubar cookies e excluir instâncias indesejadas do navegador.

Nota: Você não verá nada na página de administração até ter algumas vítimas. Assim que tiver uma vítima, a instância do navegador dela deve aparecer na UI de administração.

Solução de Problemas ("Apenas vejo uma página em branco")

Várias pessoas abriram issues sobre uma "Página Branca em Branco", que é mais um sintoma de muitos problemas possíveis, e não um problema em si. Por favor, não abra issues com nomes de sintomas vagos. Em vez disso, se você tiver uma página em branco no lado do usuário, tente primeiro verificar o seguinte:

  • Verifique se o título da aba do serviço alvo não contém caracteres especiais. Usamos "--auto-select-desktop-capture-source" para dizer ao nosso navegador automatizado qual aba transmitir. Esta opção falha para títulos com caracteres especiais. No entanto, você não precisa que o título completo da aba corresponda; apenas precisa de uma substring suficiente para uma correspondência única.
  • Na mesma linha, se seu serviço alvo envia um redirecionamento 302 ou similar para seu navegador automatizado, e o título da aba muda antes de iniciarmos a transmissão WebRTC para uma vítima, então "--auto-select-desktop-capture-source" falhará. Você pode ver como o add_target.js captura essa informação e replicá-la no index.js junto com uma instrução console.log() para ver se o título mudou antes de negociar o WebRTC.
  • Verifique se o HTML do cuddlephish está carregando e se não há erros óbvios de JavaScript no console do desenvolvedor no front-end. A configuração de exemplo do Caddy tem alguns bloqueios básicos em strings de user agent como curl. No mínimo, você deve ver que o título da aba e o favicon estão sendo falsificados.
  • Certifique-se de que você pode interagir com o serviço e porta STUN de exemplo (stun.l.google.com:19302) a partir do seu servidor.
  • Certifique-se de que a rede a partir da qual você está trabalhando permite STUN. STUN só funciona com "NAT de cone completo", "NAT de cone restrito (endereço)" e "NAT de cone restrito a porta". NÃO funciona com "NAT simétrico".
  • Certifique-se de que você pode interagir com o serviço e porta STUN de exemplo (stun.l.google.com:19302) a partir do navegador da vítima de teste. Tente usar https://icetest.info/.
  • Se sua rede não conseguir alcançar o servidor STUN de exemplo, mude para um que você consiga alcançar. Se sua rede não permite STUN, então existe uma configuração de exemplo para um servidor TURN nas páginas HTML cuddlephish e broadcast. Você terá que configurar ou pagar pelo seu próprio servidor TURN. NOTA: Um servidor TURN tem a maior chance de conectar vítimas de phishing às suas instâncias do navegador.

Em um nível alto, se você apenas vê uma página em branco no front-end, isso significa que há alguma quebra ocorrendo na cadeia de fluxo de dados desde "Iniciar WebRTC" > "Selecionar Aba para Transmitir" > "Negociar ICE com o Navegador da Vítima" > "Transmitir Vídeo". As etapas de solução de problemas acima visam ajudá-lo a seguir os dados através desse processo. Quando funcionando corretamente, você deve esperar ver um fluxo de log no servidor semelhante ao seguinte:

troubleshoot

Espero que isso ajude com quaisquer problemas e, como sempre, informações suficientes para reproduzir consistentemente um problema são um pré-requisito para abrir issues para investigação adicional.

Baixar ferramenta