
Un modo per monitorare continuamente le informazioni sensibili che potrebbero essere esposte su Github
So che esistono molti altri strumenti disponibili per trovare informazioni sensibili attualmente trapelate su Github, io stesso ne uso ancora alcuni. Tuttavia, ritengo che manchino ancora alcune funzionalità come:
Altri strumenti sono più focalizzati sulla ricerca di informazioni sensibili presenti in un repository di cui è stato fornito l'indirizzo Git. Solo una manciata di strumenti simili, al momento in cui ho sviluppato GitMonitor, si concentrava prima sul trovare i repository di cui hai bisogno, trovare tutti i repository rilevanti, e poi verificare se in essi sono presenti informazioni sensibili.
Oltre alle regole per verificare le informazioni sensibili, lo strumento necessita anche di regole per cercare i repository di interesse. I repository da considerare possono essere quelli che contengono parole chiave relative all'azienda o al progetto.
Se sei un cacciatore di bug bounty, ti interesseranno solo pochi target alla volta. Tuttavia, se sei un ingegnere della sicurezza per un'azienda, devi sapere quando appare un repository relativo alla tua azienda o al tuo progetto e potrebbe contenere informazioni sensibili. Tali repository possono apparire ovunque su Github, con qualsiasi nome e pubblicati da qualsiasi account. Dovresti ricevere un avviso non appena un repository del genere appare (monitoraggio continuo).
Lo strumento ha un meccanismo di reporting flessibile.
Ecco perché ho creato questo strumento - GitMonitor. GitMonitor utilizza due diversi set di regole per trovare ciò di cui hai bisogno. Il set di regole di ricerca cercherà i repository che potrebbero essere correlati alla tua organizzazione o a progetti interni, o qualsiasi altra cosa, clonerà i repository corrispondenti in locale. Quindi, Il set di regole di filtraggio sensibili verificherà se in quei repository esistono informazioni sensibili. Infine, lo strumento segnalerà tramite Slack. Puoi utilizzare questo strumento con Cronjob per creare un sistema di monitoraggio continuo per tracciare le informazioni sensibili relative alla tua organizzazione che trapelano su Github e ricevere i risultati tramite Slack.
Aggiornamento 15 giugno 2020: Abbiamo aggiornato alla versione 1.0. Questa versione corregge alcuni bug in modo che GitMonitor possa funzionare in modo stabile. Ti consigliamo di eseguire un git pull se stai utilizzando versioni precedenti.
Utilizza due diversi set di regole: un set di regole di ricerca (yaml) per cercare il repository di interesse, e un set di regole di filtraggio (regex) per verificare se tali contenitori di interesse contengono informazioni sensibili. Le Regole di Ricerca (yaml) e le Regole di Filtraggio (regex) sono definite separatamente. Gli utenti possono definire regole yaml e regex in modo facile e intuitivo.
Set di regole di ricerca: Puoi creare molte regole diverse utilizzando diversi file yaml. Le regole ti permettono di definire in modo flessibile come desideri cercare i repository, puoi usare parole chiave, o parole chiave associate al linguaggio, al nome del file e all'estensione, oppure puoi anche definire di escludere repository dalla ricerca in base a linguaggio, nome del file o estensione. Le parole chiave verranno cercate attraverso i nomi dei repository, i codici dei repository e anche i commit.
Set di regole di filtraggio: Puoi aggiungere o modificare facilmente le regex per trovare informazioni sensibili che potrebbero esistere nei repository.
Il primo repository che corrisponde al set di regole di ricerca verrà clonato in locale. Successivamente, il set di regole di filtraggio verificherà se questo repository contiene informazioni sensibili. Dopo aver terminato la verifica delle informazioni sensibili, GitMonitor registrerà i risultati e cancellerà automaticamente questo repository in locale per risparmiare spazio prima di continuare a ripetere questo processo fino a quando tutti i repository rilevanti non saranno stati trovati e verificati.

> python3 -m pip install -r requirements.txt
Assicurati di avere PyYAML versione 5x o superiore installata (pip3 install --ignore-installed PyYAML)
La seguente tabella spiega il significato di ogni chiave nel file di configurazione:
> export GIT_USERNAME=il tuo nome utente Github
> export GIT_PASSWORD=la tua chiave personale o password Github
Oppure definisci le informazioni sulle credenziali nel file di configurazione (sconsigliato):
Esempio di file di configurazione quando definisci le credenziali nelle variabili d'ambiente:

Puoi creare molti file yaml diversi come il modello di regola per definire più parole chiave. Un file di regole apparirà come nell'immagine qui sotto:

> python3 gitmonitor.py
Ad esempio:

Molte aree di questo progetto potrebbero essere migliorate e modificate in modo significativo durante il refactoring del codice corrente e l'implementazione di nuove funzionalità. Il feedback con miglioramenti e le pull request da parte della comunità saranno molto apprezzati e accettati.
In generale, seguiamo il flusso di lavoro Git "fork-and-pull".
NOTA: Assicurati di unire l'ultimo aggiornamento da "upstream" prima di fare una pull request!
Report tramite Slack.
Questo strumento può essere programmato tramite Cronjob per un monitoraggio continuo.
| Chiave | Descrizione |
|---|
| user | Nome utente Github - Lascia vuoto se hai impostato le credenziali Github tramite variabili d'ambiente |
| pass | Password Github - Lascia vuoto se hai impostato le credenziali Github tramite variabili d'ambiente |
| webhooks | Token del Webhook in entrata per inviare messaggi da GitMonitor a Slack |
| rule | La directory che contiene il set di regole di ricerca |
| source | La directory per scaricare il repository |
| log | La directory conterrà il file JSON che registra lo stato dopo ogni scansione, questo file JSON viene utilizzato per confrontare i risultati tra scansioni (per identificare nuovi repository) |
| start | Definisce il banner per l'inizio della scansione e il banner per il risultato della scansione del Set di Regole di Filtraggio Sensibili - Verrà mostrato nei risultati inviati a Slack |
| end | Definisce il banner per la fine della scansione e il banner per il risultato della scansione del Set di Regole di Ricerca - Verrà mostrato nei risultati inviati a Slack |
| all | Definisce il banner per mostrare tutti i repository - Verrà mostrato nei risultati inviati a Slack |