
Ein vielseitiges Sicherheitstool, das öffentliche GitHub-REST-APIs für OSINT, Forensik, Pentesting und mehr nutzt.
Gitxray (kurz für Git X-Ray) ist ein vielseitiges Sicherheitstool, das für die Nutzung auf GitHub-Repositories entwickelt wurde. Es kann für viele Zwecke eingesetzt werden, darunter OSINT und Forensik. gitxray nutzt öffentliche GitHub-REST-APIs, um Informationen zu sammeln, die manuell sehr zeitaufwendig zu beschaffen wären. Darüber hinaus sucht es an unkonventionellen Orten nach Informationen.

Gitxray kann zum Beispiel verwendet werden für:
Finden von vertraulichen Informationen in Mitwirkendenprofilen, die versehentlich offengelegt wurden, z. B. in Armored-PGP-Schlüsseln oder Schlüsselnamen.
Identifizieren von Bedrohungsakteuren in einem Repository. Sie können gemeinsame oder geteilte Konten erkennen sowie öffentliche Ereignisse überprüfen, um gefälschte Stargazer zu identifizieren.
Erkennen von gefälschten oder infizierten Repositories. Es kann manipulierte Commit-Daten erkennen sowie z. B. Release-Assets, die nach der Veröffentlichung aktualisiert wurden.
Forensische Anwendungsfälle, wie das Filtern von Ergebnissen nach Datum, um zu überprüfen, was sonst noch am Tag eines Vorfalls passiert ist.
Und vieles mehr! Führen Sie eine vollständige Röntgenaufnahme durch, um eine Menge Daten zu sammeln.
gitxray -r https://github.com/some-org/some-repository
gitxray -r https://github.com/some-org/some-repository -f user_input -outformat text
gitxray -r https://github.com/some-org/some-repository -f keys,association,starred -outformat text
gitxray -r https://github.com/some-org/some-repository -f warning -outformat text
gitxray -r https://github.com/some-org/some-repository -f 2024-09-01 -outformat text
Weitere Anwendungsfälle und Einführungsinformationen finden Sie in der Dokumentation.
Gitxray behandelt Ratenbegrenzungen elegant und kann ohne GitHub-API-Token sofort funktionieren, aber Sie werden wahrscheinlich schnell auf Ratenbegrenzungen stoßen (Ein kleines bis mittleres Repository mit 10+ Mitwirkenden könnte Stunden dauern, während es auf das Zurücksetzen der Ratenbegrenzungen wartet). Dies wird von GitHub in ihrer Dokumentation hier beschrieben.
Das Erstellen eines einfachen schreibgeschützten Tokens, das auf PUBLIC-Repositories beschränkt ist wird Ihnen jedoch helfen, diese Einschränkungen erheblich zu reduzieren. Wenn Sie es nicht eilig haben oder gitxray laufen lassen können, können Sie die volle Kapazität nutzen, da die Ausführung pausiert, während auf das Aufheben der Begrenzungen gewartet wird.
Sie können das Token dann sicher laden mit (verhindert, dass das Token auf dem Bildschirm angezeigt oder in Ihrem Shell-Verlauf protokolliert wird):
read -rs GH_ACCESS_TOKEN
export
Gitxray kann optional die VirusTotal-API verwenden, um alle Hosts zu überprüfen, die mit der GitHub-Code-Suche-API identifiziert wurden, aber es erfordert einen VirusTotal-API-Schlüssel. Anweisungen zum Erhalten Ihres VirusTotal-API-Schlüssels finden Sie unter: https://docs.virustotal.com/docs/please-give-me-an-api-key
Leider sind persönliche API-Schlüssel (Stand heute) von VirusTotal auf 500 Abfragen pro Tag beschränkt.
Sobald Sie den API-Schlüssel haben, können Sie ihn sicher in Ihrer Umgebung laden mit:
read -rs VT_API_KEY
export
gitxray wurde ohne Verwendung externer Paketabhängigkeiten außer der requests-Bibliothek geschrieben.
gitxray ist auf PyPI und kann mit folgendem Befehl installiert und aktualisiert werden:
pip install gitxray --upgrade
Nach der Installation führen Sie gitxray einfach von der Befehlszeile aus mit:
gitxray -h
gitxray -o https://github.com/kulkansecurity

Sie können gitxray auch direkt ausführen, indem Sie das GitHub-Repository klonen oder herunterladen und ausführen.
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
Eines der folgenden muss angegeben werden:
-r, --repository [URL] - Geben Sie ein einzelnes Repository an, das überprüft werden soll. Die URL kann optional mit https://github.com/ beginnen. Beispiel: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - Geben Sie einen Dateipfad an, der eine Liste von Repositories enthält, jede in einer neuen Zeile. Die Datei muss existieren. Beispiel: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - Geben Sie eine Organisation an, um alle Repositories unter dieser Organisation zu überprüfen. Die URL kann optional mit https://github.com/ beginnen. Beispiel: --organization https://github.com/exampleOrg
Diese sind optional, aber bei der üblichen gitxray-Nutzung sehr praktisch.
-l, --list - Liste der Mitwirkenden, wenn ein Repository angegeben ist, oder Liste der Repositories, wenn eine Organisation angegeben ist. Nützlich, um sich auf bestimmte Entitäten zu konzentrieren. Beispiel: --list
-c, --contributor [USERNAMES] - Eine durch Kommas getrennte Liste von GitHub-Benutzernamen, auf die innerhalb des angegebenen Repositorys oder der Organisation fokussiert werden soll. Beispiel: --contributor user1,user2
-f, --filters [KEYWORDS] - Durch Kommas getrennte Schlüsselwörter, nach denen die Ergebnisse gefiltert werden sollen, z. B. 'user_input', 'association' oder 'mac'. Beispiel: --filters user_input,association,mac
-out, --outfile [FILEPATH] - Geben Sie den Dateipfad für das Ausgabeprotokoll an. Kann kein Verzeichnis sein. Beispiel: --outfile ./output.log
-outformat, --output-format [FORMAT] - Legen Sie das Format für die Protokolldatei fest. Unterstützte Formate sind html, text und json. Standard ist html. Beispiel: --output-format json
--shush - Macht Gitxray etwas leiser, indem keine Fortschrittsausgaben angezeigt werden. Beispiel: --shush--debug - Aktivieren Sie den Debug-Modus für eine detaillierte und umfangreiche Ausgabe. Beispiel: --debugDer Benutzer ist allein dafür verantwortlich, dass dieses Tool in Übereinstimmung mit den geltenden Gesetzen und Vorschriften verwendet wird, einschließlich der Einholung der ordnungsgemäßen Genehmigung für das Scannen von Repositories und die Verbreitung aller generierten Ergebnisse. Die unbefugte Nutzung oder Weitergabe von Ergebnissen kann gegen lokale, nationale oder internationale Gesetze verstoßen.