
gitGraber: monitoriza GitHub para buscar y encontrar datos sensibles en tiempo real para diferentes servicios online como: Google, Amazon, Paypal, Github, Mailgun, Facebook, Twitter, Heroku, Stripe...

gitGraber es una herramienta desarrollada en Python3 para monitorizar GitHub con el fin de buscar y encontrar datos sensibles en tiempo real para diferentes servicios online como: Google, Amazon (AWS), Paypal, Github, Mailgun, Facebook, Twitter, Heroku, Stripe, Twilio...

Es importante entender que gitGraber no está diseñado para revisar el historial de repositorios; muchas herramientas ya hacen eso muy bien. gitGraber fue desarrollado originalmente para monitorizar y analizar los últimos archivos indexados en GitHub. Si gitGraber encuentra algo interesante, recibirás una notificación en tu canal de Slack. También puedes usarlo para obtener resultados directamente en la línea de comandos.
Según nuestra experiencia, estamos convencidos de que las filtraciones no provienen únicamente de las propias organizaciones, sino también de proveedores de servicios y empleados que no necesariamente tienen un "perfil" que indique que trabajan para una organización en particular.
Las expresiones regulares deben ser lo más precisas posible. A veces, tendrás falsos positivos; no dudes en contribuir para mejorar la detección y añadir nuevas expresiones regulares para la detección de patrones.
Preferimos reducir los falsos positivos en lugar de enviar notificaciones por cada clave API "estándar" que gitGraber pueda encontrar pero que sea irrelevante para tu monitorización.
gitGraber muestra algunas cosas directamente en la CLI: solicitud a GitHub, código de estado por detección de abuso (200 o 403)... y si no ves algo como [+] POSIBLE TOKEN FOO ENCONTRADO es simplemente porque gitGraber no ha encontrado tokens secretos para tu palabra clave definida.
Este mensaje aparece cuando GitHub detecta un gran número de solicitudes desde tu propio token de GitHub. No te preocupes, gitGraber puede manejar esto e intentará usar otro token definido en el archivo config.py. Nota: Este es un límite temporal y no necesitas crear otro token.
No, para evitarlo, gitGraber almacena todas las URLs de los repositorios en un archivo llamado rawGitUrls.txt. Si un repositorio ya ha sido escaneado por gitGraber y se encontró una clave API, no recibirás una notificación.
Debes editar el archivo tokens.py y agregar el patrón como argumento de lista al inicializar el token. Por ejemplo, para agregar el patrón XXXX al token MAILCHIMP, la línea tokensList.append(Token('MAILCHIMP', '\W(?:[a-f0-9]{32}(-us[0-9]{1,2}))\W')) se convierte en 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
Por ejemplo, para buscar una palabra específica en GitHub en combinación con cada palabra del archivo keywordsfile.txt y enviar la salida a Slack:
python3 gitGraber.py -k keywordsfile.txt -q TU_PALABRA -s
Es posible buscar un nombre de dominio específico, por ejemplo, pero debe ir entre comillas dobles:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s
Si deseas construir una lista de palabras personalizada basada en los archivos encontrados en GitHub para usarla luego con tu herramienta de fuzzing favorita, añade el argumento -w:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -w mipalabrasuper.txt
Si quieres monitorizar tu consulta de búsqueda cada 30 minutos, puedes usar la bandera -m, que indica a gitGraber que cree un trabajo cron basado en tu consulta:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -m
Lo anterior buscará secretos cada 30 minutos en tu consulta de búsqueda y te enviará una notificación de Slack cuando haya coincidencias.
gitGraber necesita algunas dependencias. Para instalarlas en tu entorno:
pip3 install -r requirements.txt
Antes de iniciar gitGraber debes modificar el archivo de configuración config.py:
GITHUB_TOKENS = ['tuToken1Aquí','tuToken2Aquí']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 }Para iniciar gitGraber: python3 gitGraber.py -k wordlists/keywords.txt -q "uber" -s
Actualmente, gitGraber soporta 31 tokens diferentes. Todos estos modelos de detección (regex) se almacenan en el archivo tokens.py:
Algunas listas de palabras y expresiones regulares han sido creadas por nosotros y otras están inspiradas en otros repositorios/investigadores:
Gracias por tu contribución y por tu ayuda para mejorar gitGraber:
Este proyecto está hecho únicamente con fines educativos y de pruebas éticas. El uso de esta herramienta para atacar objetivos sin el consentimiento mutuo previo es ilegal. Los desarrolladores no asumen ninguna responsabilidad y no se hacen responsables de cualquier uso indebido o daño causado por esta herramienta.
| Servicio | Enlace |
|---|
| GitHub | Cómo crear un token API de GitHub |
| Discord | Cómo crear una URL de Webhook de Discord |
| Slack | Cómo crear una URL de Webhook de Slack |
| Telegram | Cómo crear un bot de Telegram |