Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
larac2shell — Plattformübergreifende interaktive Shell für Microsoft Defender for Endpoint Live Response | Kitploit
Tools/GitHubGitHub/akefallonitis/larac2shell
Laterale BewegungScripting & AutomatisierungPost-ExploitationPenetrationstestsCommand and ControlDienstprogramme & FrameworksAuthentifizierungIncident ResponseRemote-Access-Tool
GitHubakefallonitis/larac2shell

larac2shell

Plattformübergreifende interaktive Shell für Microsoft Defender for Endpoint Live Response

151vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

LaraC2 Shell -- MDE Live Response Interactive Shell

CI License: MIT PowerShell 7+ Platforms

Plattformübergreifende interaktive Shell für Microsoft Defender for Endpoint Live Response.

MerkmalDetail
PlattformPowerShell Core 7.0+ (Windows, Linux, macOS)
API-ModiIntern (Portal, nahezu in Echtzeit) und Offiziell (öffentlich, zustandslos)
AusführungBeliebige Befehle + 25 native LR-Befehle
Authentifizierung7 Authentifizierungsmethoden, einheitliches Menü, automatische Aktualisierung
LizenzMIT

LaraC2 Shell verbindet sich über zwei unabhängige API-Pfade mit MDE Live Response – die interne Portal-API (dauerhafte Sitzungen, ~2–5s Latenz) und die offizielle öffentliche API (pro Befehl, ~20–60s Latenz). Es lädt automatisch Executor-Stubs hoch, handhabt Ratenbegrenzung transparent und bietet eine vollständige REPL mit Maschinenverwaltung, Bibliotheksverwaltung und einem integrierten Hilfesystem.

Dokumentation


Funktionen

  • Zwei API-Modi: Intern (Portal, ~2–5s/Befehl, nahezu in Echtzeit) + Offiziell (öffentlich, ~20–60s/Befehl, CI/CD-bereit)
  • 7 Authentifizierungsmethoden in einem einheitlichen Menü: Client-Anmeldedaten, Gerätecode, Anmeldedaten+TOTP, Passkey/HSM, ESTS-Cookie, TAP, direktes sccauth – der Modus wird aus der Authentifizierungswahl abgeleitet
  • 25 native LR-Befehle + Ausführung beliebiger Befehle über automatisch hochgeladene B64-Executor-Stubs
  • Plattformübergreifende Zielplattformen: Windows, Linux, macOS-Endpunkte (automatische Auswahl von Executor + Kodierung)
  • Transparente Ratenbegrenzung: 429-Backoff, intelligente ActiveRequest-Konfliktlösung (12 Wiederholungen, externen abbrechen / eigenen warten)
  • Sitzungslebenszyklus: Automatische Verbindung, automatische Wiederverbindung bei 30-minütiger Inaktivität, Bereinigung inaktiver Sitzungen, maschinenübergreifender Wechsel
  • Authentifizierungslebenszyklus: OAuth2 automatische Aktualisierung, XSRF automatische Aktualisierung (4-Minuten-TTL), stille Neuauthentifizierung für TOTP/Passkey; connect-Befehl authentifiziert erneut, wenn die Sitzung abläuft
  • Sitzungswiederverwendung: Transparente automatische Verbindung, automatische Wiederverbindung und maschinenübergreifender Wechsel ohne Benutzereingriff
  • Multi-Maschinen-Ausführung: multi-Befehl mit Namensmuster-Filter und Top-N-Begrenzung
  • Stapelverarbeitung mehrerer Befehle: Bis zu 5 Befehle pro offiziellem API-Aufruf, automatische Aufteilung bei größeren Mengen
  • Bibliotheksverwaltung: Auflisten, Hochladen, Löschen, Herunterladen, automatisches Hochladen von Executor-Stubs, 409-Konflikt-Überschreibung
  • Aktionsverwaltung: Auflisten, Abbrechen (teilweise ID-Übereinstimmung), Statusdetails
  • Interaktive UX: Tab-Vervollständigung, Befehlsaliase (ls/ps/netstat), Arbeitsverzeichnisverfolgung, Hilfesystem
  • Fehlerhilfe: Kontextbezogene Nachrichten (400->Syntax, 401->Neuauthentifizierung, 403->Berechtigungen, 429->Ratenbegrenzung)
  • Keine Geheimnisse auf der CLI: Anmeldedaten aus Konfigurationsdatei oder interaktiver Eingabeaufforderung, nie im Befehlsverlauf

