Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
MicroburstSecretsHunter — Durchsucht exportierte Azure-Domain-Dumps nach Klartext-Passwörtern, Verbindungszeichenfolgen, Speicherschlüsseln und anderen Geheimnissen; erstellt geschwärzte CSV/HTML-Berichte für schreibgeschützte Audit-Workflows. | Kitploit
Tools/GitHubGitHub/rootsecdev/microburstsecretshunter
DefensivwerkzeugeStatische AnalyseKonfigurationsprüfungCloud-SicherheitSecret-ErkennungFehlkonfigurationDatenbanksicherheit
GitHubrootsecdev/microburstsecretshunter

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

MicroburstSecretsHunter

Durchsucht exportierte Azure-Domain-Dumps nach Klartext-Passwörtern, Verbindungszeichenfolgen, Speicherschlüsseln und anderen Geheimnissen; erstellt geschwärzte CSV/HTML-Berichte für schreibgeschützte Audit-Workflows.

Repository anzeigen
24120vor 1 MonatVon Kitploit geprüft
Teilen
# MicroBurst Secrets Hunter

Ein PowerShell-Scanner, der [MicroBurst](https://github.com/NetSPI/MicroBurst)-Ausgaben von `Get-AzDomainInfo` nach Klartext-Passwörtern, Schlüsseln, Verbindungszeichenfolgen und anderen Geheimnissen durchsucht, die niemals unverschlüsselt in einer Azure-Umgebung liegen sollten.

Entwickelt für **Read-only-Audit-Workflows**: Sie sammeln einen Domänen-Dump mit MicroBurst (Reader-Zugriff reicht für `Get-AzDomainInfo`), dann zeigen Sie mit diesem Tool auf den Ausgabeordner. Es greift **nicht** selbst auf Azure zu – es liest nur die Dateien, die Sie bereits exportiert haben. Geheimniswerte werden in jedem Bericht **geschwärzt**, sodass die Ausgabe bedenkenlos an Findings angehängt werden kann.

---

## Schnellstart

```powershell
# Diesen Ordner klonen / kopieren, dann aus einer PowerShell-Eingabeaufforderung:
.\Scan-MicroBurst.ps1 -Path .\MicroBurst-2026 -Verbose
```

Oder das Modul importieren und das Cmdlet direkt verwenden:

```powershell
Import-Module .\MicroBurstSecretsHunter.psd1 -Force
Invoke-MBSecretScan -Path .\MicroBurst-2026
```

Berichte werden in einen Zeitstempel-Ordner (`MBSecretScan-<timestamp>`) im aktuellen Verzeichnis geschrieben, sofern Sie nicht `-OutputDirectory` angeben.

Standardmäßig wird jeder Wert **geschwärzt**, damit die Berichte sicher geteilt werden können. Die sichtbaren Zeichen sind auf ein Viertel der Wertlänge begrenzt (max. 4 führende + 2 nachgestellte Zeichen), und alles, was 8 Zeichen oder kürzer ist, wird durch eine Maske fester Breite ersetzt – ein typisches Passwort erscheint also als `********`, während ein 88 Zeichen langer Storage-Schlüssel als `AAAA**********AA` erkennbar bleibt. Kontextzeichenfolgen werden geschwärzt, *bevor* sie gekürzt werden, und jedes auf einer Zeile gefundene Geheimnis wird aus dem Kontext jedes Findings dieser Zeile entfernt, sodass in einem Bericht kein Klartext überlebt. Beim Triage von False Positives ist es oft schneller, den vollständigen Wert zu sehen – übergeben Sie **`-ShowSecrets`**, um ungeschwärzte Werte überall auszugeben (Konsole, CSV, HTML). Konsole und HTML tragen dann ein deutliches Warnbanner, und die Berichte müssen wie echtes Anmeldeinformationsmaterial behandelt werden:

```powershell
Invoke-MBSecretScan -Path .\dump -ShowSecrets        # Rohwerte, für lokales Triage
```

Funktioniert unter **Windows PowerShell 5.1** und **PowerShell 7+** (Windows, Linux, macOS).

---

## Was Sie erhalten

Jeder Lauf erzeugt drei Dinge:

| Ausgabe | Beschreibung |
| --- | --- |
| **Konsolenübersicht** | Farbcodierte Zählungen nach Schweregrad/Kategorie sowie die wichtigsten Critical/High-Findings. |
| **`findings.csv`** | Eine Zeile pro Finding (Schweregrad, Regel, Datei, Zeile, geschwärzter Wert, Kontext) für das Triage in Excel. Felder mit gescanntem Inhalt sind gegen Tabellenkalkulations-Formelinjektion geschützt. |
| **`report.html`** | Eigenständiger HTML-Bericht (keine externen Ressourcen) mit Schweregrad-Karten, Live-Textfilter und Schweregrad-Umschaltern – mit dem Kunden teilbar. |

Das Cmdlet gibt außerdem Finding-Objekte an die Pipeline aus, sodass Sie nachverarbeiten können:

```powershell
$f = Invoke-MBSecretScan -Path .\dump -Quiet
$f | Where-Object Severity -eq 'Critical' | Format-Table File,Line,RuleName
```

---

## Was erkannt wird

| Regel | Schweregrad | Beispielquelle in einem Dump |
| --- | --- | --- |
| SQL-/DB-Verbindungszeichenfolge mit eingebettetem Passwort | Critical | App Service-Einstellungen, `web.config`-Exporte |
| Azure Storage-Kontoverbindungszeichenfolge / 88-Zeichen-Schlüssel | Critical | App-Einstellungen, Storage-Exporte |
| Service Bus / Event Hub `SharedAccessKey` | Critical | Messaging-Ressourcenkonfigurationen |
| Cosmos DB-Kontoschlüssel | Critical | App-Einstellungen |
| PEM-Private-Key-Block | Critical | Key Vault / Zertifikatsexporte |
| Azure Redis Cache-Passwort | High | Cache-Verbindungszeichenfolgen |
| Azure AD-Clientgeheimnis (Post-2021-`…Q~…`-Format) | High | ARM-Vorlagen, App-Einstellungen |
| SAS-Token / `sig=`-Parameter | High | Storage-SAS-URLs |
| JWT-/Bearer-Token | High | Zwischengespeicherte Token, Konfigurationen |
| Zertifikats-/Schlüsseldatei vorhanden (`.pfx`, `.pem`, `.key`, …) | High | Überall im Dump |
| Generische `password`- / `pwd`-Zuweisung | High | Automation-Variablen, App-Einstellungen, ARM-Parameter |
| Generische `secret`- / `client_secret`-Zuweisung | High | App-Einstellungen, Vorlagen |
| AWS-Zugriffsschlüssel / GitHub- / Slack-Token | High/Mittel | Fremde Anmeldeinformationen in Azure-Apps |
| Generisches `api_key` / `access_key` / `connectionstring` | Mittel | App-Einstellungen |
| Zeichenfolge mit hoher Entropie (heuristisch) | Niedrig | Auffangnetz für unbekannte Schlüsselformate – **Opt-in** über `-IncludeEntropy` |

Der vollständige, bearbeitbare Regelsatz befindet sich in **`Private/Get-MBSignature.ps1`**. Jede Regel ist ein `[PSCustomObject]` mit diesen Feldern:

| Feld | Erforderlich | Zweck |
| --- | --- | --- |
| `Id`, `Name`, `Category`, `Severity` | ja | Identität sowie Art und Weise, wie das Finding gemeldet und sortiert wird. |
| `Pattern` | ja | Der reguläre Ausdruck. Wird pro Scan einmal kompiliert. |
| `ValueGroup` | ja | Welche Erfassungsgruppe das Geheimnis enthält (`0` = gesamter Treffer). Steuert die Schwärzung. |
| `MultiLine` | nein | Statt zeilenweise gegen den gesamten Dateitext auswerten (PEM-Blöcke). Jeder Treffer wird gemeldet, nicht nur der erste. |
| `CaseSensitive` | nein | Verzicht auf die Standardkompilierung mit `IgnoreCase`. Für Formate festlegen, die case-sensitiv definiert sind (`AKIA`, `ghp_`, `eyJ`, `Q~`) – ohne dies werden beliebig großgeschriebene Ähnlichkeiten als Treffer gewertet. |
| `Redact` | nein | Setzen Sie `$false`, wenn der erfasste Wert eher ein Label als ein Geheimnis ist (eine PEM-Headerzeile, ein Zertifikatsdateiname), damit er wörtlich erscheint, statt unlesbar maskiert zu werden. Standard ist Schwärzung. |

### Strukturierte CSV-Spaltenpaarung

`Get-AzDomainInfo` exportiert Automation-Kontovariablen und App-Einstellungen als `Name,Value[,Encrypted]`-Zeilen. Das Geheimnis befindet sich in der Spalte **Value**, während das Schlüsselwort, das es identifiziert (z. B. `ServiceAccountPwd`, `dbConnectionString`), in der Spalte **Name** steht – ein einfacher regulärer Ausdruck sieht sie also nie in derselben "Zeile", und das Schlüsselwort ist ohne Wortgrenze in einem zusammengesetzten Token vergraben.

Für `.csv`-/`.tsv`-Dateien führt der Scanner zusätzlich eine **strukturierte Spaltenpaarung** durch (`Private/Get-MBCsvFinding.ps1`):

- **Name/Value-Modus** – klassifiziert die *Name*-Zelle jeder Zeile; wenn sie sensibel ist und die *Value*-Zelle echte Daten enthält, wird sie gemeldet. Zeilen mit `Encrypted=True` werden übersprungen (der Wert ist kein Klartext).
- **Sensibler-Spalten-Modus** – wenn ein *Spaltenkopf* selbst sensibel ist (eine `Password`- oder `StorageKey`-Spalte), wird jede Zelle gemeldet, die kein Platzhalter ist.

Werte, die bereits von einer Regel mit hoher Konfidenz abgedeckt werden (Verbindungszeichenfolgen, Storage-Schlüssel, SAS), werden an den Rohzeilen-Durchlauf zur engeren Schwärzung übergeben, und Findings werden nach Kategorie dedupliziert, sodass dasselbe Geheimnis nie doppelt gemeldet wird. Wenn eine Datei nicht als CSV geparst werden kann, greift der Scanner automatisch auf den normalen Rohzeilen-Scan zurück.

#### Wertseitiger Scan (`-ScanValues`)

Die obige Paarung knüpft an den *Namen* einer Einstellung an. Um auch Geheimnisse zu erfassen, die unter einem bedeutungslosen Namen gespeichert sind (z. B. `Config1 = P@ssw0rd2026!`), übergeben Sie **`-ScanValues`**. Dabei wird der *Inhalt* von Wert-Zellen mit zwei konservativen Heuristiken mit **niedrigem Schweregrad** untersucht:

- **Passwortähnlich** – 8–64 Zeichen, keine Leerzeichen, enthält ein starkes Sonderzeichen (`!@#$%^&*` …) sowie Buchstaben und eine weitere Zeichenklasse. Bezeichnerartige Werte wie `Standard_D2s_v3` (deren einzige Symbole `_ - .` sind) werden ignoriert.
- **Hohe Entropie** – ≥ 16 Zeichen, gemischte Buchstaben+Ziffern, Shannon-Entropie ≥ `-MinEntropy`. Pfade / URLs / Ressourcen-IDs (alles, was `/` oder `\` enthält) werden übersprungen, um das Markieren von Ressourcen-IDs zu vermeiden.

In `Name/Value`-Tabellen wird die Value-Spalte gescannt; in Freiform-Tabellen wird jede Zelle gescannt. Das bedeutet höhere Trefferquote, aber auch mehr False Positives – daher ist es **standardmäßig deaktiviert**. Aktivieren Sie es für einen tieferen Sweep und führen Sie dann das Triage der Low-Findings durch.

---

## Behandlung von False Positives

Azure-Dumps sind voller langer, zufällig aussehender Zeichenfolgen, die **keine** Geheimnisse sind. Der Scanner filtert diese heraus:

- **GUIDs** (Abonnement-/Mandanten-/Ressourcen-/Objekt-IDs) werden nie markiert.
- **Platzhalter & Nicht-Geheimnis-Wertformen** – `********`, `null`, `<provide-at-deploy>`, `true/false`, wiederholte Zeichen, Vorlagen-Tokens (`${var}`, `%VAR%`), JSON-Objekte/-Arrays (`{...}`, `[...]`, einschließlich mehrzeiliger), Datums-/Zeitstempel und serialisierte .NET-Typ-/Sammlungsnamen (z. B. eine VM-Skalierungsgruppen-`Secrets`-Spalte, die als `System.Collections.Generic.List`1[...VaultSecretGroup]` dargestellt wird) – werden übersprungen. Beachten Sie, dass dies formbasiert ist: Eine `Secrets`-Spalte mit einem tatsächlichen Klartextwert wird weiterhin markiert.
- **Harmlose Passwort-Metadatenfelder** – Verzeichnisspalten, deren Name ein Schlüsselwort enthält, aber nur den Passwort-*Status* bzw. die *Richtlinie* beschreiben, niemals das Geheimnis selbst (`PasswordProfile`, `PasswordPolicies`, `ForceChangePasswordNextSignIn`, `LastPasswordChangeDateTime`, `PasswordExpirationDateTime`, …). Diese sind in RBAC-Exporten wie `InheritedOwners.csv` / `InheritedContributors.csv` häufig und werden nicht markiert, während eine Spalte, die tatsächlich `Password` heißt, weiterhin markiert wird. Key Vault-Zugriffsrichtlinien-Berechtigungsspalten (`PermissionsToSecretsStr`, `PermissionsToKeysStr`, …), die Berechtigungsverben wie `Get, List, Set, Delete` enthalten, werden ebenfalls ignoriert.
- **Code- & Vorlagenausdrücke** – wenn `password`/`secret`/usw. ein Variablen- oder Eigenschaftsname ist, der auf einen Ausdruck statt auf ein Literal verweist, wird der erfasste Wert übersprungen: PowerShell-Cmdlet-Aufrufe (`Get-RandomPassword 8`, `Get-AzKeyVaultSecret ...`), Variablenreferenzen einschließlich skopierter (`$result`, `$kv.Secrets`, `$global:clientSecret`, `$env:KEY`), Unterausdrücke (`(-join $x)`) und ARM-/Logic-App-Referenzen (`@{body(...)}`, `@body(...)`, `[parameters('...')]`). Häufig in Automation-Runbooks und Logic-App-Definitionen.

  Die mehrdeutigen Formen hier – `$var`, `(expr)`, `Verb-Noun` – werden nur in Dateien verworfen, die tatsächlich Code enthalten (`.ps1`, `.json`, `.tf`, `.yaml`, …). Ein Passwort ist sehr oft eine gültige Variablenreferenz (`$ummer2026`, `$ecretPass1`), daher hat die Anwendung dieses Filters auf CSV-Wert-Zellen echte Geheimnisse verworfen. Eindeutige Vorlagenmarkierungen (`@{`, `@body(`, `[parameters(`) werden überall herausgefiltert.
- **Spaltenkopf-Nähe** – die generischen `keyword = value`-Regeln behandeln nur `:` und `=` als Trennzeichen (nicht `,`), sodass ein CSV-Header wie `...,AdminPassword,Secrets,...` den *nächsten Spaltennamen* nicht mehr als Passwort erfasst. Kommagetrennte `Name,Value`-Paare werden weiterhin von der strukturierten CSV-Paarung abgedeckt.
- **Ressourcen-ID-Pfade** werden in kurze Segmente aufgeteilt, statt als ein Token mit hoher Entropie behandelt zu werden.
- **Case-sensitive Anmeldeinformationsformate** (AWS `AKIA…`, GitHub `ghp_…`, JWT `eyJ…`, Azure AD `…Q~…`) werden case-sensitiv abgeglichen, sodass beliebig großgeschriebene Ähnlichkeiten wie `akiaijklmnopqrstuvwx` nicht gemeldet werden. Schlüsselwortregeln (`password=`, `AccountKey=`) bleiben case-insensitiv.
- Die **Entropie-Heuristik ist standardmäßig deaktiviert** – sie erzeugt verrauschte Low-Severity-Findings, daher opt-in mit `-IncludeEntropy` für einen tieferen Sweep. Selbst dann feuert sie nur auf Tokens, die wie Schlüsselmaterial aussehen (gemischte Buchstaben+Ziffern oder Base64-Marker), sodass camelCase-Bezeichner wie `networkSecurityGroups` ignoriert werden. Erhöhen Sie die Messlatte weiter mit `-MinEntropy 4.5`.

---

## Wichtige Parameter

| Parameter | Standard | Zweck |
| --- | --- | --- |
| `-Path` | *(erforderlich)* | Stammordner der MicroBurst-Ausgabe. |
| `-OutputDirectory` | Zeitstempel-Ordner | Wo Berichte geschrieben werden (wird nie gescannt). Kann nicht selbst der Scan-Root sein; ein darin verschachtelter Ordner erzeugt eine Warnung. |
| `-IncludeEntropy` | aus | Opt-in zum Hoch-Entropie-Heuristik-Durchlauf (fügt Low-Severity-Findings hinzu). |
| `-MinEntropy` | `4.0` | Shannon-Entropieschwelle (Bits/Zeichen) für die Heuristik. |
| `-ScanValues` | aus | Untersucht zusätzlich den *Inhalt* von CSV-Wert-Zellen auf Geheimnisse unter harmlosen Namen (Low-Severity, höhere Trefferquote). |
| `-ShowSecrets` | aus | Gibt **ungeschwärzte** Werte in der gesamten Ausgabe aus, um das False-Positive-Triage zu beschleunigen. Berichte werden zu echtem Anmeldeinformationsmaterial. |
| `-MaxFileSizeMB` | `50` | Überspringt Dateien, die größer sind. Übersprungene Dateien werden gewarnt und in der Übersicht sowie im HTML-Bericht gezählt. |
| `-IncludeExtension` | häufige Texttypen | Überschreibt, welche Dateitypen gescannt werden (ein führender Punkt ist optional). |
| `-NoCsv` / `-NoHtml` | aus | Überspringt ein Berichtsformat. |
| `-Quiet` | aus | Unterdrückt die Konsolenübersicht (Objekte werden weiterhin zurückgegeben). |

---

## Projektstruktur

```
MicroBurstSecretsHunter.psd1     Modulmanifest
MicroBurstSecretsHunter.psm1     Modullader
Scan-MicroBurst.ps1              Komfort-Wrapper-Skript
Public/
  Invoke-MBSecretScan.ps1        Haupt-Cmdlet (Dateidurchlauf, Abgleich, Berichterstattung)
Private/
  Get-MBSignature.ps1            Erkennungsregelsatz (zum Erweitern bearbeiten)
  Get-MBCsvFinding.ps1           Strukturierte CSV-Name/Wert-Spaltenpaarung
  MBHelpers.ps1                  Entropie, Schwärzung, Kontextdarstellung,
                                 CSV-Feld-Escaping, Zeilenfensterung,
                                 Platzhalter-/GUID-Filter
  Write-MBConsoleSummary.ps1     Konsolenausgabe
  New-MBHtmlReport.ps1           HTML-Berichtsgenerator
tests/
  sample-dump/                   Beispiel-Fixture im Get-AzDomainInfo-Stil
```

Zum Testen mit der mitgelieferten Beispieldatei:

```powershell
.\Scan-MicroBurst.ps1 -Path .\tests\sample-dump
```

---

## Abdeckungsgrenzen, die Ihnen das Tool mitteilt

Alles, was der Scanner nicht lesen konnte, ist ein blinder Fleck – und ein stiller blinder Fleck liest sich wie "hier wurde nichts gefunden". Der Scanner ist daher explizit diesbezüglich:

- Dateien über `-MaxFileSizeMB` erzeugen eine `Write-Warning` mit ihrem Namen, eine `NOT scanned`-Zeile in der Konsolenübersicht und ein Banner im HTML-Bericht.
- Nicht lesbare Dateien (gesperrt, keine Berechtigung) werden auf dieselbe Weise gezählt; führen Sie mit `-Verbose` aus, um die einzelnen Pfade zu sehen.
- Lange Zeilen werden **nicht** gekürzt. Minifiziertes einzeiliges JSON ist in Azure-Exporten normal, und eine 14 KB große einzeilige ARM-Vorlage versteckt ein `AdminPassword` gerne hinter jedem festen Cut-off. Daher werden Zeilen in überlappenden 8000-Zeichen-Fenstern gescannt. Doppelte Treffer aus der Überlappung werden in der Deduplizierung zusammengeführt.

---

## Hinweise & Einschränkungen

- **Das Fehlen von Erkennungen ist kein Beweis für Sicherheit.** Betrachten Sie dies als Kraftverstärker für die manuelle Prüfung, nicht als deren Ersatz.
- Standardmäßig schwärzen die Berichte Geheimniswerte, legen aber dennoch offen, *wo* sich Geheimnisse befinden. Behandeln Sie sie daher als sensible Engagement-Artefakte. Mit `-ShowSecrets` enthalten sie die **vollständigen Klartext-Anmeldeinformationen** – sicher aufbewahren und nach dem Triage löschen.
- Das Tool ist read-only und tätigt keine Netzwerkaufrufe.
Tool herunterladen