
Semi-automato, basato su feedback, per la ricerca rapida attraverso montagne di dati pubblici su GitHub alla ricerca di segreti sensibili.
GitGot è uno strumento semi-automatizzato e basato sul feedback che consente agli utenti di cercare rapidamente tra enormi quantità di dati pubblici su GitHub alla ricerca di segreti sensibili.
Durante le sessioni di ricerca, gli utenti forniscono feedback a GitGot per ignorare determinati risultati, e GitGot riduce l'insieme dei risultati. Gli utenti possono mettere in blacklist file per nome file, nome repository, nome utente o tramite un match fuzzy del contenuto del file.
Le blacklist generate da sessioni precedenti possono essere salvate e riutilizzate per query simili (ad es., example.com vs subdomain.example.com vs Example Org). Le sessioni possono anche essere messe in pausa e riprese in qualsiasi momento.
Maggiori informazioni sul design semi-automatizzato con intervento umano sono disponibili qui: https://bishopfox.com/blog/semi-automated-vs-automated-security-tools.
[1] Installare la dipendenza ssdeep per l'hashing fuzzy.
Ubuntu/Debian (o equivalente per la tua distribuzione):
apt-get install python3-dev libfuzzy-dev ssdeep
o, per Mac OSX:
brew install ssdeep
Per Windows o distribuzioni *nix senza il pacchetto ssdeep, consultare le istruzioni di installazione di ssdeep.
[2] Dopo aver installato ssdeep, installare le dipendenze Python usando pip:
pip3 install -r requirements.txt
Eseguire gitgot-docker.sh per creare l'immagine Docker di GitGot (se non esiste già) ed eseguire la versione containerizzata dello strumento GitGot.
All'invocazione, gitgot-docker.sh creerà e monterà le directory logs e states dalla directory di lavoro corrente dell'host. Se gitgot-docker.sh viene eseguito dalla directory del progetto GitGot, aggiornerà il container Docker con le modifiche a gitgot.py o checks/:
./gitgot-docker.sh -q example.com
(Vedere gitgot-docker.sh per i comandi docker specifici)
GitHub richiede un token per fini di limitazione delle richieste. Creare un token API GitHub con nessun permesso/nessun ambito. Questo sarà equivalente all'accesso pubblico a GitHub, ma consentirà di utilizzare l'API di ricerca di GitHub. Impostare questo token all'inizio di gitgot.py come mostrato di seguito:
ACCESS_TOKEN = "<NO-PERMISSION-GITHUB-TOKEN-HERE>"
(In alternativa, questo token può essere impostato come variabile d'ambiente GITHUB_ACCESS_TOKEN)
Dopo aver aggiunto il token, si è pronti per partire:
# 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
Le query di GitGot vengono alimentate direttamente nell'API di ricerca del codice di GitHub, quindi consultare la documentazione di GitHub per una sintassi di ricerca più avanzata.
/(secretToken))