
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.
Se devi utilizzare i dati prodotti dallo strumento all'interno del tuo codice, il modo più comodo ed efficiente è passare l'input come segue.
>>> import dnstwist
>>> data = dnstwist.run(domain='domain.name', registered=True, format='null')
Per lavorare in una modalità operativa completamente passiva e produrre solo permutazioni di domini, è necessario combinare il formato lista con il reindirizzamento dell'output al dispositivo null.
>>> dnstwist.run(domain='domain.name', format='list', output=dnstwist.devnull)
Gli argomenti per dnstwist.run() vengono tradotti internamente, quindi l'utilizzo è molto simile alla riga di comando. La struttura dati restituita è una lista di dizionari facile da elaborare. Tieni presente che dnstwist.run() genera una serie di thread daemon.
Quando si tratta di testare migliaia di permutazioni di domini, velocità ed efficienza sono priorità ovvie. D'altra parte, lo strumento è stato progettato per "funzionare subito", evitando di sovraccaricare i risolutori DNS e conservando preziose risorse. Detto questo, le impostazioni predefinite raggiungono un equilibrio prudente, ma c'è sempre margine di miglioramento.
Si consiglia di sperimentare con il numero di thread. Inizialmente questo numero viene calcolato in base ai core della CPU disponibili, ma nella maggior parte dei casi aumentare questo valore offre un notevole incremento delle prestazioni. Un altro suggerimento è di selezionare risolutori DNS veloci con il tempo di round-trip (RTT) di rete più basso. Anche se pochi millisecondi potrebbero non sembrare una grande differenza, moltiplicati per migliaia di permutazioni di domini, si traducono in un notevole risparmio di tempo.
All'aumentare della lunghezza del dominio di input, il numero di varianti generate dagli algoritmi aumenta in modo significativo, comportando un notevole aumento del tempo e delle risorse necessarie per verificarle. Controllare ogni possibile permutazione di dominio è impraticabile, soprattutto per domini di input più lunghi, che richiederebbero milioni di lookup DNS. Pertanto, questo strumento genera e controlla domini molto simili a quello originale. Teoricamente, questi domini sono i più attraenti dal punto di vista di un attaccante. Tuttavia, è essenziale notare che l'immaginazione degli attaccanti è illimitata.
Le tabelle Unicode comprendono migliaia di caratteri, molti dei quali visivamente simili tra loro. Tuttavia, nonostante alcuni caratteri siano codificabili tramite punycode, la maggior parte delle autorità TLD li rifiuterà durante il processo di registrazione del dominio. In generale, le autorità TLD non consentono la mescolanza di caratteri provenienti da diversi script Unicode o mantengono propri set di caratteri accettabili. Detto questo, il fuzzer di omoglifi è stato costruito su una gamma accuratamente studiata di caratteri Unicode (omoglifi) per garantire che i domini generati possano essere registrati nella pratica.
Lo scanner è utilizzato da decine di team SOC e di incident response in tutto il mondo, così come da analisti e ricercatori indipendenti di sicurezza informatica. In aggiunta, è integrato nei prodotti e nei servizi di molti provider di sicurezza, in particolare ma non solo:
Splunk add-on, RecordedFuture, SpiderFoot, DigitalShadows, SecurityRisk, SmartFense, ThreatPipes, PaloAlto Cortex XSOAR, Rapid7 InsightConnect SOAR, Mimecast, Watcher, Intel Owl, PatrOwl, VDA Labs, Appsecco, Maltego, Conscia ThreatInsights, Fortinet FortiSOAR, ThreatConnect, CISA Crossfeed.
Per inviare domande, pensieri o una barretta di cioccolato, scrivi un'e-mail a [email protected]. Ogni feedback è apprezzato. Se hai trovato alcuni domini di phishing confermati o semplicemente ti piace questo strumento, non esitare e invia un messaggio. Grazie.