
Herramienta semiautomática impulsada por retroalimentación para buscar rápidamente en grandes cantidades de datos públicos en GitHub secretos sensibles.
GitGot es una herramienta semiautomática guiada por retroalimentación que permite a los usuarios buscar rápidamente en grandes volúmenes de datos públicos en GitHub para encontrar secretos sensibles.
Durante las sesiones de búsqueda, los usuarios proporcionan retroalimentación a GitGot sobre los resultados que deben ignorarse, y GitGot poda el conjunto de resultados. Los usuarios pueden incluir archivos en una lista negra por nombre de archivo, nombre de repositorio, nombre de usuario o una coincidencia difusa del contenido del archivo.
Las listas negras generadas en sesiones anteriores se pueden guardar y reutilizar para consultas similares (p. ej., example.com vs. subdomain.example.com vs. Example Org). Las sesiones también se pueden pausar y reanudar en cualquier momento.
Lea más sobre el diseño semiautomático de supervisión humana aquí: https://bishopfox.com/blog/semi-automated-vs-automated-security-tools.
[1] Instale la dependencia ssdeep para el hashing difuso.
Ubuntu/Debian (o equivalente para su distribución):
apt-get install python3-dev libfuzzy-dev ssdeep
o, para Mac OSX:
brew install ssdeep
Para Windows o distribuciones *nix sin el paquete ssdeep, consulte las instrucciones de instalación de ssdeep.
[2] Después de instalar ssdeep, instale las dependencias de Python usando pip:
pip3 install -r requirements.txt
Ejecute gitgot-docker.sh para construir la imagen Docker de GitGot (si aún no existe) y ejecutar la versión dockerizada de la herramienta GitGot.
Al invocarlo, gitgot-docker.sh creará y montará los directorios logs y states desde el directorio de trabajo actual del host. Si este gitgot-docker.sh se ejecuta desde el directorio del proyecto GitGot, actualizará el contenedor Docker con los cambios en gitgot.py o checks/:
./gitgot-docker.sh -q example.com
(Consulte gitgot-docker.sh para comandos específicos de Docker)
GitHub requiere un token para fines de limitación de tasa. Cree un token de API de GitHub sin permisos/sin alcance. Esto equivaldrá a acceso público de GitHub, pero permitirá el acceso para usar la API de búsqueda de GitHub. Establezca este token en la parte superior de gitgot.py como se muestra a continuación:
ACCESS_TOKEN = "<NO-PERMISSION-GITHUB-TOKEN-HERE>"
(Alternativamente, este token se puede establecer como la variable de entorno GITHUB_ACCESS_TOKEN)
Después de agregar el token, está listo para comenzar:
# Default RegEx list and logfile location (/logs/<query>.log) are used when no others are specified.
# Query for the string "example.com" using default GitHub search behavior (i.e., tokenization).
# This will find com.example (e.g., Java) or example.com (Website)
./gitgot.py -q example.com
# Query self-hosted GitHub instance
./gitgot.py -q example.com -u https://git.example.com
# Query for the exact string "example.com". See Query Syntax in the next section for more details.
./gitgot.py -q '"example.com"'
# Query through GitHub gists
./gitgot.py --gist -q CompanyName
# Using GitHub advanced search syntax
./gitgot.py -q "org:github cats"
# Custom RegEx List and custom log files location
./gitgot.py -q example.com -f checks/default.list -o example1.log
# Recovery from existing session
./gitgot.py -q example.com -r example.com.state
# Using an existing session (w/blacklists) for a new query
./gitgot.py -q "Example Org" -r example.com.state
Las consultas de GitGot se envían directamente a la API de búsqueda de código de GitHub, así que consulte la documentación de GitHub para obtener una sintaxis de consulta más avanzada.
/(secretToken)).