
Uma ferramenta de segurança multifacetada que aproveita as APIs REST públicas do GitHub para OSINT, Forensics, Pentesting e mais.
Gitxray (abreviação de Git X-Ray) é uma ferramenta de segurança multifacetada projetada para uso em repositórios do GitHub. Pode servir a vários propósitos, incluindo OSINT e Forense. O gitxray utiliza APIs REST públicas do GitHub para coletar informações que, de outra forma, seriam muito demoradas para obter manualmente. Além disso, busca informações em lugares não convencionais.

O Gitxray pode ser usado, por exemplo, para:
Encontrar informações sensíveis em perfis de contribuidores divulgadas acidentalmente, por exemplo, em Chaves PGP Armored ou Nomes de Chaves.
Identificar atores de ameaças em um Repositório. Você pode detectar contas co-propriedade ou compartilhadas, bem como inspecionar eventos públicos para identificar Stargazers falsos.
Identificar Repositórios falsos ou infectados. Pode detectar datas de commit adulteradas, bem como, por exemplo, ativos de Release atualizados após o lançamento.
Casos de uso forenses, como filtrar resultados por data para verificar o que mais aconteceu no dia de um incidente.
E muito mais! Execute um Raio-X completo para coletar uma tonelada de dados.
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 a Documentação para casos de uso adicionais e informações introdutórias.
O Gitxray lida graciosamente com os Limites de Taxa e pode funcionar imediatamente sem um token da API do GitHub, mas você provavelmente atingirá os Limites de Taxa rapidamente (um repositório de pequeno a médio porte com 10+ Contribuidores pode levar horas para ser concluído enquanto aguarda a redefinição dos Limites de Taxa). Isso é detalhado pelo GitHub na documentação aqui.
Criar um token simples somente leitura com escopo para repositórios PÚBLICOS no entanto ajudará você a aumentar essas restrições consideravelmente. Se você não estiver com pressa ou puder deixar o gitxray em execução, poderá usar toda a sua capacidade, pois ele pausa a execução enquanto aguarda a liberação dos limites.
Você pode então carregar o token com segurança usando (evita que o token seja exibido na tela ou registrado no histórico do shell):
read -rs GH_ACCESS_TOKEN
export
O Gitxray pode opcionalmente usar a API do VirusTotal para verificar quaisquer hosts identificados com a API de pesquisa de Código do GitHub, mas requer uma Chave de API do VirusTotal para funcionar. Instruções sobre como obter sua Chave de API do VirusTotal estão disponíveis em: https://docs.virustotal.com/docs/please-give-me-an-api-key
Infelizmente, as Chaves de API pessoais são (atualmente) limitadas pelo VirusTotal a 500 consultas por dia.
Depois de ter a chave de API, você pode carregá-la com segurança em seu ambiente com:
read -rs VT_API_KEY
export
O gitxray foi escrito sem uso de dependências de pacotes externos além da biblioteca requests.
O gitxray está no PyPI e pode ser instalado e atualizado com:
pip install gitxray --upgrade
Uma vez instalado, basta executar o gitxray a partir da sua linha de comando digitando:
gitxray -h
gitxray -o https://github.com/kulkansecurity

Você também pode executar o gitxray diretamente clonando ou baixando seu repositório GitHub e executando.
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
Um dos seguintes deve ser especificado:
-r, --repository [URL] - Especifique um único repositório para verificar. A URL pode opcionalmente começar com https://github.com/. Exemplo: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - Forneça um caminho de arquivo contendo uma lista de repositórios, cada um em uma nova linha. O arquivo deve existir. Exemplo: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - Especifique uma organização para verificar todos os repositórios sob essa organização. A URL pode opcionalmente começar com https://github.com/. Exemplo: --organization https://github.com/exampleOrg
Você os considerará opcionais, mas muito úteis no uso comum do gitxray.
-l, --list - Lista contribuidores se um repositório for especificado ou lista repositórios se uma organização for especificada. Útil para focar ainda mais em entidades específicas. Exemplo: --list
-c, --contributor [USERNAMES] - Uma lista separada por vírgulas de nomes de usuário do GitHub para focar dentro do repositório ou organização especificada. Exemplo: --contributor user1,user2
-f, --filters [KEYWORDS] - Palavras-chave separadas por vírgulas para filtrar os resultados, como 'user_input', 'association' ou 'mac'. Exemplo: --filters user_input,association,mac
-out, --outfile [FILEPATH] - Especifique o caminho do arquivo para o log de saída. Não pode ser um diretório. Exemplo: --outfile ./output.log
-outformat, --output-format [FORMAT] - Define o formato do arquivo de log. Os formatos suportados são html, text e json. O padrão é html. Exemplo: --output-format json
--shush - Torna o Gitxray um pouco mais silencioso ao não exibir saída relacionada ao progresso. Exemplo: --shush--debug - Ativa o modo Debug para uma saída detalhada e extensa. Exemplo: --debugO usuário é o único responsável por garantir que esta ferramenta seja usada em conformidade com as leis e regulamentos aplicáveis, incluindo a obtenção de autorização adequada para varredura de repositórios e a distribuição de quaisquer resultados gerados. O uso não autorizado ou o compartilhamento de resultados pode violar leis locais, nacionais ou internacionais.