
Uno strumento di sicurezza multiforme che sfrutta le API REST pubbliche di GitHub per OSINT, Forensics, Pentesting e altro ancora.
Gitxray (abbreviazione di Git X-Ray) è uno strumento di sicurezza multiforme progettato per l'uso su repository GitHub. Può servire a molti scopi, tra cui OSINT e Forensics. gitxray sfrutta le API REST pubbliche di GitHub per raccogliere informazioni che altrimenti richiederebbero molto tempo per essere ottenute manualmente. Inoltre, cerca informazioni in luoghi non convenzionali.

Gitxray può essere utilizzato, ad esempio, per:
Trovare informazioni sensibili nei profili dei collaboratori divulgate accidentalmente, ad esempio, in chiavi PGP armate o nomi di chiave.
Identificare attori malintenzionati in un repository. Puoi individuare account co-proprietari o condivisi, nonché ispezionare eventi pubblici per individuare Stargazer falsi.
Identificare repository falsi o infetti. Può rilevare date di commit manomesse, nonché, ad esempio, asset di Release aggiornati dopo il rilascio.
Casi d'uso forensi, come filtrare i risultati per data per verificare cos'altro è successo il giorno di un incidente.
E molto altro! Esegui una radiografia completa per raccogliere una tonnellata di dati.
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
Si prega di fare riferimento alla documentazione per ulteriori casi d'uso e informazioni introduttive.
Gitxray gestisce con garbo i limiti di velocità e può funzionare immediatamente senza un token API GitHub, ma probabilmente raggiungerai i limiti di velocità abbastanza rapidamente (un repository di piccole o medie dimensioni con 10 o più collaboratori potrebbe impiegare ore per essere completato mentre attende il ripristino dei limiti di velocità). Questo è dettagliato da GitHub nella loro documentazione qui.
Creazione di un semplice token di sola lettura con ambito per i repository PUBBLICI ti aiuterà comunque ad aumentare notevolmente quelle restrizioni. Se non hai fretta o puoi lasciare gitxray in esecuzione, potrai utilizzare la sua piena capacità, poiché mette in pausa l'esecuzione mentre attende il ripristino dei limiti.
Potrai quindi caricare il token in modo sicuro utilizzando (impedisce la visualizzazione del token a schermo o la registrazione nella cronologia della shell):
read -rs GH_ACCESS_TOKEN
export
Gitxray può opzionalmente utilizzare l'API di VirusTotal per controllare gli host identificati con l'API di ricerca codice di GitHub, ma richiede una chiave API di VirusTotal per funzionare. Le istruzioni su come ottenere la tua chiave API di VirusTotal sono disponibili su: https://docs.virustotal.com/docs/please-give-me-an-api-key
Purtroppo, le chiavi API personali sono (ad oggi) limitate da VirusTotal a 500 ricerche al giorno.
Una volta ottenuta la chiave API, puoi caricarla in sicurezza nel tuo ambiente con:
read -rs VT_API_KEY
export
gitxray è stato scritto senza l'uso di dipendenze da pacchetti esterni oltre alla libreria requests.
gitxray è su PyPI e può essere installato e aggiornato con:
pip install gitxray --upgrade
Una volta installato, esegui semplicemente gitxray dalla riga di comando digitando:
gitxray -h
gitxray -o https://github.com/kulkansecurity

Puoi anche eseguire gitxray direttamente clonando o scaricando il suo repository GitHub ed eseguendo.
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
Uno dei seguenti deve essere specificato:
-r, --repository [URL] - Specifica un singolo repository da controllare. L'URL può iniziare opzionalmente con https://github.com/. Esempio: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - Fornisce un percorso file contenente un elenco di repository, ciascuno su una nuova riga. Il file deve esistere. Esempio: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - Specifica un'organizzazione per controllare tutti i repository sotto quell'organizzazione. L'URL può iniziare opzionalmente con https://github.com/. Esempio: --organization https://github.com/exampleOrg
Troverai questi argomenti opzionali ma molto utili nell'uso comune di gitxray.
-l, --list - Elenca i collaboratori se è specificato un repository, o elenca i repository se è specificata un'organizzazione. Utile per concentrarsi ulteriormente su entità specifiche. Esempio: --list
-c, --contributor [USERNAMES] - Un elenco separato da virgole di nomi utente GitHub su cui concentrarsi all'interno del repository o dell'organizzazione specificati. Esempio: --contributor user1,user2
-f, --filters [KEYWORDS] - Parole chiave separate da virgole per filtrare i risultati, come 'user_input', 'association' o 'mac'. Esempio: --filters user_input,association,mac
-out, --outfile [FILEPATH] - Specifica il percorso del file per il log di output. Non può essere una directory. Esempio: --outfile ./output.log
-outformat, --output-format [FORMAT] - Imposta il formato per il file di log. I formati supportati sono html, text e json. Il valore predefinito è html. Esempio: --output-format json
--shush - Rende Gitxray un po' più silenzioso non visualizzando l'output relativo all'avanzamento. Esempio: --shush--debug - Abilita la modalità debug per un output dettagliato ed esteso. Esempio: --debugL'utente è l'unico responsabile di garantire che questo strumento sia utilizzato in conformità con le leggi e i regolamenti applicabili, inclusa l'ottenimento della corretta autorizzazione per la scansione del repository e la distribuzione di qualsiasi risultato generato. L'uso non autorizzato o la condivisione dei risultati potrebbe violare leggi locali, nazionali o internazionali.