hacktricks/generic-methodologies-and-resources/phishing-methodology/README.md
2024-02-10 13:03:23 +00:00

23 KiB
Raw Blame History

Metodologia di Phishing

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Metodologia

  1. Ricognizione della vittima
  2. Seleziona il dominio della vittima.
  3. Effettua una enumerazione web di base cercando i portali di accesso utilizzati dalla vittima e decidi quale impersonare.
  4. Utilizza alcuni OSINT per trovare email.
  5. Prepara l'ambiente
  6. Acquista il dominio che utilizzerai per la valutazione del phishing.
  7. Configura il servizio email relativo (SPF, DMARC, DKIM, rDNS)
  8. Configura il VPS con gophish
  9. Prepara la campagna
  10. Prepara il modello di email
  11. Prepara la pagina web per rubare le credenziali
  12. Avvia la campagna!

Genera nomi di dominio simili o acquista un dominio affidabile

Tecniche di variazione del nome di dominio

  • Parola chiave: Il nome di dominio contiene una parola chiave importante del dominio originale (ad esempio, zelster.com-management.com).
  • Sottodominio con trattino: Cambia il punto con un trattino di un sottodominio (ad esempio, www-zelster.com).
  • Nuovo TLD: Stesso dominio utilizzando un nuovo TLD (ad esempio, zelster.org)
  • Omografo: Sostituisce una lettera nel nome di dominio con lettere che sembrano simili (ad esempio, zelfser.com).
  • Trasposizione: Scambia due lettere all'interno del nome di dominio (ad esempio, zelster.com).
  • Singolarizzazione/Pluralizzazione: Aggiunge o rimuove "s" alla fine del nome di dominio (ad esempio, zeltsers.com).
  • Omissione: Rimuove una delle lettere dal nome di dominio (ad esempio, zelser.com).
  • Ripetizione: Ripete una delle lettere nel nome di dominio (ad esempio, zeltsser.com).
  • Sostituzione: Come omografo ma meno stealthy. Sostituisce una delle lettere nel nome di dominio, forse con una lettera vicina alla lettera originale sulla tastiera (ad esempio, zektser.com).
  • Sottodomini: Introduce un punto all'interno del nome di dominio (ad esempio, ze.lster.com).
  • Inserimento: Inserisce una lettera nel nome di dominio (ad esempio, zerltser.com).
  • Punto mancante: Aggiungi il TLD al nome di dominio. (ad esempio, zelstercom.com)

Strumenti automatici

Siti web

Bitflipping

Esiste la possibilità che uno o più bit memorizzati o in comunicazione vengano automaticamente invertiti a causa di vari fattori come brillamenti solari, raggi cosmici o errori hardware.

Quando questo concetto viene applicato alle richieste DNS, è possibile che il dominio ricevuto dal server DNS non sia lo stesso del dominio richiesto inizialmente.

Ad esempio, una modifica di un singolo bit nel dominio "windows.com" può cambiarlo in "windnws.com".

Gli attaccanti possono approfittarne registrando più domini con bit-flipping simili al dominio della vittima. La loro intenzione è di reindirizzare gli utenti legittimi verso la propria infrastruttura.

Per ulteriori informazioni leggi https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/

Acquista un dominio affidabile

Puoi cercare su https://www.expireddomains.net/ un dominio scaduto che potresti utilizzare.
Per assicurarti che il dominio scaduto che stai per acquistare abbia già un buon SEO, puoi verificare come è categorizzato in:

Scoperta delle email

Per scoprire ulteriori indirizzi email validi o verificare quelli che hai già scoperto, puoi controllare se puoi effettuare un attacco di forza bruta sui server smtp della vittima. Scopri come verificare/scoprire l'indirizzo email qui.
Inoltre, non dimenticare che se gli utenti utilizzano qualsiasi portale web per accedere alle loro email, puoi verificare se è vulnerabile a forza bruta dell'username, ed eventualmente sfruttare la vulnerabilità se possibile.

Configurazione di GoPhish

Installazione

Puoi scaricarlo da https://github.com/gophish/gophish/releases/tag/v0.11.0

Scaricalo e decomprimilo all'interno di /opt/gophish ed esegui /opt/gophish/gophish
Ti verrà fornita una password per l'utente admin sulla porta 3333 nell'output. Pertanto, accedi a quella porta e utilizza quelle credenziali per cambiare la password dell'admin. Potrebbe essere necessario tunnelizzare quella porta in locale:

