
Un outil de sécurité polyvalent qui exploite les API REST publiques de GitHub pour l'OSINT, la forensique, le pentesting et plus encore.
Gitxray (abréviation de Git X-Ray) est un outil de sécurité polyvalent conçu pour une utilisation sur les dépôts GitHub. Il peut servir à de nombreuses fins, notamment l'OSINT et la criminalistique numérique. gitxray exploite les API REST publiques de GitHub pour rassembler des informations qui seraient autrement très longues à obtenir manuellement. De plus, il cherche des informations dans des endroits non conventionnels.

Gitxray peut être utilisé, par exemple, pour :
Trouver des informations sensibles dans les profils des contributeurs divulguées accidentellement, par exemple dans des clés PGP blindées ou des noms de clés.
Identifier des acteurs malveillants dans un dépôt. Vous pouvez repérer des comptes copropriétaires ou partagés, ainsi qu'inspecter les événements publics pour détecter de faux Stargazers.
Identifier des dépôts falsifiés ou infectés. Il peut détecter les dates de commit falsifiées ainsi que, par exemple, les assets de Release mis à jour après la publication.
Cas d'utilisation médico-légaux, comme filtrer les résultats par date pour vérifier ce qui s'est passé d'autre le jour d'un incident.
Et bien plus encore ! Effectuez un X-Ray complet pour collecter une tonne de données.
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
Veuillez vous référer à la documentation pour des cas d'utilisation supplémentaires et des informations d'introduction.
Gitxray gère gracieusement les limites de débit et peut fonctionner prêt à l'emploi sans jeton d'API GitHub, mais vous atteindrez probablement les limites assez rapidement (un dépôt de petite à moyenne taille avec 10+ contributeurs pourrait prendre des heures pour se terminer en attendant la réinitialisation des limites). Ceci est détaillé par GitHub dans leur documentation ici.
Cependant, créer un simple jeton en lecture seule limité aux dépôts PUBLICS vous aidera à augmenter considérablement ces restrictions. Si vous n'êtes pas pressé ou pouvez laisser gitxray tourner, vous pourrez utiliser toute sa capacité, car il suspend l'exécution en attendant la levée des limites.
Vous pouvez ensuite charger le jeton en toute sécurité en utilisant (empêche le jeton d'être affiché à l'écran ou enregistré dans l'historique de votre shell) :
read -rs GH_ACCESS_TOKEN
export
Gitxray peut éventuellement utiliser l'API VirusTotal pour vérifier les hôtes identifiés avec l'API Code Search de GitHub, mais cela nécessite une clé API VirusTotal pour fonctionner. Des instructions sur la façon d'obtenir votre clé API VirusTotal sont disponibles sur : https://docs.virustotal.com/docs/please-give-me-an-api-key
Malheureusement, les clés API personnelles sont (à ce jour) limitées par VirusTotal à 500 requêtes par jour.
Une fois que vous avez la clé API, vous pouvez la charger en toute sécurité dans votre environnement avec :
read -rs VT_API_KEY
export
gitxray a été écrit sans utiliser de dépendances de paquets externes autres que la bibliothèque requests.
gitxray est sur PyPI et peut être installé et mis à jour avec :
pip install gitxray --upgrade
Une fois installé, exécutez simplement gitxray depuis votre ligne de commande en tapant :
gitxray -h
gitxray -o https://github.com/kulkansecurity

Vous pouvez également exécuter gitxray directement en clonant ou en téléchargeant son dépôt GitHub et en l'exécutant.
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
L'un des éléments suivants doit être spécifié :
-r, --repository [URL] - Spécifier un seul dépôt à vérifier. L'URL peut éventuellement commencer par https://github.com/. Exemple : --repository https://github.com/example/repo
-rf, --repositories-file [CHEMIN] - Fournir un chemin de fichier contenant une liste de dépôts, chacun sur une nouvelle ligne. Le fichier doit exister. Exemple : --repositories-file ./list_of_repos.txt
-o, --organization [URL] - Spécifier une organisation pour vérifier tous les dépôts sous cette organisation. L'URL peut éventuellement commencer par https://github.com/. Exemple : --organization https://github.com/exampleOrg
Vous trouverez ces arguments optionnels mais très pratiques dans l'utilisation courante de gitxray.
-l, --list - Lister les contributeurs si un dépôt est spécifié ou lister les dépôts si une organisation est spécifiée. Utile pour se concentrer davantage sur des entités spécifiques. Exemple : --list
-c, --contributor [NOMS_UTILISATEURS] - Une liste séparée par des virgules de noms d'utilisateurs GitHub sur lesquels se concentrer dans le dépôt ou l'organisation spécifié. Exemple : --contributor user1,user2
-f, --filters [MOTS_CLÉS] - Mots-clés séparés par des virgules pour filtrer les résultats, par exemple 'user_input', 'association' ou 'mac'. Exemple : --filters user_input,association,mac
-out, --outfile [CHEMIN] - Spécifier le chemin du fichier pour le journal de sortie. Ne peut pas être un répertoire. Exemple : --outfile ./output.log
-outformat, --output-format [FORMAT] - Définir le format du fichier journal. Les formats pris en charge sont html, text et json. La valeur par défaut est html. Exemple : --output-format json
--shush - Rend Gitxray un peu plus silencieux en n'affichant pas la sortie liée à la progression. Exemple : --shush--debug - Activer le mode débogage pour une sortie détaillée et étendue. Exemple : --debugL'utilisateur est seul responsable de s'assurer que cet outil est utilisé conformément aux lois et réglementations applicables, y compris l'obtention des autorisations appropriées pour l'analyse des dépôts et la distribution des résultats générés. Toute utilisation non autorisée ou tout partage des résultats peut violer les lois locales, nationales ou internationales.