
Eine Möglichkeit, sensible Informationen, die auf GitHub offengelegt werden könnten, kontinuierlich zu überwachen.
Ich weiß, dass es viele andere Tools gibt, die derzeit auf Github durchgesickerte sensible Informationen finden, und ich selbst nutze einige davon. Allerdings fehlen ihnen meiner Meinung nach einige Funktionen:
Andere Tools konzentrieren sich mehr darauf, sensible Informationen zu finden, die in einem Repository vorhanden sind, dessen Git-Adresse in das Tool eingegeben wurde. Es gab nur eine Handvoll ähnlicher Tools zum Zeitpunkt der Entwicklung von GitMonitor, die sich darauf konzentrierten, zuerst die Repositorys zu finden, die Sie beachten müssen, alle relevanten Repositorys zu finden und dann zu überprüfen, ob darin sensible Informationen vorhanden sind.
Zusätzlich zu Regeln für die Überprüfung sensibler Informationen benötigt das Tool auch Regeln, um nach interessanten Repositorys zu suchen. Die zu berücksichtigenden Repositorys können solche sein, die Schlüsselwörter enthalten, die mit dem Unternehmen oder dem Projekt zusammenhängen.
Wenn Sie ein Bug-Bounty-Jäger sind, sind Sie nur an einigen Zielen gleichzeitig interessiert. Wenn Sie jedoch ein Sicherheitsingenieur in einem Unternehmen sind, müssen Sie wissen, wann ein Repository erscheint, das mit Ihrem Unternehmen oder Projekt zusammenhängt, und das möglicherweise sensible Informationen enthält. Solche Repositorys können überall auf Github mit beliebigem Namen und von jedem Konto veröffentlicht werden. Sie sollten auch eine Benachrichtigung erhalten, sobald ein solches Repository erscheint (kontinuierliche Überwachung).
Das Tool verfügt über einen flexiblen Berichtsmechanismus.
Deshalb habe ich dieses Tool erstellt - GitMonitor. GitMonitor verwendet zwei verschiedene Regelsätze, um das zu finden, was Sie brauchen. Der Suchregelsatz durchsucht Repositorys, die mit Ihrer Organisation, internen Projekten oder anderen Dingen in Zusammenhang stehen könnten, und klont übereinstimmende Repositorys lokal. Anschließend wird der Filterregelsatz für sensible Informationen verwendet, um zu prüfen, ob in diesen Repositorys sensible Informationen vorhanden sind. Schließlich meldet das Tool die Ergebnisse über Slack. Sie können dieses Tool mit Cronjob verwenden, um ein kontinuierliches Überwachungssystem zu erstellen, das sensible Informationen im Zusammenhang mit Ihrer Organisation verfolgt, die auf Github durchgesickert sind, und die Ergebnisse über Slack zu erhalten.
Update 15. Juni 2020: Wir haben auf Version 1.0 aktualisiert. Diese Version behebt einige Fehler, damit Gitmonitor stabil funktioniert. Wir empfehlen, dass Sie einen Git-Pull durchführen, wenn Sie frühere Versionen verwenden.
Verwendung von zwei verschiedenen Regelsätzen: einem Suchregelsatz (YAML) zum Suchen nach dem interessierenden Repository und einem Filtersatz (Regex) zum Überprüfen, ob diese interessierenden Container sensible Informationen enthalten. Suchregeln (YAML) und Filterregeln (Regex) werden getrennt definiert. Benutzer können YAML-Regeln und Regex einfach und intuitiv definieren.
Suchregelsatz: Sie können viele verschiedene Regeln erstellen, indem Sie verschiedene YAML-Dateien verwenden. Die Regeln ermöglichen es Ihnen, flexibel zu definieren, wie Sie nach Repositorys suchen möchten. Sie können Schlüsselwörter oder Schlüsselwörter in Verbindung mit der Sprache, dem Dateinamen und der Erweiterung verwenden, oder Sie können auch festlegen, dass Repositorys basierend auf Sprache, Dateiname oder Erweiterung von der Suche ausgeschlossen werden. Schlüsselwörter werden in den Namen der Repositorys, im Code der Repositorys und auch in den Commits durchsucht.
Filterregelsatz: Sie können Regex einfach hinzufügen oder ändern, um sensible Informationen zu finden, die möglicherweise in Repositorys vorhanden sind.
Das erste Repository, das dem Suchregelsatz entspricht, wird lokal geklont. Anschließend überprüft der Filterregelsatz, ob in diesem Repository sensible Informationen vorhanden sind. Nach Abschluss der Überprüfung zeichnet Gitmonitor die Ergebnisse auf und löscht dieses Repository automatisch lokal, um Speicherplatz zu sparen, bevor es diesen Vorgang wiederholt, bis alle relevanten Repositorys gefunden und überprüft wurden.
Berichterstattung über Slack.

