
Motore di permutazione dei nomi di dominio per rilevare attacchi di phishing omografi, typosquatting e impersonificazione del marchio.

Scopri in che tipo di guai possono incorrere gli utenti cercando di digitare il nome del tuo dominio. Trova domini lookalike che gli avversari possono utilizzare per attaccarti. Può rilevare typosquatting, attacchi di phishing, frodi e usurpazione del marchio. Utile come fonte aggiuntiva di threat intelligence mirata.

Il DNS fuzzing è un flusso di lavoro automatizzato che mira a scoprire domini potenzialmente dannosi che prendono di mira la tua organizzazione. Questo strumento genera un elenco completo di permutazioni basate su un nome di dominio fornito e successivamente verifica se alcune di queste permutazioni sono in uso. Inoltre, può generare fuzzy hash di pagine web per rilevare attacchi di phishing in corso o usurpazione del marchio, e molto altro!
Di fretta? Provalo nel tuo browser web: dnstwist.it
Python PIP
$ pip install dnstwist[full]
In alternativa, installa il minimo indispensabile e aggiungi manualmente gli altri requisiti in base alle tue esigenze:
$ pip install dnstwist
Git
Se vuoi eseguire l'ultima versione del codice, puoi installarla da Git:
$ git clone https://github.com/elceef/dnstwist.git
$ cd dnstwist
$ pip install .
Debian/Ubuntu/Kali Linux
Esegui il seguente comando per installare lo strumento con tutti i pacchetti aggiuntivi:
$ sudo apt install dnstwist
Fedora Linux
$ sudo dnf install dnstwist
Arch Linux User Repository (yay)
$ yay -S dnstwist
macOS
Questo installerà dnstwist insieme a tutte le dipendenze e il binario verrà aggiunto a $PATH.
$ brew install dnstwist
Docker
Scarica ed esegui l'immagine ufficiale da Docker Hub:
$ docker run -it elceef/dnstwist
In alternativa puoi creare le tue immagini locali:
$ docker build -t dnstwist .
$ docker build -t dnstwist:phash --build-arg phash=1 .
Lo strumento elaborerà il nome di dominio fornito attraverso i suoi algoritmi di fuzzing e genererà un elenco di potenziali domini di phishing insieme ai record DNS.
Di solito vengono generate migliaia di permutazioni di domini, soprattutto per domini di input più lunghi. In questi casi, può essere pratico mostrare solo quelli registrati:
$ dnstwist --registered domain.name
Assicurati che il tuo server DNS possa gestire migliaia di richieste in un breve periodo di tempo. In caso contrario, puoi specificare un server DNS esterno o DNS-over-HTTPS con l'argomento --nameservers.
Se le permutazioni di domini generate dagli algoritmi di fuzzing non sono sufficienti, fornisci a dnstwist un file dizionario. Sono inclusi alcuni esempi di dizionari con un elenco delle parole più comuni usate nelle campagne di phishing.
$ dnstwist --dictionary dictionaries/english.dict domain.name
Se devi verificare se esistono domini con TLD diversi, basta fornire un file dizionario con l'elenco dei TLD.
$ dnstwist --tld dictionaries/common_tlds.dict domain.name
D'altra parte, se devono essere usati solo algoritmi selezionati, è disponibile l'argomento --fuzzers, che accetta un elenco separato da virgole.
$ dnstwist --fuzzers "homoglyph,hyphenation" domain.name
Oltre all'output colorato del terminale, lo strumento consente di esportare i risultati in CSV e JSON:
$ dnstwist --format csv domain.name | column -t -s,
$ dnstwist --format json domain.name | jq
Se hai bisogno solo delle semplici permutazioni senza effettuare lookup DNS, usa l'argomento --format list:
$ dnstwist --format list domain.name
Lo strumento può eseguire lookup in tempo reale per restituire la posizione geografica (approssimata al paese) degli indirizzi IPv4.
$ dnstwist --geoip domain.name
La libreria GeoIP2 viene utilizzata di default. La posizione del database dei paesi deve essere specificata con la variabile d'ambiente $GEOLITE2_MMDB. Se la libreria o il database non sono presenti, lo strumento ripiegherà sulla vecchia GeoIP Legacy.
Per visualizzare tutte le opzioni disponibili con brevi descrizioni, esegui semplicemente lo strumento senza alcun argomento.
Controllare manualmente ogni nome di dominio per verificare se ospita un sito di phishing può richiedere molto tempo. Per affrontare questo problema, dnstwist utilizza i cosiddetti fuzzy hash (locality-sensitive hash, LSH) e perceptual hash (pHash). Il fuzzy hashing è un concetto che implica la capacità di confrontare due input (codice HTML) e determinare un livello fondamentale di somiglianza, mentre il perceptual hash è un'impronta digitale derivata dalle caratteristiche visive di un'immagine (screenshot di una pagina web).
Fuzzy hashing
La funzionalità unica di rilevare codice HTML simile può essere attivata con l'argomento --lsh. Per ogni dominio generato, dnstwist recupererà il contenuto dal server HTTP che risponde (seguendo eventuali redirect), normalizzerà il codice HTML e confronterà il suo fuzzy hash con quello del dominio originale (iniziale). Il livello di somiglianza è espresso in percentuale.
Nei casi in cui l'URL effettivo è lo stesso del dominio originale, il fuzzy hash non viene affatto calcolato per respingere le indicazioni di falsi positivi.
Nota: tieni presente che è piuttosto improbabile ottenere una corrispondenza al 100%, anche per framework di attacco MITM, e che un sito di phishing può avere un codice HTML completamente diverso.
$ dnstwist --lsh domain.name
In alcuni casi, i siti di phishing sono serviti da un URL specifico. Se fornisci un indirizzo URL completo o parziale come argomento, dnstwist lo analizzerà e lo applicherà a ogni variante di nome di dominio generata. Usa --lsh-url per sovrascrivere l'URL da cui recuperare la pagina web originale.
$ dnstwist --lsh https://domain.name/owa/
$ dnstwist --lsh --lsh-url https://different.domain/owa/ domain.name
Di default, ssdeep viene usato come algoritmo LSH, ma è disponibile anche TLSH e può essere attivato in questo modo:
$ dnstwist --lsh tlsh domain.name
Perceptual hashing
Se il browser Chromium è installato, dnstwist può utilizzare la sua modalità headless, che opera senza interfaccia grafica, per catturare screenshot di pagine web, renderizzarli e calcolare i valori pHash. Questi valori pHash vengono poi confrontati per valutare la somiglianza visiva, espressa in percentuale.
$ dnstwist --phash domain.name
Inoltre, è possibile salvare gli screenshot catturati in formato PNG in una posizione a scelta:
$ dnstwist --phash --screenshots /tmp/domain domain.name
Nota: a causa dell'uso multi-thread di un browser web completamente funzionale, dovrebbe essere disponibile un'adeguata quantità di risorse libere (principalmente memoria).
Supporto proxy
Per tutte le connessioni HTTP, i proxy vengono utilizzati automaticamente quando viene rilevata la presenza di variabili d'ambiente denominate $<scheme>_proxy, in modo case-insensitive. Se esistono sia variabili d'ambiente minuscole che maiuscole, viene preferita quella minuscola.