Schnellstart

Voraussetzungen

  • PowerShell Core 7.0+ (Windows, Linux oder macOS)
  • Entweder ein Portal-Konto mit Live Response-Zugriff (interner Modus) oder eine MDE-App-Registrierung mit den Berechtigungen Machine.LiveResponse + Library.Manage (offizieller Modus)

Start```powershell

git clone https://github.com/akefallonitis/larac2shell.git cd larac2shell pwsh -File shell/Invoke-MDEShell.ps1

root@kitploit:~
Das war's. Die Shell präsentiert beim ersten Start ein einheitliches Authentifizierungsmenü mit 7 Methoden — wähle eine aus, authentifiziere dich, wähle einen Rechner aus, und schon bist du in einer REPL. Keine Konfigurationsdatei, keine Flags, nichts einzurichten.```
  Select API mode:

    Internal API  (security.microsoft.com — near real-time, ~2-5s/cmd)
    1  Credentials + MFA        username + password, TOTP/push/SMS [auto-refresh]
    2  Software passkey          FIDO2/WebAuthn JSON key file [auto-refresh]
    3  ESTS cookie               ESTSAUTHPERSISTENT from browser (~24hr)
    4  Temporary Access Pass     one-time admin-issued code
    5  Direct sccauth + XSRF     cookies from browser DevTools (~1hr)

    Official API  (api.securitycenter.microsoft.com — CI/CD ready, ~20-60s/cmd)
    6  Device code               browser login (interactive)
    7  Client credentials        app registration with client secret

  Auth method (1-7):

Die Auswahlmöglichkeiten 1-5 legen den internen Modus fest, 6-7 den offiziellen. Sie können später ohne Neustart zwischen den Modi wechseln — siehe Switching modes inline unten.

Switching modes inline```

[INT myhost C:]> mode Current mode: Internal API Switch with: 'mode internal' or 'mode official'.

[INT myhost C:]> mode official [Mode] Switching from Internal API to official... (auth menu for official mode opens) [Mode] Now in official mode. Run 'machines' to list targets or 'connect <name|id>' to select one.

root@kitploit:~
`mode <target>` trennt die aktuelle LR-Sitzung, löscht den alten Authentifizierungsstatus und führt den Authentifizierungsablauf für den Zielmodus erneut aus. Wenn es zurückkommt, sind Sie im neuen Modus authentifiziert, ohne dass eine Maschine ausgewählt ist – führen Sie `machines` aus, um die Liste anzuzeigen, oder `connect <name|id>`, um direkt zu einem Ziel zu springen. Kein Neustart erforderlich.

### CLI-Verknüpfungen (optional)

Für Skripting oder wenn Sie das einheitliche Menü überspringen möchten:```powershell
# Pre-select the mode (narrows the auth menu to 1-5 or 6-7)
pwsh -File shell/Invoke-MDEShell.ps1 -Mode internal
pwsh -File shell/Invoke-MDEShell.ps1 -Mode official

# Pre-select a machine (skips the picker)
pwsh -File shell/Invoke-MDEShell.ps1 -Machine myhost

# Software passkey path (internal mode)
pwsh -File shell/Invoke-MDEShell.ps1 -PasskeyPath ./keys/passkey.json

# Non-interactive single command (exits with remote command's exit code)
pwsh -File shell/Invoke-MDEShell.ps1 -Machine myhost -Command 'whoami'

Konfigurationsdatei (optional)