> python3 -m pip install -r requirements.txt
Stellen Sie sicher, dass PyYAML in Version 5x oder höher installiert ist (pip3 install --ignore-installed PyYAML)
Die folgende Tabelle erklärt die Bedeutung jedes Schlüssels in der Konfigurationsdatei:
> export GIT_USERNAME=Ihr Github-Benutzername
> export GIT_PASSWORD=Ihr Github-Personal-Access-Token oder Passwort
Oder Anmeldedaten in der Konfigurationsdatei definieren (Nicht empfohlen):
Beispiel für eine Konfigurationsdatei, wenn Sie die Anmeldedaten in Umgebungsvariablen definiert haben

Sie können mehrere verschiedene YAML-Dateien wie die Regelvorlage erstellen, um mehrere Schlüsselwörter zu definieren. Eine Regeldatei sieht wie im folgenden Bild aus:

> python3 gitmonitor.py
Zum Beispiel:

Viele Bereiche dieses Projekts könnten verbessert und erheblich verändert werden, während der vorhandene Code umgestaltet und neue Funktionen implementiert werden. Rückmeldungen mit Verbesserungsvorschlägen und Pull-Requests aus der Community werden sehr geschätzt und angenommen.
Im Allgemeinen folgen wir dem 'Fork-and-Pull'-Git-Workflow.
HINWEIS: Stellen Sie sicher, dass Sie den neuesten Stand von 'upstream' mergen, bevor Sie einen Pull-Request erstellen!
Dieses Tool kann per Cronjob für die kontinuierliche Überwachung eingeplant werden.
| Schlüssel | Beschreibung |
|---|
| user | Github-Benutzername - Leer lassen, wenn Sie Github-Anmeldedaten über Umgebungsvariablen festgelegt haben |
| pass | Github-Passwort - Leer lassen, wenn Sie Github-Anmeldedaten über Umgebungsvariablen festgelegt haben |
| webhooks | Incoming-Webhook-Token zum Senden von Nachrichten von GitMonitor an Slack |
| rule | Das Verzeichnis, das den Suchregelsatz enthält |
| source | Das Verzeichnis zum Herunterladen des Repositorys |
| log | Das Verzeichnis enthält die JSON-Datei, die den Status nach jedem Scan aufzeichnet. Diese JSON-Datei wird verwendet, um Ergebnisse zwischen Scans zu vergleichen (um neue Repositorys zu identifizieren) |
| start | Definiert Banner für den Startscan und Banner für das Ergebnis des Sensitive-Filtering-Ruleset-Scans - Wird in den an Slack gesendeten Ergebnissen angezeigt |
| end | Definiert Banner für den Endscan und Banner für das Ergebnis des Searching-Ruleset-Scans - Wird in den an Slack gesendeten Ergebnissen angezeigt |
| all | Definiert Banner für die Anzeige aller Repositorys - Wird in den an Slack gesendeten Ergebnissen angezeigt |