
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
Für alle HTTP-Verbindungen werden Proxys automatisch verwendet, wenn Umgebungsvariablen mit dem Namen $<scheme>_proxy vorhanden sind, wobei die Groß-/Kleinschreibung nicht berücksichtigt wird. Wenn sowohl Klein- als auch Großschreibungs-Umgebungsvariablen existieren, wird die Kleinschreibung bevorzugt.
Falls Sie die vom Tool erzeugten Daten in Ihrem Code verwenden möchten, ist der bequemste und effizienteste Weg, die Eingabe wie folgt zu übergeben.
>>> import dnstwist
>>> data = dnstwist.run(domain='domain.name', registered=True, format='null')
Um in einem vollständig passiven Betriebsmodus zu arbeiten und nur Domain-Permutationen zu erzeugen, muss das Listenformat mit der Ausgabeumleitung auf das Nullgerät kombiniert werden.
>>> dnstwist.run(domain='domain.name', format='list', output=dnstwist.devnull)
Die Argumente für dnstwist.run() werden intern übersetzt, sodass die Verwendung der Befehlszeile sehr ähnlich ist. Die zurückgegebene Datenstruktur ist eine einfach zu verarbeitende Liste von Wörterbüchern. Beachten Sie, dass dnstwist.run() eine Reihe von Daemon-Threads erzeugt.
Beim Testen Tausender Domain-Permutationen sind Geschwindigkeit und Effizienz offensichtliche Prioritäten. Andererseits wurde das Tool so entwickelt, dass es "out of the box" funktioniert, ohne DNS-Resolver zu überlasten und wertvolle Ressourcen zu schonen. Die Standardeinstellungen bieten eine vorsichtige Balance, aber es gibt immer Raum für Verbesserungen.
Es wird empfohlen, mit der Anzahl der Threads zu experimentieren. Anfangs wird diese Anzahl auf der Grundlage der verfügbaren CPU-Kerne berechnet, aber in den meisten Fällen bringt eine Erhöhung dieses Wertes einen erheblichen Leistungsschub. Ein weiterer Vorschlag ist, schnelle DNS-Resolver mit der geringsten Netzwerk-Round-Trip-Zeit (RTT) auszuwählen. Auch wenn einige Millisekunden nicht nach einem großen Unterschied klingen, führt dies bei Tausenden von Domain-Permutationen zu spürbaren Zeitersparnissen.
Mit zunehmender Länge der Eingabedomain steigt die Anzahl der von den Algorithmen generierten Varianten erheblich, was zu einem deutlichen Anstieg der für ihre Überprüfung erforderlichen Zeit und Ressourcen führt. Die Prüfung jeder möglichen Domain-Permutation ist unpraktikabel, insbesondere bei längeren Eingabedomains, die Millionen von DNS-Abfragen erfordern würden. Daher generiert und prüft dieses Tool Domains, die der ursprünglichen sehr ähnlich sind. Theoretisch sind diese Domains aus Sicht eines Angreifers am attraktivsten. Es ist jedoch wichtig zu beachten, dass die Vorstellungskraft von Angreifern unbegrenzt ist.
Unicode-Tabellen umfassen Tausende von Zeichen, von denen viele einander visuell ähnlich sind. Trotz der Tatsache, dass bestimmte Zeichen mit Punycode kodierbar sind, lehnen die meisten TLD-Behörden sie jedoch beim Domain-Registrierungsprozess ab. Im Allgemeinen verbieten TLD-Behörden die Mischung von Zeichen aus verschiedenen Unicode-Schriften oder unterhalten eigene Sätze akzeptabler Zeichen. Vor diesem Hintergrund wurde der Homoglyph-Fuzzer auf der Grundlage eines sorgfältig recherchierten Bereichs von Unicode-Zeichen (Homoglyphen) aufgebaut, um sicherzustellen, dass generierte Domains in der Praxis registriert werden können.
Der Scanner wird von Dutzenden SOC- und Incident-Response-Teams auf der ganzen Welt sowie von unabhängigen Informationssicherheitsanalysten und Forschern eingesetzt. Darüber hinaus ist er in Produkte und Dienste vieler Sicherheitsanbieter integriert, insbesondere, aber nicht nur:
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.
Um Fragen, Gedanken oder einen Schokoriegel zu senden, schreiben Sie einfach eine E-Mail an [email protected]. Jedes Feedback ist willkommen. Wenn Sie bestätigte Phishing-Domains gefunden haben oder das Tool einfach mögen, zögern Sie nicht und senden Sie eine Nachricht. Vielen Dank.