Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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
Inline-Execute-PE — Führen Sie nicht verwaltete Windows-Executables in CobaltStrike Beacons aus. | Kitploit
Tools/GitHubGitHub/octoberfest7/inline-execute-pe
Privilege Escalation
GitHuboctoberfest7/inline-execute-pe

Inline-Execute-PE

Führen Sie nicht verwaltete Windows-Executables in CobaltStrike Beacons aus.

Repository anzeigen
7231037vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Inline-Execute-PE

HAFTUNGSAUSSCHLUSS:

Dieses Projekt ist komplex, und wenn Sie nicht verstehen, wie es funktioniert, und es nicht ausreichend testen, kann dies dazu führen, dass Sie Beacons zum Absturz bringen und den Zugriff verlieren!

Ich empfehle Ihnen dringend, die gesamte Dokumentation bis zum Abschnitt "Design Considerations and Commentary" zu lesen!

Einführung

Inline-Execute-PE ist eine Sammlung von Beacon Object Files (BOFs) und einem dazugehörigen Aggressor-Skript für CobaltStrike, das es Operatoren ermöglicht, nicht verwaltete Windows-Executables in den Beacon-Speicher zu laden und auszuführen, die Ausgabe abzurufen und in der Beacon-Konsole anzuzeigen.

Dies ermöglicht es Operatoren, viele Tools von Drittanbietern (Mimikatz, Dsquery, Sysinternals-Tools usw.) zu verwenden, ohne sie auf die Festplatte schreiben, mit einem Tool wie Donut in positionsunabhängigen Code umwandeln oder einen neuen Prozess erstellen zu müssen, um sie auszuführen.

Diese Executables werden in den Beacon-Speicher gemappt, sodass sie wiederholt ausgeführt werden können, ohne sie jedes Mal über das Netzwerk senden, neuen Speicher allozieren und einen neuen conhost.exe-Prozess erstellen zu müssen.

In Beacons geladene Executables sind für alle CobaltStrike-Clients, die mit dem CobaltStrike-Team-Server verbunden sind, zugänglich und können von ihnen ausgeführt werden.

Inline-Execute-PE wurde für x64-Beacons und x64-Windows-C- oder C++-Executables entwickelt, die mit Mingw oder Visual Studio kompiliert wurden. Dieses Projekt unterstützt keine x86-Executables oder x64-Executables, die in einer anderen Sprache geschrieben oder mit einem anderen Compiler kompiliert wurden.

Einrichtung

Klonen Sie das Repository und führen Sie optional make aus, um die BOFs neu zu kompilieren.

Laden Sie Inline-Execute-PE.cna in den CobaltStrike-Client. Stellen Sie sicher, dass das Verzeichnis, aus dem CobaltStrike ausgeführt wird, von Ihrem Benutzer beschreibbar ist; Inline-Execute-PE erstellt dort eine Textdatei (petable.txt), um die Verfügbarkeit der für die Funktion von Inline-Execute-PE erforderlichen Daten sicherzustellen.

Befehle

Inline-Execute-PE umfasst 3 zielgerichtete Befehle, die BOFs ausführen, und 3 interne Befehle, die die Projektdatenstruktur manipulieren:

Auf das Ziel ausgerichtet:

  1. peload
  2. perun
  3. peunload

Interne Datenstruktur:

  1. petable
  2. peconfig
  3. pebroadcast

peload

peload ist der Beginn von Inline-Execute-PE. Dieser Befehl wird verwendet, um ein PE in den Beacon-Speicher zu laden. Er führt die folgenden Hauptaktionen aus:

  1. Sendet das angegebene PE über das Netzwerk an Beacon ODER sendet den Namen des PE, das von der Festplatte auf dem Zielcomputer gelesen werden soll
  2. Erstellt eine Struktur im Beacon-Speicher, um verschiedene Zeiger und Handles zu speichern, die während des gesamten Lebenszyklus von Inline-Execute-PE benötigt werden
  3. Allokiert Speicher in Beacon und schreibt das PE mit RW-Schutz hinein
  4. Verschlüsselt das PE im Speicher mit einem vom Benutzer angegebenen Schlüssel per XOR
  5. Allokiert einen weiteren Speicherblock und kopiert das XOR-verschlüsselte PE dorthin. Dies ist notwendig, um das PE für nachfolgende Ausführungen "zurücksetzen" zu können
  6. Erzeugt einen conhost.exe-Unterprozess unter Beacon, um stdin/stdout/stderr zu initialisieren
  7. Leitet stdout und stderr in eine anonyme Pipe um, damit die Ausgabe des PE erfasst werden kann