ssh -L 3333:127.0.0.1:3333 <user>@<ip>

Configurazione

Configurazione del certificato TLS

Prima di questo passaggio, dovresti già aver acquistato il dominio che stai per utilizzare e deve essere puntato all'IP del VPS dove stai configurando gophish.

DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot certonly --standalone -d "$DOMAIN"
mkdir /opt/gophish/ssl_keys
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt

Configurazione della posta

Inizia l'installazione: apt-get install postfix

Successivamente, aggiungi il dominio ai seguenti file:

  • /etc/postfix/virtual_domains
  • /etc/postfix/transport
  • /etc/postfix/virtual_regexp

Cambia anche i valori delle seguenti variabili all'interno di /etc/postfix/main.cf

myhostname = <dominio>
mydestination = $myhostname, <dominio>, localhost.com, localhost

Infine, modifica i file /etc/hostname e /etc/mailname con il nome del tuo dominio e riavvia il tuo VPS.

Ora, crea un record DNS A di mail.<dominio> che punti all'indirizzo IP del VPS e un record DNS MX che punti a mail.<dominio>

Ora proviamo ad inviare una email:

apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com

Configurazione di Gophish

Interrompere l'esecuzione di Gophish e procedere con la configurazione.
Modificare /opt/gophish/config.json come segue (notare l'utilizzo di https):

{
"admin_server": {
"listen_url": "127.0.0.1:3333",
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key"
},
"phish_server": {
"listen_url": "0.0.0.0:443",
"use_tls": true,
"cert_path": "/opt/gophish/ssl_keys/key.crt",
"key_path": "/opt/gophish/ssl_keys/key.pem"
},
"db_name": "sqlite3",
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "",
"level": ""
}
}

Configurare il servizio gophish

Per creare il servizio gophish in modo che possa essere avviato automaticamente e gestito come un servizio, è possibile creare il file /etc/init.d/gophish con il seguente contenuto:

#!/bin/bash
# /etc/init.d/gophish
# initialization file for stop/start of gophish application server
#
# chkconfig: - 64 36
# description: stops/starts gophish application server
# processname:gophish
# config:/opt/gophish/config.json
# From https://github.com/gophish/gophish/issues/586

# define script variables

processName=Gophish
process=gophish
appDirectory=/opt/gophish
logfile=/var/log/gophish/gophish.log
errfile=/var/log/gophish/gophish.error

start() {
echo 'Starting '${processName}'...'
cd ${appDirectory}
nohup ./$process >>$logfile 2>>$errfile &
sleep 1
}

stop() {
echo 'Stopping '${processName}'...'
pid=$(/bin/pidof ${process})
kill ${pid}
sleep 1
}

status() {
pid=$(/bin/pidof ${process})
if [["$pid" != ""| "$pid" != "" ]]; then
echo ${processName}' is running...'
else
echo ${processName}' is not running...'
fi
}

case $1 in
start|stop|status) "$1" ;;
esac

Termina la configurazione del servizio e verifica il suo funzionamento eseguendo:

mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
update-rc.d gophish defaults
#Check the service
service gophish start
service gophish status
ss -l | grep "3333\|443"
service gophish stop

Configurazione del server di posta e del dominio

Attendere e essere legittimi

Più vecchio è un dominio, meno probabile è che venga considerato spam. Pertanto, è consigliabile attendere il più a lungo possibile (almeno 1 settimana) prima di effettuare l'assessment di phishing. Inoltre, se si inserisce una pagina relativa a un settore di reputazione, si otterrà una migliore reputazione.

Si noti che anche se è necessario attendere una settimana, è possibile completare la configurazione ora.

Configurare il record Reverse DNS (rDNS)

Impostare un record rDNS (PTR) che risolva l'indirizzo IP del VPS con il nome di dominio.

Record del Sender Policy Framework (SPF)

È necessario configurare un record SPF per il nuovo dominio. Se non si sa cos'è un record SPF, leggere questa pagina.

È possibile utilizzare https://www.spfwizard.net/ per generare la propria politica SPF (utilizzare l'IP della macchina VPS)

Questo è il contenuto che deve essere impostato all'interno di un record TXT nel dominio:

v=spf1 mx a ip4:ip.ip.ip.ip ?all

Record di Domain-based Message Authentication, Reporting & Conformance (DMARC)