Wird nur für ein Szenario verwendet: Offizieller Modus mit einem Client-Geheimnis, nicht-interaktiv. Jede andere Authentifizierungsmethode fordert Sie interaktiv auf und speichert nichts auf der Festplatte. Wenn Sie keine unbeaufsichtigte Client-Anmeldedaten-Authentifizierung benötigen, können Sie diesen Abschnitt vollständig überspringen.```powershell Copy-Item shell/config/shell-config.example.json shell/config/shell-config.json

Edit the file: set official.tenantId, official.clientId, official.clientSecret

pwsh -File shell/Invoke-MDEShell.ps1 -Config shell/config/shell-config.json

root@kitploit:~
Konfigurationsschema (alle Felder optional, außer `official.tenantId` + `official.clientId` bei Verwendung von Client-Anmeldeinformationen):

| Section | Field | Description |
|---------|-------|-------------|
| `official` | `tenantId` | Azure AD-Mandanten-ID |
| `official` | `clientId` | App-Registrierungs-Client-ID |
| `official` | `clientSecret` | Client-Geheimnis (weglassen und `useDeviceCode: true` setzen für Gerätecode) |
| `official` | `useDeviceCode` | `true`, um den Gerätecode-Fluss anstelle von Client-Anmeldeinformationen zu verwenden |
| `defaults` | `defaultMachine` | Maschine beim Start vorauswählen (Namens-Teilzeichenfolge oder ID-Präfix) |
| `defaults` | `commandTimeoutSeconds` | Clientseitige Timeout-Obergrenze. `0` = Server entscheidet (bis zu 1800s). |
| `defaults` | `pollIntervalOfficial` | Offizielles API-Polling-Intervall in Sekunden (Standard 2) |
| `defaults` | `pollIntervalInternal` | Internes API-Polling-Intervall in Sekunden (Standard 1) |

**Sicherheit**: Schränken Sie Dateisystemberechtigungen für jede Konfigurationsdatei ein, die `clientSecret` enthält. Das `clientSecret` wird niemals über die Befehlszeile akzeptiert – nur über Konfigurationsdatei. Alle Anmeldeinformationen des internen Modus (Benutzername, Passwort, TOTP-Geheimnis, Cookies) werden interaktiv abgefragt und niemals auf der Festplatte gespeichert.

---

## Authentifizierungsmethoden

Die Shell zeigt beim Start ein einheitliches Menü mit 7 Authentifizierungsmethoden an. Der Modus (intern/offiziell) wird aus der Auswahl abgeleitet.

| # | Modus | Methode | Wie | Automatische Aktualisierung |
|---|------|--------|-----|--------------|
| 1 | Intern | Anmeldeinformationen + TOTP | Interaktive Eingabeaufforderung | Ja (still) – nur wenn ein TOTP-Geheimnis angegeben wurde. Bei Push/SMS-MFA kann die Sitzung nicht automatisch aktualisiert werden. |
| 2 | Intern | Software-Passkey | `-PasskeyPath`-Parameter oder Eingabeaufforderung | Ja (still) |
| 3 | Intern | ESTS-Cookie | Interaktive Eingabeaufforderung | Nein (~24h) |
| 4 | Intern | Temporärer Zugangspass | Interaktive Eingabeaufforderung | Nein (einmalig) |
| 5 | Intern | Direktes sccauth + XSRF | Interaktive Eingabeaufforderung | Nein (~1h) – XSRF automatische Aktualisierung gilt nicht; die Shell aktualisiert direkt bereitgestellte Cookies nicht automatisch. |
| 6 | Offiziell | Gerätecode | Browser-Anmeldung | Nein (~1h) |
| 7 | Offiziell | Client-Anmeldeinformationen | Konfigurationsdatei | Ja (still) |

Der Befehl `connect` authentifiziert bei Ablauf der Sitzung erneut, wobei dieselbe Methode verwendet wird, die ursprünglich ausgewählt wurde. Methoden ohne automatische Aktualisierung fordern erneut interaktiv zur Eingabe auf.

**Speicherinterne Handhabung von Anmeldeinformationen**: Bei Methode 1 werden das angegebene Passwort und das TOTP-Geheimnis im Speicher (als Klartext-Zeichenfolgen, innerhalb von `$script:Int_ReauthParams`) für die Lebensdauer des Shell-Prozesses aufbewahrt, sodass eine stille erneute Authentifizierung unbeaufsichtigt ausgeführt werden kann. Die Zeichenfolgenobjekte leben im PowerShell-Runspace; sie werden nicht auf die Festplatte serialisiert oder über die Befehlszeile übergeben. Wenn diese Offenlegung für Ihr Bedrohungsmodell nicht akzeptabel ist, verwenden Sie stattdessen Methode 2 (Passkey/HSM) oder Methode 7 (Client-Anmeldeinformationen).

---

## Shell-Befehle

### Shell-Steuerung

| Befehl | Beschreibung |
|---------|-------------|
| `help [command]` | Hilfe anzeigen (optional für einen bestimmten Befehl) |
| `help commands` | Alle nativen LR-Befehle mit Beschreibungen auflisten |
| `status` | Verbindungsstatus, Authentifizierungsstatus, Maschineninformationen anzeigen |
| `config` | Live-Response-Konfiguration anzeigen |
| `connect [name\|id]` | Erneut authentifizieren (falls abgelaufen) und eine Maschine auswählen |
| `disconnect` | Aktuelle LR-Sitzung trennen und Maschine zurücksetzen |
| `multi [options] <cmd>` | Befehl auf mehreren Maschinen ausführen (`-top N`, `-filter pattern`) |
| `session [list]` | Aktuelle Sitzungsinformationen oder alle zwischengespeicherten Sitzungen anzeigen |
| `mode` | Aktuellen API-Modus anzeigen |
| `mode internal\|official` | API-Modus inline wechseln – trennt die aktuelle Sitzung, baut den alten Authentifizierungsstatus ab und führt das Authentifizierungsmenü für den Zielmodus erneut aus. Anschließend mit `machines` oder `connect` fortfahren |
| `exit` / `quit` / `q` | Shell beenden |

### Maschinenverwaltung

| Befehl | Beschreibung |
|---------|-------------|
| `machines [refresh]` | Maschinen auflisten und eine auswählen (refresh = erzwungenes Neuladen) |
| `connect [name\|id]` | Mit einer Maschine über Namens-Teilzeichenfolge oder ID-Präfix verbinden |

### Native Live-Response-Befehle (insgesamt 25)

| Befehl | Beschreibung |
|---------|-------------|
| `run <script> [args]` | Ein Skript aus der MDE-Bibliothek ausführen |
| `getfile <path>` | Eine Datei von der entfernten Maschine herunterladen |
| `putfile <name>` | Eine Bibliotheksdatei in das entfernte Arbeitsverzeichnis hochladen |
| `processes` | Laufende Prozesse auflisten |
| `connections` | Aktive Netzwerkverbindungen auflisten |
| `cd <path>` | Arbeitsverzeichnis wechseln (interner Modus) |
| `dir [path]` | Verzeichnisinhalt auflisten |
| `findfile <name>` | Nach einer Datei mit Name auf allen Laufwerken suchen |
| `trace` | Diagnose-Trace-Informationen anzeigen |
| `analyze <path>` | Eine Datei zur Tiefenanalyse einreichen |
| `remediate <path>` | Eine Datei unter Quarantäne stellen/beheben |
| `undo <actionId>` | Eine vorherige Bereinigungsaktion rückgängig machen |
| `registry <key>` | Registrierungsschlüssel/-werte abfragen (nur Windows) |
| `scheduledtasks` | Geplante Aufgaben auflisten |
| `persistence` | Häufige Persistenzorte prüfen |
| `drivers` | Geladene Treiber auflisten (nur Windows) |
| `services` | Dienste auflisten |
| `startupfolders` | Inhalt des Autostart-Ordners auflisten (nur Windows) |
| `fileinfo <path>` | Detaillierte Dateiinformationen abrufen |
| `prefetch` | Prefetch-Daten auflisten (nur Windows) |
| `log` | Diagnoseprotokolle anzeigen |
| `jobs` | Hintergrundaufträge auflisten (interner Modus) |
| `fg <jobId>` | Einen Hintergrundauftrag in den Vordergrund holen (interner Modus) |
| `library` | Bibliotheksdateien verwalten (auflisten, hochladen, herunterladen, löschen) |
| `status` | Sitzungsstatus und Diagnose anzeigen |

### Befehlsaliase

| Alias | Wird aufgelöst zu |
|-------|-------------|
| `ls` | `dir` |
| `ps` | `processes` |
| `download` | `getfile` |
| `process` | `processes` |
| `netstat` | `connections` |

### Beliebige Befehle

Jede Eingabe, die keinem integrierten Befehl entspricht, wird als beliebiger Befehl behandelt und über den B64-Executor-Stub auf der entfernten Maschine ausgeführt. Beispiele: `whoami`, `ipconfig`, `cat /etc/hostname`.

- Windows-Ziele: Befehl wird UTF-16-LE Base64-kodiert und über `executor_b64.ps1` (PowerShell-ScriptBlock) ausgeführt
- Linux/macOS-Ziele: Befehl wird UTF-8 Base64-kodiert und über `executor_b64.sh` (bash) ausgeführt

**Pipeline-Erkennung**: Befehle, die Pipes (`|`), Semikolons (`;`), Umleitungen (`>>`) oder Unterausdrücke (`$(`) enthalten, werden immer B64-gewrappt, selbst wenn das erste Wort ein natives LR-Verb ist. Zum Beispiel wird `dir C:\ | Select-Object` über B64 geleitet, nicht über natives `dir`.

### Bibliotheksverwaltung

| Befehl | Beschreibung |
|---------|-------------|
| `library` | Alle Dateien in der MDE-Bibliothek auflisten |
| `library refresh` | Bibliotheksliste von der API erzwungen aktualisieren |
| `library upload <path>` | Eine lokale Datei in die Bibliothek hochladen |
| `library delete <name>` | Eine Datei nach Name aus der Bibliothek löschen |
| `library download <name>` | Inhalt einer Datei aus der Bibliothek herunterladen (Interne API: direkt; Offizielle API: über `getfile` aus dem Bibliothekscache des Endpunkts, sobald eine Maschine ausgewählt wurde – Synchronisation kann bis zu 10 Minuten dauern) |

### Aktionsverwaltung

| Befehl | Beschreibung |
|---------|-------------|
| `actions` | Ausstehende/laufende Aktionen für die aktuelle Maschine auflisten |
| `actions all` | Alle aktuellen Aktionen auf allen Maschinen auflisten |
| `actions cancel <id>` | Eine Aktion nach ID abbrechen (Teilübereinstimmung unterstützt) |

---

## Architektur

### Interne vs. Offizielle API

Die LaraC2 Shell stellt zwei unabhängige API-Pfade zum selben MDE Live Response-Backend bereit. Die interne API spiegelt das WebSocket-ähnliche Sitzungsmodell des Portals wider und liefert nahezu Echtzeit-Antworten. Die offizielle API verwendet die dokumentierten REST-Endpunkte von Microsoft und eignet sich für die Automatisierung.

| | Interne API | Offizielle API |
|---|---|---|
| Basis-URL | `security.microsoft.com/apiproxy/mtp/liveResponseApi/` | `api.securitycenter.microsoft.com/api/` |
| Sitzung | Persistent (30-min Keepalive, automatische Wiederverbindung) | Pro Befehl (zustandslos) |
| Polling-Intervall | ~1s (nahezu Echtzeit) | 2s |
| Mehrfachbefehle | Sequenziell innerhalb gemeinsamer Sitzung | Gebündelt (bis zu 5 pro API-Aufruf) |
| Authentifizierung | Eigenständig (ESTS/Passkey/TOTP -> sccauth) | OAuth2-Client-Anmeldeinformationen oder Gerätecode |
| Standard-Timeout | 1800s (Server entscheidet, nicht Client) | 1800s (Server entscheidet, nicht Client) |

#### Was LaraC2 über die rohe API hinaus bietet

| Schritt | Rohe Offizielle API | LaraC2 Shell |
|------|-----------------|-------------|
| Stub-Upload | Manuell: Multipart erstellen, POST, Konflikte behandeln | Automatisch bei Verbindung, 409-Überschreibung |
| B64-Codierung | Manuell: UTF-16LE/UTF-8 pro Betriebssystem wählen | Automatische Betriebssystemerkennung, automatische Codierung |
| RunScript erstellen | Manuell: JSON mit ScriptName + Args-Parametern | Befehl direkt eingeben |
| Polling + Abruf | Manuell: Schleife + Download-Link + JSON parsen | Transparent: gibt bereinigte Ausgabe zurück |
| Fehlerbehandlung | Manuell: Überprüfung 400/401/403/409/429/503 | Automatisch: Wiederholung, Backoff, Anleitung |
| Mehrfachbefehle | Manuell: Commands[]-Array erstellen | Automatische Bündelung bis zu 5 |

### Wichtige Einschränkung

Offizielle API und interne API teilen sich eine maschinenspezifische Aktionswarteschlange. Sie können nicht gleichzeitig auf derselben Maschine ausgeführt werden.

### Ratenbegrenzung (Transparent)

| Grenze | Wert | Behandlung |
|-------|------|----------|
| LR-Befehle pro Minute | 10 | 429-Antwort mit Retry-After-Header |
| Bibliotheks-Uploads pro Minute | 100 | Gleitfenster-Warteschlange |
| Bibliotheks-Uploads pro Stunde | 1500 | Stündlicher Zähler |
| HTTP 429 Too Many Requests | -- | Schlafen für Retry-After-Header (Standard 35s) |
| ActiveRequestAlreadyExists | -- | Konfliktaktion abbrechen + fester Backoff (10s, dann 15s bis zu 12 Wiederholungen) |
| Bearer-Token-Ablauf (offiziell) | ~1 Stunde | Automatische Aktualisierung vor Ablauf |
| sccauth-Ablauf (intern) | ~1 Stunde | Stille erneute Authentifizierung, wenn Anmeldeinformationen gespeichert |
| LR-Sitzungsinaktivität | 30 Minuten | Automatische Wiederverbindung |
| XSRF-Rotation | 4 Minuten | Transparente Aktualisierung |

---

## Machbarkeit einer nahezu Echtzeit-Shell

Gemessene Latenzen in einem Produktions-MDE-Mandanten auf Windows-, Linux- und macOS-Zielen:

| Vorgang | Interne API | Offizielle API |
|-----------|-------------|--------------|
| `whoami` (B64) | 4-9s | 20-46s |
| `dir` (nativ) | 2-4s | 14-25s |
| `processes` (nativ) | 3-15s | 20-175s |
| `connections` (nativ) | 2-4s | ~15s |
| `services` (nativ) | 2-5s | ~15s |
| `hostname` (B64) | 4-7s | 11-16s |
| Sitzungsverbindung (erster Befehl) | 9-15s | N/A (zustandslos) |
| Maschinenwechsel | 7-10s | 15-30s |

**Interne API: nahezu Echtzeit-fähig.** Bei Sitzungswiederverwendung antworten native Befehle in 2-5s. Das ist so nah an Echtzeit, wie MDE es zulässt. Der Engpass ist der SenseIR-Agent auf dem Ziel, nicht das Framework.

**Offizielle API: Automatisierungsgrad.** Mindestens ~15s pro Befehl aufgrund der zustandslosen Architektur (senden, abfragen, abrufen). Gut geeignet für Skriptautomatisierung und CI/CD, nicht für interaktive Nutzung.

---

## Plattformübergreifende Unterstützung

Linux- und macOS-Endpunkte werden über beide API-Modi vollständig unterstützt.

| Ziel-Betriebssystem | Interne API Durchschnitt | Offizielle API Durchschnitt |
|-----------|-----------------|-----------------|
| Windows | ~7s | ~30s |
| Linux | ~6s | ~26-33s |
| macOS | ~6s | ~26-33s |

**Worauf zu achten ist**:

1. `.sh`-Stubs **müssen** Unix-Zeilenumbrüche (LF, nicht CRLF) haben, sonst schlägt bash mit "ambiguous redirect" fehl.
2. Der Bibliotheks-Upload der offiziellen API synchronisiert `.sh`-Dateien **nicht** an Linux/macOS-Endpunkte. Laden Sie zuerst über die interne API (Portal) oder die Defender-Portal-UI hoch. Nach dem Upload funktioniert der offizielle API-RunScript einwandfrei.
3. `executor_b64.sh` funktioniert auf Linux und macOS, sobald es ordnungsgemäß hochgeladen wurde.

---

## Tests

Die Testsuite umfasst 712 Offline-Komponententests, 301 Integrationstests der offiziellen API, 251 Integrationstests der internen API sowie einen konfigurierbaren Stresstest-Treiber.

### Voraussetzungen```powershell
Install-Module -Name Pester -MinimumVersion 5.0.0 -Force -Scope CurrentUser

Offline Tests (kein Tenant erforderlich)

Unit-Tests, die Modulladung, B64-Kodierung, Befehlserstellung, Alias-Auflösung, Tokenizer, Ratenbegrenzer, Auth-Krypto, Sitzungsverwaltung, Fehlerpfade und alle Authentifizierungsabläufe mittels Pester Mock abdecken.```powershell Invoke-Pester ./tests/shell/LaraC2Shell.Offline.Tests.ps1 -Output Detailed

root@kitploit:~
### Interne API-Tests (erfordert Portal-Cookies)

Integrationstests, die sccauth auth, Sitzungslebenszyklus, alle nativen Befehle, B64-Ausführung und plattformübergreifende Zielsetzung abdecken.```powershell
$env:LARAC2_SCCAUTH = 'your-sccauth-cookie'
$env:LARAC2_XSRF = 'your-xsrf-token'
Invoke-Pester ./tests/shell/LaraC2Shell.Internal.Tests.ps1 -Output Detailed

Stresstests (Durchsatz und Zuverlässigkeit)```powershell

Single-mode stress

pwsh -File tests/shell/LaraC2Shell.Stress.Tests.ps1 -Config config.json -Mode official -Rounds 5

Cross-OS stress (Windows + Linux + macOS)

pwsh -File tests/shell/LaraC2Shell.Stress.Tests.ps1 -Config config.json -Mode both -Scenario crossos

root@kitploit:~
### CI/CD (GitHub Actions)

| Job | Trigger | Platforms | Requirements |
|-----|---------|-----------|--------------|
| PSScriptAnalyzer Lint | Every push/PR | Ubuntu | None |
| Offline Tests | Every push/PR | Ubuntu + Windows + macOS | None |
| Online Tests (Official) | Conditional | Ubuntu | `LARAC2_ONLINE_TESTS` Variable + `LARAC2_CONFIG` Geheimnis |
| Stress Tests | Manual dispatch | Ubuntu | `LARAC2_CONFIG` Geheimnis |

---

## Fehlerbehebung

| Fehler | Ursache | Lösung |
|-------|---------|--------|
| `ActiveRequestAlreadyExists` | Ein weiterer LR-Befehl wird auf dem Ziel ausgeführt | Automatisch behandelt (offizieller Modus): Konfliktierende Aktion abbrechen + feste 10s/15s Backoff bis zu 12 Wiederholungen. Interner Modus: Nur warten. Kein Benutzereingriff erforderlich. |
| HTTP 429 | Ratenbegrenzung überschritten (10 Befehle/min) | Automatisch behandelt: Wartet für die Retry-After-Periode und wiederholt. |
| "script not found" unter Linux/macOS | .sh-Stub nicht mit Endpunkt synchronisiert | Hochladen über interne API oder Defender-Portal-UI. Offizielle API-Uploads synchronisieren .sh-Dateien nicht. |
| "ambiguous redirect" unter Linux/macOS | .sh-Stub hat CRLF-Zeilenumbrüche | Erneut mit LF-Zeilenumbrüchen speichern und erneut hochladen. |
| HTTP 400 bei großem Befehl | B64-Nutzlast überschreitet ~30 KB | Verwenden Sie stattdessen `library upload` + `run <script>`. |
| HTTP 401 | Token/Sitzung abgelaufen | Shell aktualisiert automatisch für Client-Anmeldeinformationen, TOTP und Passkey. Für andere Methoden geben Sie `connect` ein. |
| HTTP 403 | Unzureichende Berechtigungen | Offiziell: Überprüfen Sie die Bereiche `Machine.LiveResponse` + `Library.Manage`. Intern: Überprüfen Sie die Rolle „Sicherheitsoperator“. |
| HTTP 404 | Computer nicht gefunden | Führen Sie `machines refresh` aus, um neu zu laden. |

---

## Anforderungen

| Anforderung | Detail |
|-------------|--------|
| PowerShell Core | 7.0 oder höher (`pwsh`) |
| MDE-App-Registrierung | Erforderlich für den offiziellen Modus (Berechtigungen `Machine.LiveResponse` + `Library.Manage`) |
| Betriebssystem | Windows, Linux oder macOS (Shell läuft auf jedem; Ziele können jedes MDE-eingeschriebene Betriebssystem sein) |

Die gesamte Authentifizierung ist in sich geschlossen – es sind keine externen Module erforderlich. Die Authentifizierungsabläufe im internen Modus basieren auf [XDRInternals](https://github.com/MSCloudInternals/XDRInternals) von Fabian Bader und Nathan McNulty.

---

## Dateistruktur```
shell/
  Invoke-MDEShell.ps1           Main shell entry point (REPL, dispatch, help)
  modules/
    Auth-Official.ps1           OAuth2 client credentials + device code
    Auth-Internal.ps1           Self-contained ESTS/passkey/TOTP/TAP authentication
    Auth-Crypto.ps1             Crypto helpers: TOTP, WebAuthn, passkey signing, Key Vault
    Rate-Limiter.ps1            429/backoff/ActiveRequest handling
    Invoke-LRCommand.ps1        Command execution (both modes, B64 stubs, multi-machine)
    Get-Machines.ps1            Machine list + picker
    Manage-Library.ps1          Library file management + auto-init stubs
    Manage-Actions.ps1          Action list/cancel
  config/
    shell-config.example.json   Config template (copy and fill in)

stubs/
  executor_b64.ps1              Windows PS B64 executor (auto-uploaded)
  executor_b64.sh               Linux/macOS bash B64 executor (auto-uploaded)

tests/
  shell/
    LaraC2Shell.Offline.Tests.ps1    Unit tests (no tenant needed)
    LaraC2Shell.Online.Tests.ps1     Integration tests (Official API)
    LaraC2Shell.Internal.Tests.ps1   Integration tests (Internal API)
    LaraC2Shell.Stress.Tests.ps1     Stress/throughput driver (configurable scenarios)

docs/
  USER_GUIDE.md                 Step-by-step usage guide
  COMMAND_REFERENCE.md          All commands, routing, batching
  ERROR_REFERENCE.md            Error messages and fixes
  PERFORMANCE_COMPARISON.md     Stress test data and API comparison

Autorisierung

Siehe LICENSE für die Bedingungen.


Referenzen & Danksagungen

Tool herunterladen
DokumentZweck
BenutzerhandbuchSchritt-für-Schritt-Einrichtung, Authentifizierung und Bedienung
BefehlsreferenzAlle Befehle, Routing, Stapelverarbeitung, Tab-Vervollständigung
FehlerreferenzHTTP-Codes, Shell-Fehler, Authentifizierungsfehler, Lösungen
LeistungsvergleichInterne vs. offizielle Latenz, Durchsatz, Grenzen
ArchitekturInterna, Authentifizierungsketten, Endpunkte, Dateistruktur
MitwirkenWie man beiträgt, testet, PRs einreicht
SicherheitsrichtlinieSo melden Sie eine Schwachstelle vertraulich
ReferenzenVorarbeiten, verwandte Forschung, Danksagungen
HaftungsausschlussAutorisierung, Credits
RessourceAutorBeschreibung
XDRInternalsFabian Bader, Nathan McNultyInterne Portal-Authentifizierungsabläufe (ESTS, Passkey, TOTP, TAP)
Running Arbitrary CommandsJon GlassLive-Response-Befehlsausführungstechniken
Troubleshoot Live ResponseJeffrey AppelLR-Architektur, WpnService, Sitzungsdiagnose
MDE Internals 0x05Olaf Hartong (FalconForce)MDE-Telemetrie für sensible Aktionen, Erkennungsentwicklung
DefenderHarvesterOlaf HartongMDE-Telemetrie-Exportkonzepte
Run Live Response APIMicrosoftOffizielle API-Dokumentation
Library Methods APIMicrosoftAPI-Dokumentation zur Bibliotheksverwaltung