
Ferramenta semi-automatizada e orientada por feedback para pesquisar rapidamente em montanhas de dados públicos no GitHub por segredos sensíveis.
GitGot é uma ferramenta semiautomática e orientada por feedback para capacitar usuários a pesquisar rapidamente em grandes volumes de dados públicos no GitHub por segredos sensíveis.
Durante as sessões de busca, os usuários fornecem feedback ao GitGot sobre resultados de busca a serem ignorados, e o GitGot poda o conjunto de resultados. Os usuários podem colocar na lista negra arquivos por nome de arquivo, nome de repositório, nome de usuário ou uma correspondência difusa do conteúdo do arquivo.
Listas negras geradas em sessões anteriores podem ser salvas e reutilizadas em consultas semelhantes (por exemplo, example.com vs subdomain.example.com vs Example Org). As sessões também podem ser pausadas e retomadas a qualquer momento.
Leia mais sobre o design semiautomático com participação humana aqui: https://bishopfox.com/blog/semi-automated-vs-automated-security-tools.
[1] Instale a dependência ssdeep para hashing difuso.
Ubuntu/Debian (ou equivalente para sua distribuição):
apt-get install python3-dev libfuzzy-dev ssdeep
ou, para Mac OSX:
brew install ssdeep
Para Windows ou distribuições *nix sem o pacote ssdeep, consulte as instruções de instalação do ssdeep.
[2] Após instalar o ssdeep, instale as dependências Python usando o pip:
pip3 install -r requirements.txt
Execute gitgot-docker.sh para construir a imagem docker do GitGot (se ainda não existir) e executar a versão dockerizada da ferramenta GitGot.
Na invocação, gitgot-docker.sh criará e montará os diretórios logs e states a partir do diretório de trabalho atual do host. Se este gitgot-docker.sh for executado a partir do diretório do projeto GitGot, ele atualizará o contêiner docker com alterações no gitgot.py ou checks/:
./gitgot-docker.sh -q example.com
(Veja gitgot-docker.sh para comandos docker específicos)
O GitHub exige um token para fins de limitação de taxa. Crie um token de API do GitHub com nenhuma permissão/nenhum escopo. Isso será equivalente ao acesso público do GitHub, mas permitirá o uso da API de Pesquisa do GitHub. Defina este token no topo do gitgot.py conforme mostrado abaixo:
ACCESS_TOKEN = "<NO-PERMISSION-GITHUB-TOKEN-HERE>"
(Alternativamente, este token pode ser definido como a variável de ambiente GITHUB_ACCESS_TOKEN)
Após adicionar o token, você está pronto para começar:
# 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
As consultas do GitGot são alimentadas diretamente na API de pesquisa de código do GitHub, portanto, consulte a documentação do GitHub para obter uma sintaxe de consulta mais avançada.
/(secretToken))