Devi configurare un record DMARC per il nuovo dominio. Se non sai cos'è un record DMARC, leggi questa pagina.

Devi creare un nuovo record DNS TXT che punti all'hostname _dmarc.<dominio> con il seguente contenuto:

v=DMARC1; p=none

DomainKeys Identified Mail (DKIM)

Devi configurare un DKIM per il nuovo dominio. Se non sai cos'è un record DMARC, leggi questa pagina.

Questo tutorial si basa su: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy

{% hint style="info" %} Devi concatenare entrambi i valori B64 che la chiave DKIM genera:

v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB

{% endhint %}

Testa il punteggio di configurazione della tua email

Puoi farlo utilizzando https://www.mail-tester.com/
Accedi semplicemente alla pagina e invia una email all'indirizzo che ti viene fornito:

echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com

Puoi anche verificare la configurazione della tua email inviando un'email a check-auth@verifier.port25.com e leggendo la risposta (per questo dovrai aprire la porta 25 e visualizzare la risposta nel file /var/mail/root se invii l'email come root).
Verifica di superare tutti i test:

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

Puoi anche inviare un messaggio a un account Gmail sotto il tuo controllo, e controllare gli intestazioni dell'email nella tua casella di posta Gmail, dkim=pass dovrebbe essere presente nel campo dell'intestazione Authentication-Results.

Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com;

Rimozione dalla lista nera di Spamhouse

La pagina www.mail-tester.com può indicarti se il tuo dominio è bloccato da Spamhouse. Puoi richiedere la rimozione del tuo dominio/IP su: https://www.spamhaus.org/lookup/

Rimozione dalla lista nera di Microsoft

Puoi richiedere la rimozione del tuo dominio/IP su https://sender.office.com/.

Creare e lanciare una campagna di GoPhish

Profilo di invio

  • Imposta un nome per identificare il profilo del mittente
  • Decidi da quale account invierai le email di phishing. Suggerimenti: noreply, support, servicedesk, salesforce...
  • Puoi lasciare vuoti il nome utente e la password, ma assicurati di selezionare "Ignora gli errori del certificato"

{% hint style="info" %} Si consiglia di utilizzare la funzionalità "Invia email di prova" per verificare che tutto funzioni correttamente.
Consiglio di inviare le email di prova agli indirizzi di posta 10min per evitare di finire nella lista nera durante i test. {% endhint %}

