
Schnelles GitHub-Recon-Tool. Scannt nach durchgesickerten Geheimnissen in ganz GitHub, nicht nur in bekannten Repos und Organisationen. Unterstützung für GitHub-Dorks.
GitHound spürt offengelegte API-Schlüssel, Geheimnisse und Anmeldeinformationen in ganz GitHub auf, indem es GitHub-Dorks mit Mustererkennung, kontextbezogener Erkennung und Commit-Verlaufsanalyse kombiniert. Geben Sie einen GitHub-Dork in GitHound ein, und es scannt alle Dateien und Repos, die Ihrer Abfrage entsprechen, nach Geheimnissen. Im Gegensatz zu typischen Scannern nutzt GitHound die GitHub Code Search API, die Ihnen vollständige Einblicke in alle öffentlichen Repositories gibt, nicht nur in ein paar ausgewählte. Weitere Informationen finden Sie im begleitenden Blogbeitrag.
Visualisieren und verwalten Sie Ihre Suchergebnisse in Echtzeit mit dem neuen GitHound Explore Dashboard. Legen Sie jetzt kostenlos los unter https://githoundexplore.com oder mit dem Flag --dashboard. Erfahren Sie, wie Sie dies mit einer lokalen Installation von GitHound oder TruffleHog nutzen können, auf der Wiki-Seite. Beachten Sie, dass Sie GitHound auch ohne Dashboard verwenden können.
Wir haben außerdem eine GitHub-Dorks-Datenbank gestartet, in der Sie Dorks nach verschiedenen API-Keywords durchsuchen und Ideen für neue Dorks erhalten können! Schauen Sie vorbei unter https://githoundexplore.com/github-dorks.
🔍 Globale GitHub-Suche – finden Sie Geheimnisse auf ganz GitHub, einschließlich Gists
🔑 Intelligente API-Schlüsselerkennung – Regex + Entropie + Kontextabgleich
🕵️ Commit-Verlaufsgrabung – decken Sie gelöschte oder zurückgesetzte Anmeldedaten auf
🧮 Adaptives Scoring – filtert Fehlalarme aus
🧰 Base64-Dekodierung und Extraktion kodierter Geheimnisse
💻 JSON-Ausgabe und benutzerdefinierte Regex-Regeln für Automatisierungspipelines
echo "AKIA" | git-hound oder git-hound --query "AKIA"
config.yml gesetzt ist../git-hound zum Testen aus (stellen Sie sicher, dass Sie sich im richtigen Verzeichnis befinden!).Konfiguration:
GitHound verwendet hauptsächlich config.yml (im aktuellen Verzeichnis oder in $HOME/.githound/) für die Konfiguration. Siehe config.example.yml für ein Beispiel.
Alternativ können Sie Umgebungsvariablen verwenden, die Werte in config.yml überschreiben:
GITHOUND_GITHUB_TOKEN: Setzt den GitHub-API-Zugriffstoken.GITHOUND_INSERT_KEY: Setzt den GitHoundExplore-Insert-Key für die --dashboard-Funktion.GitHound verwendet eine Datenbank von API-Schlüssel-Regexes, die von den Autoren von Gitleaks gepflegt wird.
Die Kenntnis des Musters für die API-Schlüssel eines bestimmten Dienstes ermöglicht es Ihnen, GitHub nach diesen Schlüsseln zu durchsuchen. Sie können dann Treffer für Ihre benutzerdefinierte Schlüssel-Regex in Ihr eigenes Skript leiten, um den API-Schlüssel gegen den Dienst zu testen und das gefährdete Konto zu identifizieren.
echo "api.halcorp.biz" | githound --dig-files --dig-commits --many-results --rules halcorp-api-regexes.txt --results-only | python halapitester.py
Zur Erkennung zukünftiger API-Schlüssellecks bietet GitHub Push Token Scanning, um API-Schlüssel sofort bei ihrer Veröffentlichung zu erkennen.
Meine Hauptverwendung von GitHound ist die Suche nach sensiblen Informationen für Bug-Bounty-Programme. Für hochkarätige Ziele sind der --many-results-Trick und das --languages-Flag nützlich, um >100 Ergebnisseiten zu scrapen.
echo "\"uberinternal.com\"" | githound --dig-files --dig-commits --many-results --languages common-languages.txt --threads 100
https://github.com/tillson/git-hound/blob/master/internal/app/keyword_scan.go GitHound findet API-Schlüssel durch eine Kombination exakter Regexes für gängige Dienste wie Slack und AWS sowie einer kontextsensitiven generischen API-Regex. Dies findet lange Zeichenfolgen, die wie API-Schlüssel aussehen, umgeben von Schlüsselwörtern wie "Authorization" und "API-Token". GitHound nimmt an, dass es sich um Fehlalarme handelt, und beweist dann ihre Legitimität durch Shannon-Entropie, Wörterbuchwortprüfungen, Einzigartigkeitsberechnungen und Kodierungserkennung. GitHound gibt dann mit hoher Sicherheit positive Ergebnisse aus. Für Dateien, die Geheimnisse kodieren, dekodiert GitHound Base64-Zeichenfolgen und durchsucht die kodierten Zeichenfolgen nach API-Schlüsseln.
Weitere Details zu Anwendungsfällen und Methoden finden Sie in diesem Blogbeitrag.
GitHound macht es einfach, offengelegte API-Schlüssel auf GitHub zu finden, indem es Mustererkennung, gezielte Abfragen und ein robustes Bewertungssystem verwendet.
Usage:
-h, --help Hilfe für githound
--dashboard Ergebnisse an das Web-Dashboard streamen (siehe https://githoundexplore.com)
--all-results Alle Ergebnisse ausgeben, auch wenn sie keine Geheimnisse enthalten
--api-debug Details zu GitHub-API-Anfragen ausgeben und zählen.
--config-file string Pfad zu einer Konfigurationsdatei angeben.
--debug Aktiviert ausführliches Debug-Logging.
--dig-commits Durch den Commit-Verlauf graben, um weitere Geheimnisse zu finden (CPU-intensiv).
--dig-files Durch die Dateien des Repos graben, um weitere Geheimnisse zu finden (CPU-intensiv).
--fast Datei-Grep überspringen und nur die Suchvorschau zurückgeben
--json Ergebnisse im JSON-Format ausgeben
--many-results >100 Seiten mit Filter-Trick durchsuchen
--no-api-keys Nicht nach generischen API-Schlüsseln suchen.
--no-files Nicht nach interessanten Dateien suchen.
--no-gists Nicht nach Gists suchen
--no-keywords Nicht nach integrierten Schlüsselwörtern suchen
--no-repos Nicht nach Repos suchen
--no-scoring Bewertung nicht zum Herausfiltern von Fehlalarmen verwenden.
--otp-code string GitHub-Konto-2FA-Token für die Anmeldung. (Nur verwenden, wenn 2FA über Authenticator-App aktiviert ist)
--pages int Maximale Anzahl Seiten pro Abfrage (Standard: 100)
--profile pprof-Profiling auf localhost:6060 aktivieren
--profile-addr string Adresse für pprof-Profile (Standard: "localhost:6060")
--query string Eine Abfragezeichenfolge (Standard: stdin)
--query-file string Eine Datei mit einer Liste von Subdomains (oder anderen Abfragen).
--results-only Nur Trefferzeichenfolgen ausgeben.
--rules string Pfad zu einer Liste von Regexes oder einem GitLeaks-Regelordner. (Standard: "rules/")
--search-type api Suchoberfläche (api oder `ui`).
--threads int Threads zum Graben (Standard: 20)
In launch.json die benötigten Flags als args senden
"args": [
"searchKeyword",
"tillsongalloway.com",
"--regex-file",
"regexes.txt"
]
Aus dem Hauptordner: go build .
Um das Docker-Image für Git-Hound zu erstellen, verwenden Sie den folgenden Befehl:
docker build -t my-githound-container .
Um den Git-Hound Docker-Container auszuführen, müssen Sie Ihre config.yaml-Datei und ggf. Eingabedateien (wie subdomains.txt) über Docker-Volumes bereitstellen.
config.yamlPlatzieren Sie Ihre config.yaml-Datei an einem bekannten Ort auf Ihrem Host-Rechner. Diese Datei sollte Ihre Git-Hound-Konfiguration enthalten, einschließlich GitHub-Anmeldedaten.
Beispiel config.yaml:
# config.yaml
github_username: "your_username"
github_password: "your_password"
# Optional: GitHub TOTP seed
# github_totp_seed: "ABCDEF1234567890"
Wenn Sie eine Datei wie subdomains.txt haben, platzieren Sie sie in einem Verzeichnis auf Ihrem Host-Rechner.
Verwenden Sie den folgenden Befehl, um den Container mit Ihrer Konfiguration und Eingabedateien auszuführen:
docker run -v /path/to/config.yaml:/root/.githound/config.yaml -v $(pwd)/data:/data my-githound-container --subdomain-file /data/subdomains.txt
Ersetzen Sie /path/to/config.yaml durch den tatsächlichen Pfad zu Ihrer config.yaml-Datei. Der Teil -v $(pwd)/data:/data bindet ein Verzeichnis mit Ihren Eingabedateien (subdomains.txt) in den Container ein.