Skip to content

Dieses Werkzeug ist weder mit GitHub, Inc. oder der Microsoft Corporation verbunden noch von ihnen unterstützt oder gesponsert. GitHub und GitHub Actions sind Marken von GitHub, Inc. Andere Namen sind Marken ihrer jeweiligen Inhaber.

Audit-Log-Forensik · direkt im Browser

Wurde unsere GitHub-Organisation kompromittiert?

Legen Sie Ihre GitHub-Audit-Log-Exporte ab — und, falls vorhanden, Git-Events und Actions-Laufprotokolle — und erhalten Sie ein Urteil, eine Zeitleiste des Supply-Chain-Vorfalls und eine Maßnahmenliste. Analyse im Browser mit WebAssembly: nichts wird hochgeladen.

  • 31 Erkennungsregeln
  • Rust → WebAssembly
  • kein Upload

Audit-Log-Exporte hier ablegen

Audit-Log der Organisation oder des Enterprise (JSON-/CSV-Export, REST-API-Ausgabe, Streaming .json.log.gz), Git-Events-Export (.json.gz), Actions-Protokollarchive (.zip), Secret-Scanning-Warnungen (JSON). Einzelne Dateien, Ordner oder ZIPs — auch mehrere gleichzeitig.

Das Beispiel ist ein fiktiver Vorfall (Organisation „northwind-labs“): das Token eines Entwicklers, von einem Infostealer gestohlen und von einem VPS aus wiederverwendet.

Läuft vollständig im Browser. Ihre Logs verlassen dieses Gerät nie. · Unabhängiges Werkzeug — nicht mit GitHub verbunden.

So kommen Sie an Ihre Daten

Von null zur Datei in der Ablagezone in etwa zwei Minuten. Beginnen Sie mit dem ersten Tab: Er funktioniert mit jedem Plan.

  1. 1. SammelnAudit-Log exportieren (siehe unten)
  2. 2. AblegenDatei, Ordner oder ZIP, im Tool
  3. 3. Bleibt lokalAnalyse im Browser, nichts wird hochgeladen

Audit-Log der Organisation, über die Weboberfläche

VoraussetzungOrganisationsinhaber. Jeder Plan (Free, Team, Enterprise Cloud).

  1. Öffnen Sie auf GitHub die Organisation → Settings → Archive → Logs → Audit log.
  2. Optional: Datumsfilter ins Suchfeld eingeben, zum Beispiel created:>=2026-09-01, und Enter drücken.
  3. Klicken Sie auf Export → JSON (CSV geht auch, JSON behält verschachtelte Felder).
  4. Legen Sie die heruntergeladene .json-Datei im Tool ab.

Ein verdächtiger Workflow-Lauf? Nehmen Sie auch seine Logs mit

VoraussetzungLesezugriff auf das Repository. Jeder Plan.

  1. Repository → Actions → den Lauf öffnen.
  2. Menü ⋯ (oben rechts) → Download log archive.
  3. Das ZIP unverändert zusammen mit dem Audit-Log ablegen.

Stolperfallen

  • Aufbewahrung: 180 Tage für das Audit-Log, 7 Tage für Git-Events, standardmäßig 90 Tage für Actions-Logs. Heute exportieren, Git-Events zuerst.
  • Der Web-Export enthält keine Git-Events und bricht bei 100 MB komprimiert oder 10 Minuten Verarbeitung ab: Lange Zeiträume mit created:>= / created:<= aufteilen. Überlappungen schaden nicht.
  • Keine IP-Adressen, solange kein Inhaber die IP-Anzeige aktiviert hat (Enterprise Cloud): Ohne sie können die Erkennungen für neue IPs und Länder nicht greifen. Zeiten sind in UTC.

Was dieses Werkzeug tut

GitHub ist oft der erste Brückenkopf in die Cloud: Ein einziges gestohlenes Personal Access Token gibt dem Angreifer Ihren Quellcode, Ihre CI/CD-Pipelines und — über Actions-Secrets — Ihre Cloud-Konten. Das Audit-Log der Organisation hält das meiste davon fest: wer sich mit welchem Token von welcher IP authentifiziert, was geklont und welche Einstellung geändert hat.

Dieses Werkzeug liest diese Exporte im Browser, wertet einen Satz veröffentlichter Erkennungsregeln aus und liefert ein Gesamturteil (Unauffällig / Verdächtig / Kompromittiert), die Befunde mit Beweisen und MITRE-ATT&CK-Techniken, eine Vorfall-Zeitleiste, eine Sicht nach Entitäten (Akteure, Tokens, IPs, Repositories, Workflows, Runner, Apps) und eine Maßnahmenliste.