Modello di email

  • Imposta un nome per identificare il modello
  • Quindi scrivi un oggetto (niente di strano, solo qualcosa che ti aspetteresti di leggere in una normale email)
  • Assicurati di aver selezionato "Aggiungi immagine di tracciamento"
  • Scrivi il modello di email (puoi utilizzare variabili come nell'esempio seguente):
<html>
<head>
<title></title>
</head>
<body>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;color:black">Dear {{.FirstName}} {{.LastName}},</span></p>
<br />
Note: We require all user to login an a very suspicios page before the end of the week, thanks!<br />
<br />
Regards,</span></p>

WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY

<p>{{.Tracker}}</p>
</body>
</html>

Nota che per aumentare la credibilità dell'email, è consigliabile utilizzare una firma presa da un'email del cliente. Suggerimenti:

  • Invia un'email a un indirizzo inesistente e controlla se la risposta ha una firma.
  • Cerca email pubbliche come info@ex.com o press@ex.com o public@ex.com e invia loro un'email e attendi la risposta.
  • Cerca di contattare alcune email valide scoperte e attendi la risposta.

{% hint style="info" %} Il modello di email consente anche di allegare file da inviare. Se desideri anche rubare le sfide NTLM utilizzando alcuni file/documenti appositamente creati, leggi questa pagina. {% endhint %}

Pagina di atterraggio

  • Scrivi un nome
  • Scrivi il codice HTML della pagina web. Nota che puoi importare pagine web.
  • Seleziona Cattura dati inviati e Cattura password
  • Imposta una redirezione

{% hint style="info" %} Di solito dovrai modificare il codice HTML della pagina e fare alcuni test in locale (magari utilizzando un server Apache) finché non otterrai i risultati desiderati. Quindi, scrivi quel codice HTML nella casella.
Nota che se hai bisogno di utilizzare alcune risorse statiche per l'HTML (forse alcune pagine CSS e JS) puoi salvarle in /opt/gophish/static/endpoint e quindi accedervi da /static/<nomefile> {% endhint %}

{% hint style="info" %} Per la redirezione potresti reindirizzare gli utenti alla pagina web principale legittima della vittima, o reindirizzarli a /static/migration.html ad esempio, mettere una rotella che gira (https://loading.io/) per 5 secondi e quindi indicare che il processo è stato completato con successo. {% endhint %}

Utenti e Gruppi

  • Imposta un nome
  • Importa i dati (nota che per utilizzare il modello per l'esempio hai bisogno del nome, cognome e indirizzo email di ciascun utente)

Campagna

Infine, crea una campagna selezionando un nome, il modello di email, la pagina di atterraggio, l'URL, il profilo di invio e il gruppo. Nota che l'URL sarà il link inviato alle vittime.

Nota che il Profilo di invio permette di inviare una email di prova per vedere come apparirà l'email di phishing finale:

{% hint style="info" %} Consiglio di inviare le email di prova a indirizzi di posta temporanea per evitare di essere inseriti in una lista nera durante i test. {% endhint %}

Una volta che tutto è pronto, avvia la campagna!

Clonazione di siti web

Se per qualche motivo desideri clonare il sito web, controlla la seguente pagina:

{% content-ref url="clone-a-website.md" %} clone-a-website.md {% endcontent-ref %}

Documenti e file con backdoor

In alcune valutazioni di phishing (principalmente per Red Team) vorrai anche inviare file contenenti una sorta di backdoor (forse un C2 o forse qualcosa che attiverà un'autenticazione).
Consulta la seguente pagina per alcuni esempi:

{% content-ref url="phishing-documents.md" %} phishing-documents.md {% endcontent-ref %}

Phishing MFA

Tramite Proxy MitM

L'attacco precedente è piuttosto intelligente poiché stai falsificando un sito web reale e raccogliendo le informazioni inserite dall'utente. Purtroppo, se l'utente non ha inserito la password corretta o se l'applicazione che hai falsificato è configurata con l'autenticazione a due fattori (2FA), queste informazioni non ti permetteranno di impersonare l'utente ingannato.

In questo caso, sono utili strumenti come evilginx2, CredSniper e muraena. Questi strumenti ti consentiranno di generare un attacco simile a MitM. Fondamentalmente, l'attacco funziona nel seguente modo:

  1. Falsifichi il modulo di accesso della pagina web reale.
  2. L'utente invia le sue credenziali alla tua pagina falsa e lo strumento le invia alla pagina web reale, verificando se le credenziali funzionano.
  3. Se l'account è configurato con 2FA, la pagina MitM richiederà l'autenticazione e una volta che l'utente l'avrà inserita, lo strumento la invierà alla pagina web reale.
  4. Una volta che l'utente è autenticato, tu (come attaccante) avrai catturato le credenziali, il 2FA, il cookie e qualsiasi altra informazione di ogni interazione mentre lo strumento sta eseguendo un attacco MitM.

Tramite VNC

Cosa succederebbe se invece di inviare la vittima a una pagina malevola con lo stesso aspetto di quella originale, la invii a una sessione VNC con un browser connesso alla pagina web reale? Sarai in grado di vedere cosa fa, rubare la password, l'MFA utilizzato, i cookie...
Puoi fare ciò con EvilnVNC

Rilevare la rilevazione

Ovviamente uno dei modi migliori per sapere se sei stato scoperto è cercare il tuo dominio nelle blacklist. Se compare nell'elenco, il tuo dominio è stato rilevato come sospetto.
Un modo semplice per verificare se il tuo dominio compare in una qualsiasi blacklist è utilizzare https://malwareworld.com/

Tuttavia, ci sono altri modi per sapere se la vittima sta cercando attivamente attività di phishing sospette come spiegato in:

{% content-ref url="detecting-phising.md" %} detecting-phising.md {% endcontent-ref %}

Puoi acquistare un dominio con un nome molto simile a quello della vittima e/o generare un certificato per un sottodominio di un dominio controllato da te contenente la parola chiave del dominio della vittima. Se la vittima interagisce in qualche modo con DNS o HTTP con essi, saprai che sta cercando attivamente domini sospetti e dovrai essere molto furtivo.

Valutare il phishing

Utilizza Phishious per valutare se la tua email finirà nella cartella dello spam o se verrà bloccata o avrà successo.

Riferimenti