Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cuddlephish — Browser-in-the-Middle (BitM) armato per Penetration Testers | Kitploit
Strumenti/GitHubGitHub/fkasler/cuddlephish
Strumenti di PhishingSfruttamento di Applicazioni WebPhishingPenetration TestingIngegneria SocialeRed Teaming
GitHubfkasler/cuddlephish

cuddlephish

Browser-in-the-Middle (BitM) armato per Penetration Testers

Vedi Repository
673806512 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CuddlePhish

phishy

Browser-in-the-middle (BitM) multiutente armato per penetration tester. Questo attacco può essere utilizzato per bypassare l'autenticazione multifattoriale su molte applicazioni web di alto valore. Funziona anche per applicazioni che non utilizzano token di sessione e che quindi non sarebbero sfruttabili con gli attacchi tradizionali di furto di token. È uno strumento di ingegneria sociale e non sfrutta alcun difetto tecnico nel servizio target.

Avvio rapido

Questo strumento è un server web specializzato. È progettato per funzionare su un server Linux Debian 11 (Bullseye) e si basa sulle informazioni IP pubbliche per proteggere le funzionalità di amministrazione. Non aspettarti di poter testare in locale senza superare alcuni ostacoli considerevoli.

Avvertenza: Chromium non è supportato su ARM. Sebbene sia tecnicamente possibile forzare l'uso di un binario Chromium per ARM, perderai tutte le funzionalità/protezioni aggiuntive di puppeteer-extra.

Questo esempio di configurazione utilizza Caddy per gestire TLS, SNI e aggiungere un paio di header personalizzati come 'X-Real-IP' a ogni richiesta. Non sei obbligato a usare Caddy con Cuddlephish, poiché lo stesso reverse proxy può essere configurato con Nginx, Apache, ecc. Preferisco Caddy perché è facile da installare con Docker e ha plugin per gestire i certificati Letsencrypt per la maggior parte dei registrar di domini. Il Caddyfile di esempio mostra come configurarlo per Gandi. Controlla la documentazione per il tuo registrar.

Installa Docker, Node, XVFB e altre dipendenze:

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

Puoi quindi usare Docker per creare Caddy con un plugin per certificati wildcard per il tuo registrar. L'esempio è per Gandi. Controlla la documentazione qui e l'elenco dei moduli per provider DNS qui. Puoi modificare il Dockerfile per il tuo registrar prima di crearlo:

sudo docker build -t caddy .

Ora modifica il Caddyfile per sostituire il tuo dominio e la chiave API di Gandi (o altro registrar), quindi avvia Caddy. Ti consiglio di avviarlo in una finestra screen o tmux in modo da poter eseguire il server Node in un'altra finestra tra poco:

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

Con Caddy che gestisce il traffico sulle porte 80 e 443, possiamo finalmente eseguire lo strumento!

Installa le dipendenze Node:

npm install

Alcune piccole modifiche alla configurazione: PASSAGGIO CRITICO: assicurati di modificare il file config.json di esempio per aggiungere i tuoi IP pubblici approvati per l'accesso amministrativo. Questa whitelist di IP determina l'accesso all'interfaccia web "/admin". Dovresti anche cambiare la chiave socket predefinita con una più sicura.

Lo strumento non è configurato per targetizzare alcun login di default, quindi dovrai aggiungerne alcuni. C'è uno script 'add_target.js' per semplificare questo passaggio. Basta eseguire lo script e incollare l'URL del portale di login che desideri targetizzare quando richiesto:

node add_target.js

Questo recupererà il nome del servizio, il titolo della scheda e la favicon per te e aggiungerà una voce a 'targets.json'. Puoi eseguire questo script più volte e aggiungerà i nuovi target. Lo script nominerà ogni servizio in base al dominio, senza il livello superiore. Quindi, per 'https://www.example.com/login.php' il servizio sarà semplicemente 'example' quando specificherai il tuo target quando...

Eseguilo!