Was Sie ablegen können

  • Audit-Log der Organisation oder des Enterprise, aus der Weboberfläche exportiert (JSON oder CSV).
  • REST-API-Ausgabe (GET /orgs/{org}/audit-log, mit include=all für Git-Events), Seiten verkettet oder einzeln.
  • Audit-Log-Streaming-Dateien (Amazon S3, Azure Blob, Google Cloud Storage): Struktur YYYY/MM/DD/HH/MM/<uuid>.json.log.gz, gzip-komprimierte JSON Lines — legen Sie den ganzen Ordner ab.
  • Git-Events-Export (export-<enterprise>-<timestamp>.json.gz): git.clone, git.fetch und git.push mit Token-Metadaten.
  • Protokollarchive von GitHub-Actions-Läufen (das ZIP aus „Download log archive“).
  • Secret-Scanning-Warnungen, wie sie die REST-API liefert (JSON).

Was erkannt wird

Erkennungen sind Daten, kein Code: Jede Regel ist ein prüfbarer JSON-Eintrag (Bedingungen, Schwelle oder Referenz, Schweregrad, ATT&CK-Techniken, Maßnahmen) mit positiven und negativen Testfällen. Die Regeln dieser Version:

RegelSchweregradATT&CK
Workflow-Schritt kodiert oder verschickt Secrets
actions-secret-exfil
KritischT1552.001, T1567
Token aus einem neuen Land verwendet
token-new-country
HochT1550.001, T1078.004
Massen-Klonen von Repositories
git-clone-burst
HochT1213.003
Repository öffentlich gemacht
repo-made-public
HochT1567
Repository nach außen übertragen
repo-transferred
HochT1537
Mehrere Repositories gelöscht
repo-mass-delete
HochT1485
Owner der Organisation oder des Enterprise hinzugefügt
owner-granted
HochT1098.003
Zwei-Faktor-Pflicht deaktiviert
two-factor-disabled
HochT1556
SAML-SSO deaktiviert oder umkonfiguriert
sso-changed
HochT1556
IP-Zulassungsliste deaktiviert
ip-allowlist-disabled
HochT1562.007
Audit-Log-Streaming entfernt oder geändert
audit-stream-changed
HochT1562.008
Branch-Schutz oder Ruleset entfernt
branch-protection-removed
HochT1562
Schutz einer Deployment-Umgebung entfernt
environment-protection-removed
HochT1562
Konto aus einem neuen Land aktiv
actor-new-country
MittelT1078.004
Viele Quellcode-Archive heruntergeladen
archive-download-burst
MittelT1213.003
Admin-Zugriff an einen Collaborator vergeben
collaborator-admin
MittelT1098
Einschränkungen für Drittanbieter-Apps deaktiviert
oauth-restrictions-disabled
MittelT1562
Richtlinie für Personal Access Tokens geschwächt
pat-policy-weakened
MittelT1562
Branch-Schutz umgangen
branch-protection-override
MittelT1562
Selbst gehosteter Runner registriert
self-hosted-runner-registered
MittelT1072
Lange kodierte Zeichenkette in einem Workflow-Protokoll
actions-encoded-output
MittelT1552.001, T1027
Secret Scanning hat ein geleaktes Secret gefunden
secret-leak-alert
MittelT1552.001
Push-Schutz für Secrets umgangen
push-protection-bypass
MittelT1552.001
SSH- oder Deploy-Key hinzugefügt
deploy-key-added
MittelT1098.004
Token von einer neuen IP-Adresse verwendet
token-new-ip
NiedrigT1550.001
Forken privater Repositories erlaubt
private-forking-enabled
NiedrigT1537
Actions-Secret erstellt oder geändert
actions-secret-created
Niedrig
Workflow-Lauf von einem nie gesehenen Branch
workflow-new-branch
NiedrigT1677
Fine-grained Token angefragt oder freigegeben
fine-grained-token-granted
NiedrigT1550.001
App installiert oder OAuth-App genehmigt
app-authorized
NiedrigT1528
Webhook erstellt
webhook-created
NiedrigT1567

Wie das Urteil zustande kommt

  • Kompromittiert: mindestens ein kritischer Befund (z. B. von einem Workflow ausgegebene Secrets) oder mehrere verschiedene Befunde mit hohem Schweregrad zu demselben Akteur, Token oder derselben IP-Adresse.
  • Verdächtig: mindestens ein Befund mit hohem oder mittlerem Schweregrad.
  • Unauffällig: kein Befund über niedrig. Das gilt nur für den Inhalt der Logs — prüfen Sie die Hinweise zur Abdeckung (IP-Anzeige, Git-Events, Token-Metadaten) und den abgedeckten Zeitraum.

Wenn Cloud-Schlüssel geleakt wurden

Actions-Secrets sind meist Cloud-Zugangsdaten. Tauchen sie in den Beweisen auf, ist der nächste Schritt das Cloud-Konto selbst — weiter mit den Schwesterwerkzeugen dieser Reihe:

