
Domain-Name-Permutations-Engine zur Erkennung von Homograph-Phishing-Angriffen, Typosquatting und Markenimitation

Sehen Sie, in welche Schwierigkeiten Benutzer geraten können, wenn sie versuchen, Ihren Domainnamen einzutippen. Finden Sie ähnlich aussehende Domains, die Angreifer verwenden können, um Sie anzugreifen. Das Tool erkennt Typosquatting, Phishing-Angriffe, Betrug und Markenimitation. Nützlich als zusätzliche Quelle für gezielte Bedrohungsinformationen.

DNS-Fuzzing ist ein automatisierter Arbeitsablauf, der darauf abzielt, potenziell bösartige Domains aufzudecken, die gegen Ihre Organisation gerichtet sind. Dieses Tool generiert eine umfassende Liste von Permutationen auf der Grundlage eines angegebenen Domainnamens und überprüft anschließend, ob eine dieser Permutationen verwendet wird. Darüber hinaus kann es Fuzzy-Hashes von Webseiten erzeugen, um laufende Phishing-Angriffe oder Markenimitationen zu erkennen, und vieles mehr!
In Eile? Probieren Sie es in Ihrem Webbrowser aus: dnstwist.it
Python PIP
$ pip install dnstwist[full]
Alternativ können Sie die minimale Installation vornehmen und andere Anforderungen je nach Bedarf manuell hinzufügen:
$ pip install dnstwist
Git
Wenn Sie die neueste Version des Codes ausführen möchten, können Sie sie von Git installieren:
$ git clone https://github.com/elceef/dnstwist.git
$ cd dnstwist
$ pip install .
Debian/Ubuntu/Kali Linux
Führen Sie den folgenden Befehl aus, um das Tool mit allen zusätzlichen Paketen zu installieren:
$ sudo apt install dnstwist
Fedora Linux
$ sudo dnf install dnstwist
Arch Linux User Repository (yay)
$ yay -S dnstwist
macOS
Dadurch wird dnstwist zusammen mit allen Abhängigkeiten installiert, und die Binärdatei wird zu $PATH hinzugefügt.
$ brew install dnstwist
Docker
Offizielles Image vom Docker Hub pullen und ausführen:
$ docker run -it elceef/dnstwist
Alternativ können Sie Ihre lokalen Images erstellen:
$ docker build -t dnstwist .
$ docker build -t dnstwist:phash --build-arg phash=1 .
Das Tool führt den angegebenen Domainnamen durch seine Fuzzing-Algorithmen und generiert eine Liste potenzieller Phishing-Domains zusammen mit DNS-Einträgen.
Normalerweise werden Tausende von Domain-Permutationen generiert – insbesondere bei längeren Eingabedomains. In solchen Fällen kann es sinnvoll sein, nur die registrierten anzuzeigen:
$ dnstwist --registered domain.name
Stellen Sie sicher, dass Ihr DNS-Server Tausende von Anfragen innerhalb kurzer Zeit verarbeiten kann. Andernfalls können Sie mit dem Argument --nameservers einen externen DNS- oder DNS-over-HTTPS-Server angeben.
Falls die von den Fuzzing-Algorithmen generierten Domain-Permutationen nicht ausreichen, versorgen Sie dnstwist bitte mit einer Wörterbuchdatei. Einige Wörterbuchbeispiele mit einer Liste der häufigsten, in Phishing-Kampagnen verwendeten Wörter sind enthalten.
$ dnstwist --dictionary dictionaries/english.dict domain.name
Wenn Sie prüfen müssen, ob Domains mit anderen TLDs existieren, geben Sie einfach eine Wörterbuchdatei mit der Liste der TLDs an.
$ dnstwist --tld dictionaries/common_tlds.dict domain.name
Wenn dagegen nur ausgewählte Algorithmen verwendet werden sollen, steht das Argument --fuzzers zur Verfügung, das eine durch Kommas getrennte Liste akzeptiert.
$ dnstwist --fuzzers "homoglyph,hyphenation" domain.name
Neben der farbenfrohen Terminalausgabe ermöglicht das Tool den Export der Ergebnisse nach CSV und JSON:
$ dnstwist --format csv domain.name | column -t -s,
$ dnstwist --format json domain.name | jq
Falls Sie nur die reinen Permutationen ohne DNS-Abfragen benötigen, verwenden Sie das Argument --format list:
$ dnstwist --format list domain.name
Das Tool kann Echtzeit-Abfragen durchführen, um den geografischen Standort (ungefähr auf Länderebene) von IPv4-Adressen zu ermitteln.
$ dnstwist --geoip domain.name
Standardmäßig wird die GeoIP2-Bibliothek verwendet. Der Speicherort der Länderdatenbank muss über die Umgebungsvariable $GEOLITE2_MMDB angegeben werden. Wenn die Bibliothek oder die Datenbank nicht vorhanden sind, weicht das Tool auf das ältere GeoIP Legacy zurück.
Um alle verfügbaren Optionen mit kurzen Beschreibungen anzuzeigen, führen Sie das Tool einfach ohne Argumente aus.
Die manuelle Prüfung jedes Domainnamens auf das Ausliefern einer Phishing-Site kann zeitaufwendig sein. Um dies zu adressieren, verwendet dnstwist sogenannte Fuzzy-Hashes (locality-sensitive hash, LSH) und Wahrnehmungshashes (pHash). Fuzzy-Hashing ist ein Konzept, das die Fähigkeit beinhaltet, zwei Eingaben (HTML-Code) zu vergleichen und einen grundlegenden Ähnlichkeitsgrad zu bestimmen, während ein Wahrnehmungshash ein Fingerabdruck ist, der aus visuellen Merkmalen eines Bildes (Webseiten-Screenshot) abgeleitet wird.
Fuzzy-Hashing
Die einzigartige Funktion zur Erkennung ähnlicher HTML-Quellcodes kann mit dem Argument --lsh aktiviert werden. Für jede generierte Domain ruft dnstwist den Inhalt vom antwortenden HTTP-Server ab (unter Berücksichtigung möglicher Weiterleitungen), normalisiert den HTML-Code und vergleicht seinen Fuzzy-Hash mit dem der ursprünglichen (Ausgangs-)Domain. Der Ähnlichkeitsgrad wird in Prozent ausgedrückt.
In Fällen, in denen die effektive URL mit der der ursprünglichen Domain übereinstimmt, wird der Fuzzy-Hash überhaupt nicht berechnet, um Fehlalarme auszuschließen.
Hinweis: Beachten Sie, dass eine 100%ige Übereinstimmung selbst bei MITM-Angriffs-Frameworks eher unwahrscheinlich ist und eine Phishing-Site einen völlig anderen HTML-Quellcode haben kann.
$ dnstwist --lsh domain.name
In einigen Fällen werden Phishing-Sites über eine bestimmte URL ausgeliefert. Wenn Sie eine vollständige oder teilweise URL-Adresse als Argument angeben, parst dnstwist diese und wendet sie auf jede generierte Domainname-Variante an. Verwenden Sie --lsh-url, um die URL zu überschreiben, von der die ursprüngliche Webseite abgerufen werden soll.
$ dnstwist --lsh https://domain.name/owa/
$ dnstwist --lsh --lsh-url https://different.domain/owa/ domain.name
Standardmäßig wird ssdeep als LSH-Algorithmus verwendet, aber TLSH ist ebenfalls verfügbar und kann wie folgt aktiviert werden:
$ dnstwist --lsh tlsh domain.name
Wahrnehmungs-Hashing
Wenn der Chromium-Browser installiert ist, kann dnstwist dessen Headless-Modus nutzen, der ohne grafische Benutzeroberfläche arbeitet, um Webseiten-Screenshots aufzunehmen, zu rendern und pHash-Werte zu berechnen. Diese pHash-Werte werden dann verglichen, um die visuelle Ähnlichkeit als Prozentsatz zu bewerten.
$ dnstwist --phash domain.name
Darüber hinaus ist es möglich, die aufgenommenen Screenshots im PNG-Format an einem beliebigen Ort zu speichern:
$ dnstwist --phash --screenshots /tmp/domain domain.name
Hinweis: Aufgrund der mehrthreadigen Nutzung eines voll funktionsfähigen Webbrowsers sollte eine angemessene Menge an freien Ressourcen (hauptsächlich Arbeitsspeicher) bereitgestellt werden.
Proxy-Unterstützung