
Este é um espelho de um repositório forkado. Ele adiciona vários recursos ao gitrob, incluindo suporte ao GitLab, pesquisa de conteúdo de commits, clonagem de repositórios em memória e muito mais.
O Gitrob é uma ferramenta para ajudar a encontrar informações potencialmente sensíveis enviadas para repositórios no GitLab ou no GitHub. O Gitrob clona repositórios pertencentes a um usuário ou grupo/organização até uma profundidade configurável, percorre o histórico de commits e sinaliza arquivos e/ou conteúdo de commits que correspondam a assinaturas de informações potencialmente sensíveis. Os resultados são apresentados por meio de uma interface web para fácil navegação e análise.
gitrob [options] target [target2] ... [targetN]
IMPORTANTE Se você estiver segmentando um grupo do GitLab, forneça o ID do grupo como argumento de destino. Você pode encontrar o ID do grupo logo abaixo do nome do grupo na interface do GitLab. Caso contrário, nomes são suficientes para os argumentos de destino.
-bind-address string
Address to bind web server to (default "127.0.0.1")
-commit-depth int
Number of repository commits to process (default 500)
-debug
Print debugging information
-exit-on-finish
Let the program exit on finish. Useful for automated scans.
-github-access-token string
Github access token to use for API requests (set one)
-gitlab-access-token string
GitLab access token to use for API requests (set one)
-in-mem-clone
Clone repositories into memory for faster analysis depending on your hardware
-load string
Load session file from specified path
-mode int {1, 2, or 3}
Designate a mode for execution. Mode 1 (default) searches for file signature matches. Mode 2 (-mode 2) searches for file signature matches. Given a file signature match, mode 2 then attempts to match on content in order to produce a result. Mode 3 (-mode 3) searches by content matches only. In mode 3, no file signature matches are performed.
-no-expand-orgs
Don't add members to targets when processing organizations
-port int
Port to run web server on (default 9393)
-save string
Save session to a file at the given path
-silent
Suppress all output except for errors
-threads int
Number of concurrent threads (default number of logical CPUs)
Escanee um grupo do GitLab assumindo que seu token de acesso foi adicionado à variável de ambiente chamada GITROB_GITLAB_ACCESS_TOKEN. Procure apenas correspondências de assinatura de arquivo:
gitrob <gitlab_group_id>
Escanee vários grupos do GitLab assumindo que seu token de acesso foi adicionado à variável de ambiente chamada GITROB_GITLAB_ACCESS_TOKEN. Clone repositórios para a memória para uma análise mais rápida. Defina o modo de varredura para 2 para examinar cada correspondência de arquivo em busca de uma correspondência de conteúdo antes de criar um resultado. Salve os resultados em ./output.json:
gitrob -in-mem-clone -mode 2 -save "./output.json" <gitlab_group_id_1> <gitlab_group_id_2>
Escanee um grupo do GitLab assumindo que seu token de acesso foi adicionado à variável de ambiente chamada GITROB_GITLAB_ACCESS_TOKEN. Clone repositórios para a memória para uma análise mais rápida. Defina o modo de varredura para 3 para examinar cada commit apenas em busca de correspondências de conteúdo. Salve os resultados em ./output.json:
gitrob -in-mem-clone -mode 3 -save "./output.json" <gitlab_group_id>
Escanee um usuário do GitHub definindo seu token de acesso do GitHub como parâmetro. Clone repositórios para a memória para uma análise mais rápida.
gitrob -github-access-token <token> -in-mem-clone <github_user_name>
As expressões regulares estão incluídas nos arquivos filesignatures.json e contentsignatures.json, respectivamente. Edite esses arquivos para ajustar seu escopo e refinar seus resultados.
Uma sessão armazenada em um arquivo pode ser carregada com a opção -load:
gitrob -load ./output.json
O Gitrob iniciará sua interface web e disponibilizará os resultados para análise.
Uma versão pré-compilada está disponível para cada versão; alternativamente, você pode usar a versão mais recente do código-fonte deste repositório para compilar seu próprio binário.
Para instalar a partir do código-fonte, certifique-se de ter um ambiente Go >= 1.8 configurado corretamente e que $GOPATH/bin esteja no seu $PATH. Além disso, certifique-se de ter o dep instalado localmente.
$ go get github.com/codeEmitter/gitrob
$ cd ~/go/src/github.com/codeEmitter/gitrob
$ dep ensure
$ go build
Observe que instalar com go install não funcionará devido às dependências estáticas dos arquivos json. No entanto, considerou-se mais útil ter os arquivos ajustáveis sem recompilar o binário do que ter tudo embutido no próprio binário.
O Dockerfile incluído pode ser usado para criar as imagens necessárias para executar o gitrob. Você pode criar uma imagem básica com:
docker build . -t gitrob:latest
Em seguida, você pode executar o contêiner, opcionalmente especificando quantas CPUs lógicas alocar para concorrência com:
docker run -p 9393:9393 --cpus <NUM_CPUS> gitrob:latest -bind-address 0.0.0.0 -github-access-token <token> -in-mem-clone -mode 2 <target1> <target2> ...
Com este contêiner em execução, use seu navegador para acessar a interface em: http://localhost:9393.
Alternativamente, o docker-compose.yml incluído pode ser usado com docker-compose. Certifique-se de definir GITROB_GITHUB_ACCESS_TOKEN ou GITROB_GITLAB_ACCESS_TOKEN no arquivo docker-compose.yml. Não defina ambas as variáveis de ambiente, pois o Gitrob suporta apenas uma por vez. Depois disso, você pode criar um arquivo targets.txt no diretório do repositório com os alvos em cada linha:
target1
target2
E então execute o seguinte comando para executar o gitrob nos alvos especificados:
docker-compose up --build
A interface pode ser acessada em http://localhost:9393.
O Gitrob precisará de um token de acesso do GitLab ou do GitHub para interagir com a API apropriada. Você pode criar um token de acesso pessoal do GitLab ou um token de acesso pessoal do GitHub e salvá-lo em uma variável de ambiente no seu .bashrc ou arquivo de configuração de shell semelhante:
export GITROB_GITLAB_ACCESS_TOKEN=deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
export GITROB_GITHUB_ACCESS_TOKEN=deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
Alternativamente, você pode especificar o token de acesso com a opção -gitlab-access-token ou -github-access-token na linha de comando, mas cuidado com o histórico do seu shell!