
gitGraber: surveiller GitHub pour rechercher et trouver des données sensibles en temps réel pour différents services en ligne tels que : Google, Amazon, Paypal, Github, Mailgun, Facebook, Twitter, Heroku, Stripe...

gitGraber est un outil développé en Python3 pour surveiller GitHub, rechercher et trouver des données sensibles en temps réel pour différents services en ligne tels que : Google, Amazon (AWS), Paypal, Github, Mailgun, Facebook, Twitter, Heroku, Stripe, Twilio...

Il est important de comprendre que gitGraber n'est pas conçu pour vérifier l'historique des dépôts, de nombreux outils peuvent déjà le faire très bien. gitGraber a été développé à l'origine pour surveiller et analyser les derniers fichiers indexés sur GitHub. Si gitGraber trouve quelque chose d'intéressant, vous recevrez une notification sur votre canal Slack. Vous pouvez également l'utiliser pour obtenir des résultats directement en ligne de commande.
D'après notre expérience, nous sommes convaincus que les fuites ne proviennent pas uniquement des organisations elles-mêmes, mais aussi des fournisseurs de services et des employés, qui n'ont pas nécessairement un « profil » indiquant qu'ils travaillent pour une organisation particulière.
Les expressions régulières sont censées être aussi précises que possible. Parfois, vous aurez peut-être des faux positifs, n'hésitez pas à contribuer pour améliorer la reconnaissance et ajouter de nouvelles expressions régulières pour la détection de motifs.
Nous préférons réduire les faux positifs plutôt que d'envoyer une notification pour chaque clé API « standard » qui pourrait être trouvée par gitGraber mais non pertinente pour votre surveillance.
gitGraber affiche certaines choses directement dans la CLI : GitHub request, détection d'abus de code d'état (200 ou 403)... et si vous ne voyez pas quelque chose comme [+] POSSIBLE FOO TOKEN FOUND c'est simplement parce que gitGraber n'a pas trouvé de jetons secrets pour votre mot-clé défini.
Ce message apparaît lorsque GitHub détecte un grand nombre de requêtes provenant de votre propre jeton GitHub. Ne vous inquiétez pas, gitGraber peut gérer cela et il essaiera d'utiliser un autre jeton défini dans le fichier config.py. Remarque : Il s'agit d'une limite temporaire et vous n'avez pas besoin de créer un autre jeton.
Non, pour éviter cela, gitGraber stocke toutes les URL de dépôts dans un fichier nommé rawGitUrls.txt. Si un dépôt a déjà été scanné par gitGraber et qu'une clé API a été trouvée, vous ne recevrez pas de notification.
Vous devez éditer le fichier tokens.py et ajouter le motif comme argument de liste lors de l'initialisation du jeton. Par exemple, pour ajouter le motif XXXX au jeton MAILCHIMP, la ligne tokensList.append(Token('MAILCHIMP', '\W(?:[a-f0-9]{32}(-us[0-9]{1,2}))\W')) devient tokensList.append(Token('MAILCHIMP', '\W(?:[a-f0-9]{32}(-us[0-9]{1,2}))\W', ['XXXX'])).
usage: gitGraber.py [-h] [-k KEYWORDSFILE] [-q QUERY] [-s] [-w WORDLIST]
optional arguments:
-h, --help Show this help message and exit
-k KEYWORDSFILE, --keyword KEYWORDSFILE Specify a keywords file (-k keywordsfile.txt)
-q QUERY, --query QUERY Specify your github query (-q "apikey")
-m, --monitor Enable monitoring of your search query by creating cron job [Every 30 mins]
-d, --discord Enable discord notifications
-s, --slack Enable slack notifications
-tg, --telegram Enable telegram notifications
-w WORDLIST, --wordlist WORDLIST Create a wordlist that fills dynamically with discovered filenames on GitHub
-l LIMIT_DAYS, --limit LIMIT_DAYS Limit the results to commits less than N days old
Par exemple, pour rechercher un mot spécifique dans github en combinaison avec chaque mot du fichier keywordsfile.txt et l'envoyer sur Slack :
python3 gitGraber.py -k keywordsfile.txt -q YOURWORD -s
Il est possible de rechercher un nom de domaine spécifique par exemple, mais cela doit être entouré de guillemets doubles :
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s
Si vous souhaitez créer une liste de mots personnalisée basée sur les fichiers trouvés sur Github pour l'utiliser ensuite avec votre outil de fuzzing préféré, ajoutez l'argument -w :
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -w mysuperwordlist.txt
Si vous souhaitez surveiller votre requête de recherche toutes les 30 minutes, vous pouvez utiliser le drapeau -m qui indique à gitGraber de créer une tâche cron basée sur votre requête :
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -m
La commande ci-dessus recherchera des secrets toutes les 30 minutes sur votre requête de recherche et vous enverra une notification Slack dès qu'il y aura des résultats.
gitGraber a besoin de certaines dépendances, pour les installer sur votre environnement :
pip3 install -r requirements.txt
Avant de démarrer gitGraber, vous devez modifier le fichier de configuration config.py :
GITHUB_TOKENS = ['yourToken1Here','yourToken2Here']DISCORD_WEBHOOKURL = 'https://discordapp.com/api/webhooks/7XXXX/XXXXXX'SLACK_WEBHOOKURL = 'https://hooks.slack.com/services/TXXXX/BXXXX/XXXXXXX'TELEGRAM_CONFIG = { "token": "XXXXX:xXXXXXXXXXXXXX", "chat_id": -99999999 }Pour démarrer gitGraber : python3 gitGraber.py -k wordlists/keywords.txt -q "uber" -s
Actuellement, gitGraber prend en charge 31 jetons différents. Tous ces modèles de détection (expressions régulières) sont stockés dans le fichier tokens.py :
Certaines listes de mots et expressions régulières ont été créées par nous et d'autres sont inspirées d'autres dépôts/chercheurs :
Merci pour votre contribution et pour votre aide à améliorer gitGraber :
Ce projet est conçu uniquement à des fins éducatives et de tests éthiques. L'utilisation de cet outil pour attaquer des cibles sans consentement mutuel préalable est illégale. Les développeurs déclinent toute responsabilité et ne sont pas responsables de toute mauvaise utilisation ou dommage causé par cet outil.
| Service | Link |
|---|
| GitHub | Comment créer un jeton API GitHub |
| Discord | Comment créer une URL de Webhook Discord |
| Slack | Comment créer une URL de Webhook Slack |
| Telegram | Comment créer un bot Telegram |