node index.js example

Dopo alcuni secondi, dovresti vedere un messaggio nella console quando la prima istanza automatica di Chrome si connette tramite websocket. Ora i visitatori del tuo sito di phishing vedranno quella che sembra la pagina di login del target, ma in realtà è un flusso video della tua istanza automatica del browser. Possono anche interagire con la tua istanza del browser e accedere per te.

Se hai configurato correttamente i tuoi IP amministrativi in config.json, dovresti essere in grado di visualizzare un'interfaccia web speciale '/admin' per tenere traccia degli utenti, visualizzare i log dei tasti, assumere il controllo delle istanze del browser connesse, rubare i cookie ed eliminare le istanze del browser indesiderate.

Nota: non vedrai nulla nella pagina di admin finché non avrai delle vittime. Una volta che hai una vittima, la sua istanza del browser dovrebbe apparire nell'interfaccia di amministrazione.

Risoluzione dei problemi ("Vedo solo una pagina bianca")

Diverse persone hanno aperto issue riguardanti una "Pagina Bianca Vuota", che è più un sintomo di molti possibili problemi, non un problema in sé. Per favore, non aprire issue con nomi di sintomi vaghi. Invece, se vedi una pagina bianca dal lato utente, prova prima a controllare quanto segue:

  • Controlla che il titolo della scheda del servizio target non contenga caratteri speciali. Usiamo "--auto-select-desktop-capture-source" per dire al nostro browser automatico quale scheda trasmettere. Questa opzione fallisce con titoli contenenti caratteri speciali. Tuttavia, non è necessario che l'intero titolo della scheda corrisponda; basta una sottostringa sufficiente per una corrispondenza univoca.
  • Sulla stessa linea, se il tuo servizio target invia un reindirizzamento 302 o simile al tuo browser automatico e il titolo della scheda cambia prima che iniziamo la trasmissione WebRTC verso una vittima, allora "--auto-select-desktop-capture-source" fallirà. Puoi vedere come add_target.js acquisisce queste informazioni e replicarle in index.js insieme a una dichiarazione console.log() per vedere se il titolo è cambiato prima di negoziare WebRTC.
  • Controlla che l'HTML di cuddlephish venga caricato e che non ci siano errori JavaScript evidenti nella console sviluppatore sul front-end. La configurazione di esempio di Caddy ha alcuni blocchi di base sugli user agent come curl. Come minimo, dovresti vedere che il titolo della scheda e la favicon vengono falsificati.
  • Assicurati di poter interagire con il servizio STUN di esempio e la porta (stun.l.google.com:19302) dal tuo server.
  • Assicurati che la rete da cui stai lavorando permetta STUN. STUN funziona solo con "full-cone NAT", "(Address)-restricted-cone NAT" e "Port-restricted cone NAT". NON funziona con "Symmetric NAT".
  • Assicurati di poter interagire con il servizio STUN di esempio e la porta (stun.l.google.com:19302) dal browser della tua vittima di test. Prova a usare https://icetest.info/.
  • Se la tua rete non riesce a raggiungere il server STUN di esempio, cambialo con uno che puoi raggiungere. Se la tua rete non permette STUN, allora c'è una configurazione di esempio per un server TURN nelle pagine HTML di cuddlephish e broadcast. Dovrai configurare o pagare per un server TURN tuo. NOTA: Un server TURN ha le migliori possibilità di connettere le vittime di phishing alle tue istanze del browser.

Ad alto livello, se vedi solo una pagina bianca sul front-end, significa che c'è un'interruzione nella catena del flusso di dati da "Avvia WebRTC" > "Seleziona scheda da trasmettere" > "Negoziare ICE con il browser della vittima" > "Stream video". I passaggi di risoluzione dei problemi sopra hanno lo scopo di aiutarti a seguire i dati attraverso questo processo. Quando funziona correttamente, dovresti vedere un flusso di log sul server simile al seguente:

troubleshoot
Scarica lo strumento