
Una herramienta de seguridad multifacética que aprovecha las API REST públicas de GitHub para OSINT, Forense, Pruebas de Penetración y más.
Gitxray (abreviatura de Git X-Ray) es una herramienta de seguridad multifacética diseñada para su uso en repositorios de GitHub. Puede servir para muchos propósitos, incluyendo OSINT y Forense. gitxray aprovecha las API REST públicas de GitHub para recopilar información que de otra manera sería muy lenta de obtener manualmente. Además, busca información en lugares no convencionales.

Gitxray se puede utilizar, por ejemplo, para:
Encontrar información sensible en perfiles de colaboradores revelada accidentalmente, por ejemplo, en Claves PGP Armadas o Nombres de Claves.
Identificar actores de amenazas en un Repositorio. Puede detectar cuentas copropietarias o compartidas, así como inspeccionar eventos públicos para detectar Stargazers falsos.
Identificar repositorios falsos o infectados. Puede detectar fechas de commit manipuladas, así como, por ejemplo, activos de Release actualizados después del lanzamiento.
Casos de uso forenses, como filtrar resultados por fecha para verificar qué más sucedió el día de un incidente.
¡Y mucho más! Ejecute un X-Ray completo para recopilar una tonelada de datos.
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
Consulte la Documentación para ver casos de uso adicionales e información introductoria.
Gitxray maneja elegantemente los Límites de Tasa y puede funcionar sin problemas sin un token de API de GitHub, pero probablemente alcanzará los Límites de Tasa bastante rápido (un repositorio de tamaño pequeño a mediano con más de 10 colaboradores podría tardar horas en completarse mientras espera que los Límites de Tasa se restablezcan). Esto está detallado por GitHub en su documentación aquí.
Crear un token simple de solo lectura con alcance a repositorios PÚBLICOS sin embargo le ayudará a aumentar esas restricciones considerablemente. Si no tiene prisa o puede dejar gitxray ejecutándose, podrá usar toda su capacidad, ya que pausa la ejecución mientras espera que se levanten los límites.
Luego puede cargar el token de forma segura usando (evita que el token se muestre en pantalla o se registre en el historial de su shell):
read -rs GH_ACCESS_TOKEN
export
Gitxray puede usar opcionalmente la API de VirusTotal para verificar cualquier host identificado con la API de búsqueda de código de GitHub, pero requiere una Clave API de VirusTotal para funcionar. Las instrucciones sobre cómo obtener su Clave API de VirusTotal están disponibles en: https://docs.virustotal.com/docs/please-give-me-an-api-key
Desafortunadamente, las Claves API personales están (a día de hoy) limitadas por VirusTotal a 500 consultas por día.
Una vez que tenga la clave API, puede cargarla de forma segura en su entorno con:
read -rs VT_API_KEY
export
gitxray fue escrito sin el uso de dependencias de paquetes externos más allá de la biblioteca requests.
gitxray está en PyPI y se puede instalar y actualizar con:
pip install gitxray --upgrade
Una vez instalado, simplemente ejecute gitxray desde su línea de comandos escribiendo:
gitxray -h
gitxray -o https://github.com/kulkansecurity

También puede ejecutar gitxray directamente clonando o descargando su repositorio de GitHub y ejecutando.
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
Uno de los siguientes debe ser especificado:
-r, --repository [URL] - Especificar un único repositorio para verificar. La URL puede opcionalmente comenzar con https://github.com/. Ejemplo: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - Proporcionar una ruta de archivo que contenga una lista de repositorios, cada uno en una nueva línea. El archivo debe existir. Ejemplo: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - Especificar una organización para verificar todos los repositorios bajo esa organización. La URL puede opcionalmente comenzar con https://github.com/. Ejemplo: --organization https://github.com/exampleOrg
Encontrará estos opcionales pero muy útiles en el uso común de gitxray.
-l, --list - Listar colaboradores si se especifica un repositorio o listar repositorios si se especifica una organización. Útil para enfocarse aún más en entidades específicas. Ejemplo: --list
-c, --contributor [USERNAMES] - Una lista separada por comas de nombres de usuario de GitHub en los que enfocarse dentro del repositorio u organización especificada. Ejemplo: --contributor user1,user2
-f, --filters [KEYWORDS] - Palabras clave separadas por comas para filtrar los resultados, como 'user_input', 'association' o 'mac'. Ejemplo: --filters user_input,association,mac
-out, --outfile [FILEPATH] - Especificar la ruta del archivo para el registro de salida. No puede ser un directorio. Ejemplo: --outfile ./output.log
-outformat, --output-format [FORMAT] - Establecer el formato del archivo de registro. Los formatos compatibles son html, text y json. El valor predeterminado es html. Ejemplo: --output-format json
--shush - Hace que Gitxray sea un poco más silencioso al no mostrar la salida relacionada con el progreso. Ejemplo: --shush--debug - Habilitar el modo de depuración para una salida detallada y extensa. Ejemplo: --debugEl usuario es el único responsable de garantizar que esta herramienta se utilice cumpliendo con las leyes y regulaciones aplicables, incluyendo la obtención de la autorización adecuada para el escaneo de repositorios y la distribución de cualquier resultado generado. El uso no autorizado o el intercambio de resultados puede violar leyes locales, nacionales o internacionales.