
OSINT-Tool, das Domain-Squatting, Typosquatting und Phishing-Nachahmer erkennt, indem es neu registrierte Domains anhand von Marken-Keywords mit DNS- und VT-Validierung überwacht.
openSquat ist ein OSINT (Open Source Intelligence)-Sicherheitstool, das Cybersquatting-Bedrohungen identifiziert, die gegen Ihre Marke oder Domains gerichtet sind:
„Ein leistungsstarkes Schweizer Taschenmesser für den Markenschutz“ — WhoisXML API Blog, August 2022
„Ein Tool mit enormer Kraft zur Bekämpfung von Typosquatting und aller verwandten Arten von Cyber-Missbrauch.“ — WhoisXML API Blog, August 2022
„Ein praktisches Tool zum Sammeln von Informationen über neu registrierte Domains.“ — Platz 5 unter den Phishing-Erkennungstools — SOCRadar Blog, Juli 2022
„openSquat bietet wesentlichen Schutz vor Domain-Squatting und Phishing-Angriffen durch automatisierte Überwachung und Erkennung.“ — Prince Yadav, TutorialsPoint, März 2026
„OpenSquat identifizierte 103 Squatting-Domains, 960 aktive Phishing-Websites und 53 Domains mit verdächtigen Zertifikaten.“ — Sharma et al., Journal of Information Security and Cybercrimes Research (JISCR), Vol. 7, Issue 1, Juni 2024
openSquat folgt einem Open-Core-Modell:
Dieses Modell ermöglicht Transparenz und Zusammenarbeit in der Community und erfüllt gleichzeitig die Skalierungs-, Zuverlässigkeits- und Betriebsanforderungen von Unternehmen.
pip install opensquat
opensquat -k keywords.txt
git clone https://github.com/atenreiro/opensquat
cd opensquat
pip install -r requirements.txt
python3 opensquat.py -k keywords.txt
Benutzer des Repositorys: Ersetzen Sie in allen folgenden Beispielen
opensquatdurchpython3 opensquat.py, um es aus einem geklonten Checkout heraus auszuführen.
confusable_homoglyphs, homoglyphs, colorama, requests, dnspython, beautifulsoup4# Standardausführung
opensquat
# Alle Optionen anzeigen
opensquat -h
# Benutzerdefinierte Schlüsselwortdatei verwenden
opensquat -k my_keywords.txt
# DNS-Validierung über Quad9
opensquat --dns
# Zertifikatstransparenzprotokolle prüfen
opensquat --ct
# Auf offene Ports scannen (80/443)
opensquat --portcheck
# Mit Phishing-Datenbanken abgleichen
opensquat --phishing results.txt
# Als JSON speichern
opensquat -o results.json -t json
# Als CSV speichern
opensquat -o results.csv -t csv
Hinweis: Auf der API-Seite (
--api) werden die fünf Vertrauensstufen auf vier Fuzzy-Werte (exact,low,auto,high) abgebildet –-c 3und-c 4werden beide aufhighabgebildet. Siehe Premium- und API-Modi für die vollständige Zuordnung und wie Sie mit--api-fuzzinessüberschreiben können.
openSquat unterstützt drei Modi. Der Standardmodus (Community) bleibt unverändert – bestehende Benutzer benötigen keine Flags. Die beiden Premium-Modi teilen sich einen einzigen openSquat-API-Schlüssel; wählen Sie Premium Feed, wenn Sie dieselbe lokale Erkennungspipeline mit einem größeren Feed wünschen, oder Premium API, wenn Sie eine serverseitige Erkennung ohne lokalen Feed-Download möchten.
Registrieren Sie sich unter opensquat.com, um einen Schlüssel zu erhalten. Derselbe Schlüssel funktioniert sowohl für Premium Feed (--premium) als auch für Premium API (--api).
--api-key YOUR_KEY in der BefehlszeileOPENSQUAT_API_KEYapi_key.txt im aktuellen Verzeichnis (ein Schlüssel pro Datei, #-Kommentare erlaubt)Das CLI-Flag ist in der
ps-Ausgabe sichtbar. Bevorzugen Sie in gemeinsam genutzten Umgebungen die Umgebungsvariable oder die Schlüsseldatei.
# Premium-Feed-Modus – gleiche lokale Pipeline, größerer Feed
export OPENSQUAT_API_KEY=os_xxxxxxxxxxxx
opensquat -k keywords.txt --premium
# Premium-API-Modus – serverseitige Erkennung pro Schlüsselwort
opensquat -k keywords.txt --api
# Premium-API + DNS-Reputationsprüfung für jede zurückgegebene Domain
opensquat -k keywords.txt --api --dns
# Premium-API mit JSON-Ausgabe, gruppiert nach Schlüsselwort
opensquat -k keywords.txt --api -t json -o results.json
# Feinabstimmung der Premium-API-Suche
opensquat -k keywords.txt --api --api-fuzziness high --api-history-days 7 --api-max-results 200
Wenn --premium oder --api erfolgreich einen Schlüssel lädt, gibt das CLI eine maskierte Bestätigungszeile aus, damit Sie überprüfen können, welcher Schlüssel verwendet wurde, ohne ihn preiszugeben:
[*] API key loaded: os_gL...L5Mb
Im Premium-API-Modus meldet die Zusammenfassung den aktiven Modus, die Anzahl der durchgeführten API-Aufrufe und Ihr verbleibendes Guthaben mit Verbrauchsdelta (z. B. 4972 (used 4 of 4976 this run)). Fortschrittszeilen pro Schlüsselwort erscheinen in derselben Reihenfolge wie Ihre Schlüsselwortdatei, auch wenn die Aufrufe parallel ausgeführt werden. Kontingenterschöpfung (HTTP 429) gibt partielle Ergebnisse zurück; Authentifizierungsfehler (401) und Planfehler (403) brechen mit einer klaren Meldung ab.
Wenn das Backend Ihre Anfrage drosselt (HTTP 429 mit einem Retry-After-Header), unterscheidet das Tool dies von der Kontingenterschöpfung: Sie sehen eine gelbe [!] Rate limit hit (retry in Ns)-Warnung anstelle der roten Meldung quota exhausted, partielle Ergebnisse werden trotzdem zurückgegeben, und die Zusammenfassung bewahrt Ihr tatsächliches API-Guthaben, sodass Sie genau sehen können, wie viele Credits Sie tatsächlich verbraucht haben. Um bei großen Scans eine Drosselung zu vermeiden, übergeben Sie --api-rate-limit N, um ausgehende Anfragen pro Sekunde über alle Worker zu begrenzen. Ein Wert von 8 ist ein sicherer Ausgangspunkt für die meisten Backends.
# Auf 8 Anfragen/Sekunde über alle Worker drosseln
opensquat -k keywords.txt --api --api-rate-limit 8
JSON ist das empfohlene Ausgabeformat für den Premium-API-Modus, da die API Metadaten pro Domain zurückgibt, die die anderen Formate nicht so sauber transportieren können: die registrierte TLD, das Datum des ersten Sehens im NRD, ein IDN-Homograph-Flag und die Unicode-Darstellung des Homographen, wenn die Domain einer ist.
opensquat -k keywords.txt --api -t json -o results.json
Beispiel für die umfangreichere Ausgabe im Premium-API-Modus (gekürzt):
[
{
"keyword": "microsoft",
"domains": [
{"domain": "securite-microsoft.fr", "tld": "fr", "date": "09-04-2026", "idn": false},
{"domain": "xn--mirosoft-hw7c.com", "tld": "com", "date": "09-04-2026", "idn": true, "unicode": "miᴄrosoft.com"}
]
}
]
Das idn-Flag zusammen mit der unicode-Darstellung lässt Sie auf einen Blick erkennen, dass xn--mirosoft-hw7c.com tatsächlich ᴄ (lateinischer Kleinbuchstabe Großbuchstabe C) ist, der das c in „microsoft" imitiert – Informationen, die ein einfacher Punycode-String vollständig verbirgt.
Die CSV-Ausgabe wird ebenfalls unterstützt und erzeugt eine Zeile pro Domain mit denselben Metadatenspalten, was für Analysten geeignet ist, die mit Excel oder Pandas arbeiten:
opensquat -k keywords.txt --api -t csv -o results.csv
Die CSV wird mit einem UTF-8-BOM geschrieben, sodass Excel unter Windows die Unicode-Homograph-Spalte korrekt darstellt.
Community- und Premium-Feed-Modi geben dieselbe JSON-Top-Level-Struktur aus, um eine modusübergreifende Konsistenz zu gewährleisten, jedoch nur mit dem Feld domain pro Eintrag – der NRD-Feed enthält nicht die Metadaten pro Domain, die nur die gehostete API hat:
[
{
"keyword": "microsoft",
"domains": [
{"domain": "mirosoft.com"},
{"domain": "mcrosoft.net"}
]
}
]
Wenn Sie --api-key übergeben, ohne auch --premium oder --api auszuwählen, gibt das CLI einen einzeiligen Hinweis aus, dass der Schlüssel im Community-Modus ignoriert wird (kein stiller Moduswechsel).
Im Premium-API-Modus wird -c/--confidence automatisch auf API-Fuzziness abgebildet (0→exact, 1→low, 2→auto, 3→high, 4→high). Verwenden Sie --api-fuzziness, um dies zu überschreiben.
Premium API (--api) ist nicht kompatibel mit --doppelganger und -d/--domains.
keywords.txt)# Zeilen, die mit # beginnen, sind Kommentare
mycompany
mybrand
myproduct
vt_key.txt)Um --vt oder --subdomains zu verwenden, fügen Sie Ihren API-Schlüssel hinzu:
# Holen Sie sich Ihren kostenlosen API-Schlüssel unter https://www.virustotal.com
your_api_key_here
api_key.txt)Erforderlich für --premium und --api. Erstellen Sie eine Datei api_key.txt im Arbeitsverzeichnis:
# Holen Sie sich Ihren Schlüssel unter https://opensquat.com
# Zeilen, die mit # beginnen, werden ignoriert; die erste Nicht-Kommentar-Zeile wird verwendet.
os_your_key_here
Das CLI löst den Schlüssel in dieser Reihenfolge auf: --api-key-Flag → $OPENSQUAT_API_KEY-Umgebungsvariable → Datei api_key.txt. Die Methoden Umgebungsvariable und Datei sind dem CLI-Flag in gemeinsam genutzten Umgebungen vorzuziehen, da CLI-Argumente über ps sichtbar sind.
Führen Sie es täglich per Crontab aus:
# pip-installiert (empfohlen) – jeden Tag um 8 Uhr, Feeds aktualisieren sich etwa um 7:30 UTC
0 8 * * * cd /path/to/workdir && opensquat -k keywords.txt -o results.json -t json
# Repository-Checkout – rufen Sie opensquat.py direkt mit python3 auf
0 8 * * * cd /path/to/opensquat && python3 opensquat.py -k keywords.txt -o results.json -t json
Das
cdin ein Arbeitsverzeichnis ist wichtig, wenn Sie aufapi_key.txtangewiesen sind (wird aus dem aktuellen Verzeichnis aufgelöst) oder wenn Sieresults.jsonan einem bestimmten Ort schreiben möchten.
Wir freuen uns über Beiträge! Einzelheiten finden Sie in unserem Mitwirkungsleitfaden.
Andre Tenreiro — LinkedIn · PGP-Schlüssel
Dieses Projekt ist unter der GNU GPL v3 lizenziert.
| Bedrohungstyp | Beschreibung |
|---|
| 🎣 Phishing | Betrügerische Domains, die Ihre Marke nachahmen |
| 🔤 Typosquatting | Domains mit häufigen Tippfehlern (z.B. gooogle.com) |
| 🌐 IDN-Homograph | Ähnlich aussehende Zeichen aus anderen Alphabeten |
| 👥 Doppelgänger | Domains, die Ihren Markennamen enthalten |
| 🔀 Bitsquatting | Einzelbit-Fehler in Domainnamen |
| Stufe | Flagge | Beschreibung |
|---|
| 0 | -c 0 | Sehr hoch (weniger Ergebnisse, hohe Genauigkeit) |
| 1 | -c 1 | Hoch (Standard) |
| 2 | -c 2 | Mittel |
| 3 | -c 3 | Niedrig |
| 4 | -c 4 | Sehr niedrig (mehr Ergebnisse, mehr Fehlalarme) |
| Modus | Flagge | Funktion |
|---|
| Community (Standard) | (keine) | Lädt den kostenlosen NRD-Feed (~100k Domains/Tag) herunter und führt lokale Levenshtein-Erkennung durch. |
| Premium Feed | --premium | Lädt den kostenpflichtigen NRD-Feed (nrd-lite, viel größer) mit Ihrem openSquat-API-Schlüssel herunter und führt dann dieselbe lokale Levenshtein-Erkennung durch. |
| Premium API | --api | Überspringt den lokalen Feed-Download. Fragt die openSquat-Lookalike-REST-API pro Schlüsselwort ab und gibt serverseitige Übereinstimmungen zurück. |
| Argument | Standard | Beschreibung |
|---|
-k, --keywords | keywords.txt | Schlüsselwortdatei zum Durchsuchen |
-o, --output | results.txt | Ausgabedateiname |
-t, --type | txt | Ausgabeformat: txt, json, csv |
-c, --confidence | 1 | Vertrauensstufe (0-4). Im --api-Modus wird dies automatisch auf Fuzzy-Werte abgebildet (-c 3 und -c 4 beide → high). |
-d, --domains | — | Lokale Domain-Datei anstelle des Downloads verwenden |
-u, --url | openSquat-Feed | URL zum Herunterladen des Domain-Feeds |
--dns | — | Quad9-DNS-Validierung aktivieren |
--doppelganger | — | Nur-Doppelgänger-Modus (Schlüsselwort in Domain + Erreichbarkeitsprüfung) |
--ct | — | Zertifikatstransparenzprotokolle durchsuchen |
--phishing | — | Phishing-Datenbank abgleichen |
--subdomains | — | Subdomains über VirusTotal abrufen |
--portcheck | — | Auf offene Ports 80/443 prüfen |
--vt | — | Gegen VirusTotal validieren |
--premium | — | Premium-Feed-Modus – den kostenpflichtigen NRD-Feed verwenden (erfordert openSquat-API-Schlüssel) |
--api | — | Premium-API-Modus – die openSquat-Lookalike-REST-API pro Schlüsselwort abfragen (kein lokaler Feed) |
--api-key | — | openSquat-API-Schlüssel (oder $OPENSQUAT_API_KEY setzen, oder api_key.txt verwenden) |
--api-fuzziness | (von -c) | Premium-API-Modus: exact, low, high oder auto |
--api-history-days | — | Premium-API-Modus: NRD-Verlaufsfenster in Tagen (auf Plankappe begrenzt) |
--api-max-results | — | Premium-API-Modus: maximale Ergebnisse pro Schlüsselwort (auf Plankappe begrenzt) |
--api-rate-limit | (unbegrenzt) | Premium-API-Modus: maximale ausgehende Anfragen pro Sekunde über alle Worker |