perun

perun ist der zweite Schritt in Inline-Execute-PE. Er führt die folgenden Hauptaktionen aus:

  1. Sendet Befehlszeilenargumente über das Netzwerk an Beacon
  2. Entschlüsselt das PE im Speicher per XOR
  3. Repariert die Import Address Table des PE und hookt bestimmte APIs in Bezug auf Befehlszeilenargumente und das Beenden von Prozessen
  4. Ändert den Speicherschutz des PE auf RWX
  5. Führt das PE in einem eigenen Thread aus
  6. Erfasst die Ausgabe des PE und gibt sie an CobaltStrike zurück
  7. Setzt den Speicherschutz des PE auf RW zurück
  8. Überschreibt das PE im Speicher mit der XOR-Kopie, die während peload erstellt wurde

peunload

peunload wird aufgerufen, um das PE aus dem Beacon-Speicher zu entfernen, wenn ein Operator damit fertig ist oder ein anderes PE laden möchte. Es führt die folgenden Hauptaktionen aus:

  1. Schließt die während peload erstellten Handles und Dateizeiger
  2. Beendet den während peload erstellten conhost.exe-Prozess
  3. Löscht beide Kopien des PE im Speicher und gibt sie dann frei
  4. Versucht, alle vom PE in den Beacon-Prozess geladenen DLLs zu entladen (optional)

petable

petable wird verwendet, um Informationen zu allen aktuell in Beacons geladenen PEs anzuzeigen.

Jeder CobaltStrike-Client hat seine eigene petable; Inline-Execute-PE unternimmt große Anstrengungen, um die Synchronität seiner Daten zwischen allen verbundenen CobaltStrike-Clients sicherzustellen, damit PEs von allen Operatoren verwendet werden können. Weitere Informationen hierzu finden Sie unter "Design Considerations and Commentary".

image

peconfig

peconfig wird verwendet, um Optionen zu konfigurieren, die die Funktionsweise von Inline-Execute-PE betreffen. Die beiden aktuell änderbaren Optionen sind:

  1. Timeout: Gibt an, wie lange perun auf die Fertigstellung des PE wartet, bevor es beendet wird. Dies dient als Sicherheitsmaßnahme für den Fall, dass einem PE falsche Argumente übergeben werden, die dazu führen, dass es nie zurückkehrt/abschließt. Diese Einstellung beträgt standardmäßig 60 Sekunden, kann aber für länger laufende PEs angepasst werden.
  2. UnloadLibraries: Diese Option steuert, ob peunload versucht, DLLs aus dem Beacon-Prozess zu entfernen, die vom PE geladen wurden. Standardmäßig ist dies auf TRUE gesetzt. Manche PEs verursachen Probleme, wenn DLLs aus dem Beacon-Prozess entladen werden, und können Beacon zum Absturz bringen; in diesem Fall ist es besser, alle vom PE geladenen DLLs im Beacon-Prozess zu belassen. Dies wurde bei der Verwendung von powershell.exe beobachtet (möglicherweise weil es die .Net CLR in den Beacon-Prozess lädt).

pebroadcast

pebroadcast kann verwendet werden, um den Inhalt der petable eines Clients manuell an alle anderen verbundenen CobaltStrike-Clients zu senden.

Jeder andere CobaltStrike-Client wird seine petable mit den gesendeten Daten aktualisieren. Dies sollte eigentlich nie notwendig sein, aber die Funktion existiert für den Fall der Fälle.

Verwendung

Verwenden Sie peload, um ein PE in den Beacon-Speicher zu laden
image

Alternativ, wenn sich auf dem Zielcomputer ein PE befindet, das Sie ohne Erstellen eines neuen Prozesses verwenden möchten, geben Sie den Pfad und den --local-Schalter an
image

Rufen Sie perun auf und übergeben Sie Argumente an das geladene PE
image

Anführungszeichen in Argumenten müssen mit Backslashes maskiert werden
image

Wenn Sie festgestellt haben, dass ein PE Probleme verursacht, wenn während des Entladens versucht wird, DLLs freizugeben, verwenden Sie peconfig, um unloadlibraries auf false zu setzen
image

Tool herunterladen