Einschränkungen

  • Das Audit-Log speichert keine Dateiinhalte: Ein veränderter Workflow wird aus Läufen abgeleitet (neuer Branch, im Protokoll ausgegebene Secrets), nicht aus dem Diff. Prüfen Sie die Historie von .github/workflows selbst.
  • Ohne „Display IP addresses“ enthalten Exporte kein actor_ip und nur begrenzte Standortdaten: IP-basierte Erkennungen können nicht anschlagen.
  • Git-Events (Clones, Fetches, Pushes) werden nur 7 Tage aufbewahrt und sind nicht im JSON-/CSV-Export der Weboberfläche enthalten: Ohne sie bleibt Massen-Klonen unsichtbar.
  • Die Regeln sind Heuristiken mit Schwellen (10 in etwa einer Stunde geklonte Repositories, eine 24-Stunden-Referenz für neue IPs und Länder): Passen Sie sie an Ihre Organisation an. Ein unauffälliges Urteil ist kein Beweis für die Abwesenheit eines Angriffs.
  • Die Tabelle zeigt die ersten 100.000 Ereignisse; analysiert werden alle. Sicherheitsprotokolle persönlicher Konten sind nicht abgedeckt.

FAQ

Werden meine Audit-Logs irgendwohin hochgeladen?

Nein. Der Analysator ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser; Dateien werden als Stream von der Festplatte gelesen und lokal dekomprimiert. Es gibt keinen Upload-Endpunkt, und das Werkzeug funktioniert nach dem Laden der Seite auch offline.

Woran erkenne ich, dass ein GitHub-Token gestohlen wurde?

Achten Sie auf denselben hashed_token von einer neuen IP-Adresse oder aus einem neuen Land, git.clone-Serien über viele Repositories und Token-Aktivität außerhalb der Arbeitszeiten des Besitzers. Das Audit-Log speichert hashed_token, programmatic_access_type und token_scopes für per Token authentifizierte Ereignisse; dieses Werkzeug bildet für jedes Token eine Referenz und markiert neue Standorte.

Wie finde ich heraus, zu welchem Token ein hashed_token gehört?

hashed_token ist der Base64-kodierte SHA-256-Hash des Tokens. Mit einem Kandidaten-Token berechnen Sie ihn so: echo -n TOKEN | openssl dgst -sha256 -binary | base64 — und suchen dann im Audit-Log nach hashed_token:"WERT". Enterprise-Owner können auch das Credential-Inventar exportieren, das die hashed_token-Werte enthält.

Warum sehe ich keine git.clone-Ereignisse?

Git-Events sind nicht im JSON-/CSV-Export der Weboberfläche enthalten. Holen Sie sie über das Menü „Export Git Events“ des Enterprise, die REST-API mit include=git oder include=all oder das Audit-Log-Streaming — und zwar schnell: Sie werden nur 7 Tage aufbewahrt.

Kann ein Workflow Secrets leaken, obwohl GitHub sie maskiert?

Ja. GitHub ersetzt bekannte Secret-Werte in Protokollen durch ***, aber ein Skript, das sie Base64-kodiert (doppelt oder umgedreht), gibt eine unmaskierte Zeichenkette aus, die sich zum Secret zurückdekodieren lässt. Dieses Werkzeug markiert Skripte, die Secrets oder die Umgebung an Encoder oder externe Endpunkte weiterleiten, sowie lange kodierte Zeichenketten in der Ausgabe.

Ist das ein offizielles GitHub-Werkzeug?

Nein. Es ist ein unabhängiges Werkzeug, weder mit GitHub, Inc. verbunden noch von ihr unterstützt. Es liest die dokumentierten Exportformate des Audit-Logs.

Wie es weitergeht

Lautet das Urteil Verdächtig oder Kompromittiert, beginnen Sie mit der vom Werkzeug erzeugten Maßnahmenliste, bewahren Sie die Original-Exporte schreibgeschützt auf und folgen Sie der offiziellen GitHub-Dokumentation (auf docs.github.com):

Offizielle Dokumentation von GitHub, Inc.; diese Website ist davon unabhängig.

Was das GitHub-Audit-Log nicht erfasst: 180 bzw. 7 Tage Aufbewahrung, Plangrenzen für API und Git-Events, verborgene IPs, keine Dateiinhalte, kein Secret-Lesen.
Ein fiktiver Supply-Chain-Angriff auf GitHub, durchgehend untersucht: gestohlenes PAT, 38 Repos geklont, AWS-Keys per Workflow geleakt, Branch-Schutz entfernt.
AWS-, Google-Cloud- oder Azure-Keys aus GitHub Actions oder einem Repo geleakt: Key sperren, Nutzung in Cloud-Audit-Logs verfolgen, Keys durch OIDC ersetzen.

Dieses Werkzeug ist weder mit GitHub, Inc. oder der Microsoft Corporation verbunden noch von ihnen unterstützt oder gesponsert. GitHub und GitHub Actions sind Marken von GitHub, Inc. Andere Namen sind Marken ihrer jeweiligen Inhaber.