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
Pyramid — Ein Tool, das dabei hilft, in den blinden Flecken von EDRs zu agieren. | Kitploit
Tools/GitHubGitHub/naksyn/pyramid
Post-ExploitationPenetrationstestsRed Teaming
GitHubnaksyn/pyramid

Pyramid

Ein Tool, das dabei hilft, in den blinden Flecken von EDRs zu agieren.

Repository anzeigen
77590vor 2 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

Supported Python versions Twitter

Pyramid

immagine

Was ist das

Pyramid besteht aus:

  1. einem Python HTTP/S-Server, der verschlüsselte Dateien (chacha, xor) ausliefern kann
  2. Python-Modulen, die Abhängigkeiten von Offensiv-Tools wie Bloodhound-py, secretsdump, LaZagne, Pythonnet, DonPAPI, pythonmemorymodule, paramiko, pproxy im Arbeitsspeicher laden können
  3. festen Python-Abhängigkeiten (Zip-Dateien), die im Speicher importiert werden können
  4. Python-Cradle, das Pyramid-Module herunterladen, entschlüsseln und im Arbeitsspeicher ausführen kann

Warum ist es nützlich

Pyramid ist nützlich, um Post-Exploitation-Aufgaben auf eine ausweichende Weise durchzuführen, indem offensive Tools von einer signierten Binärdatei (z. B. python.exe) ausgeführt werden, indem ihre Abhängigkeiten im Speicher importiert werden. Dies kann erreicht werden, weil:

  1. das Python Embeddable Package einen signierten Python-Interpreter mit guter Reputation bereitstellt;
  2. Python viele legitime Anwendungen hat, sodass von der python.exe-Binärdatei eine große Menge unterschiedlicher Telemetriedaten stammen, da der Interpreter nativ die APIs ausführt. Dies kann ausgenutzt werden, indem man innerhalb des Python.exe-Prozesses arbeitet und versucht, sich in den großen "Telemetrie-Fingerprint" der python.exe-Binärdatei einzufügen.
  3. Es mangelt an Auditing für die Ausführung von Python-Code – PEP-578 versuchte dies zu lösen, aber die Standard-python.exe-Binärdatei hat standardmäßig keine Auditing-Funktionen aktiviert.
  4. Operationen können nativ von innerhalb von python.exe mit der Python-Sprache durchgeführt werden, um Post-Exploitation-Aufgaben wie das dynamische Importieren von Python-Modulen zum Ausführen von Offensiv-Tools und das direkte Ausführen von Beacon Object Files (nach einigen BOF-Modifikationen) innerhalb von python.exe durchzuführen.

Für weitere Informationen lesen Sie bitte die DEFCON30 - Adversary Village Talk "Python vs Modern Defenses" - Folien und diesen Beitrag in meinem Blog.

Haftungsausschluss

Dieses Tool wurde erstellt, um eine Umgehungsstrategie gegen EDRs zu demonstrieren, die auf einigen Annahmen über blinde Flecken basiert. Es handelt sich um eine Kombination bereits existierender Techniken und Tools in einer (nach meinem besten Wissen) neuartigen Weise, die helfen kann, Verteidigungen zu umgehen. Der alleinige Zweck des Tools ist es, der Gemeinschaft zu helfen, das Bewusstsein für diese Art der Nutzung zu schärfen und eine Lösung zu beschleunigen. Es ist kein 0‑Day, es ist kein ausgewachsenes glänzendes C2, Pyramid nutzt aus, was möglicherweise blinde Flecken von EDRs sind, und das Tool wurde veröffentlicht, um Licht auf diese zu werfen. Ein Abschnitt zur Verteidigung wurde hinzugefügt, in der Hoffnung, dass erfahrene Blue-Teamer dazu beitragen und eine bessere mögliche Lösung für das Problem liefern können, das Pyramid hervorheben möchte. Alle Informationen dienen nur zu Bildungszwecken. Befolgen Sie die Anweisungen auf eigenes Risiko. Weder der Autor noch sein Arbeitgeber sind für direkte oder indirekte Schäden oder Verluste verantwortlich, die durch eine Person oder Organisation entstehen.

Danksagungen

Pyramids In-Memory-Laden wurde ursprünglich inspiriert und erweitert von xorriors Empyre - Finder Class

Mitwirkende

snovvcrash entwickelte die Module mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py

Aktuelle Funktionen

Die Fähigkeiten der Pyramid-Module können direkt von einem Python-Interpreter ausgeführt werden und umfassen derzeit:

  1. Herunterladen, Entschlüsseln und In-Memory-Laden von Python-Abhängigkeiten.
  2. Dynamisches Laden und Ausführen von BloodHound Python, Impacket secretsdump, DonPAPI, LaZagne.
  3. In-Memory-Laden einer remote abgerufenen DLL oder EXE über PythonMemoryModule
  4. SOCKS5-Proxy über SSH-Reverse-Port-Forward-Tunnel.
  5. In-Memory-.NET-Assembly-Laden über Pythonnet

Hauptfunktionen des Pyramid-HTTP-Servers:

  1. On-the-fly-Verschlüsselung (chacha, xor) der auszuliefernden Dateien
  2. Automatische Generierung von Server-Konfigurationen basierend auf der Pyramid-Kommandozeile
  3. Decodierung und Entschlüsselung von HTTP-Parametern (URL)
  4. Basis-HTTP-Authentifizierung

Hauptfunktionen des Cradles:

  1. Herunterladen, Entschlüsseln und In-Memory-Ausführung von Pyramid-Modulen.
  2. Abhängigkeit nur von Python-Standardbibliotheken

Beschreibung

Pyramid kann mit einem bereits auf einem Zielrechner vorhandenen Python-Interpreter verwendet werden, oder durch Entpacken eines offiziellen embeddable Python-Pakets und anschließendes Ausführen von python.exe, um ein Python-Download-Cradle auszuführen. Dies ist ein einfacher Weg, um ungewöhnliche Prozessbaum-Muster zu vermeiden und wie eine normale Python-Anwendungsnutzung auszusehen.

Im Pyramid wird das Download-Cradle verwendet, um über HTTP/S einen Pyramid-Server zu erreichen und Module und Abhängigkeiten abzurufen.

Module sind spezifisch für die gewünschte Funktion und enthalten:

  1. Eine benutzerdefinierte Finder-Klasse zum In-Memory-Import der benötigten Abhängigkeiten (Zip-Dateien).
  2. Code zum Herunterladen der benötigten Abhängigkeiten.
  3. Hauptlogik für das auszuführende Programm (Bloodhound, secretsdump, paramiko usw.).

Die Python-Abhängigkeiten wurden bereits angepasst und modifiziert, um im Speicher importiert werden zu können, ohne Konflikte zu verursachen.

Derzeit sind 8 Pyramid-Module verfügbar:

  1. bh.py importiert und führt python-BloodHound im Speicher aus.
  2. secretsdump.py importiert und führt Impacket secretsdump im Speicher aus.
  3. shellcode.py ist ein einfacher In-Memory-Shellcode-Injektor.
  4. DonPAPI.py importiert und führt DonPAPI im Speicher aus. Ergebnisse und extrahierte Anmeldedaten werden auf der Festplatte im Verzeichnis des Python Embeddable Package gespeichert.
  5. LaZagne.py importiert und führt LaZagne im Speicher aus.
  6. tunnel-socks5 importiert und führt paramiko in einem neuen Thread aus, um einen SSH-Remote-Port-Forward zu einem SSH-Server zu erstellen. Anschließend wird lokal auf dem Ziel ein SOCKS5-Proxy-Server ausgeführt, der über den SSH-Tunnel remote erreichbar ist.
  7. clr importiert Pythonnet, um eine .NET-Assembly im Speicher zu laden und auszuführen.
  8. pythonmemorymodule importiert PythonMemoryModule, um eine DLL aus dem Speicher zu laden.

Verwendung

Server starten

git clone https://github.com/naksyn/Pyramid

SSL-Zertifikate für den HTTP-Server generieren:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

Wenn Sie Ihr eigenes signiertes SSL-Zertifikat verwenden möchten, stellen Sie sicher, dass:

  1. Sie das PEM-Format verwenden
  2. Sie die Dateien in key.pem und cert.pem umbenennen
  3. Sie beide Dateien im Server-Ordner ablegen.

Modul konfigurieren

Wenn Sie beispielsweise pythonmemorymodule mit Pyramid verwenden möchten, legen Sie Ihren Payload in den Delivery_files-Ordner, öffnen Sie dann pythonmemorymodule.py und konfigurieren Sie die benötigten Parameter am Anfang des Skripts, wie den Namen der Payload-Datei und die Prozedur, die nach dem Laden des PE aufgerufen werden soll.

Entpacken des Embeddable-Pakets und Ausführen des Download-Cradles auf dem Ziel

Sobald der Pyramid-Server läuft und das Basis-Skript bereit ist, können Sie die Variable pyramid_module in der Datei Agent/cradle.py setzen und auf dem Ziel ausführen. Das Cradle ist so konzipiert, dass es mit den Python-Standardbibliotheken ausgeführt werden kann.

Beispiel

Beispiel für die Ausführung des Pyramid-HTTP-Servers mit SSL-Zertifikat, Basisauthentifizierung, Verschlüsselung der Auslieferungsdateien mit ChaCha und automatischer Generierung der Serverkonfiguration in Modulen sowie Ausgabe eines einfügbaren Cradles für pythonmemorymodule:

root@kitploit:~
python3 pyramid.py -p 443 -ssl -u testuser -pass Sup3rP4ss! -enc "chacha20" -passenc "TestPass1" -server "192.168.1.2" -generate -setcradle pythonmemorymodule.py

Beim Start analysiert pyramid.py seine eigene Ordnerstruktur, um key.pem und cert.pem zu finden, und liefert Dateien aus dem Server-Ordner aus.

https://github.com/naksyn/Pyramid/assets/59816245/4fbc997e-af2d-4ead-881b-ee108c91d195

Tipp zur Ausführung von Pyramid ohne sichtbare Eingabeaufforderung

Um Pyramid auszuführen, ohne eine sichtbare python.exe-Eingabeaufforderung zu öffnen, können Sie pythonw.exe verwenden, das kein Konsolenfenster öffnet und sich im selben Windows Embeddable Package befindet. Das folgende Bild zeigt ein Beispiel für die Verwendung von pythonw.exe zur Ausführung von base-tunnel-socks5.py auf einem entfernten Rechner, ohne ein python.exe-Konsolenfenster zu öffnen.

image

Einschränkungen

Dynamisches Laden von Python-Modulen unterstützt nativ keinen Import von *.pyd-Dateien, die im Wesentlichen DLLs sind. Die einzige mir bekannte öffentliche Lösung, die dieses Problem löst, wird von Scythe (In-Memory-Execution) durch Neuentwicklung des CPython-Interpreters bereitgestellt. Um die digitale Signatur nicht zu verlieren, besteht eine Lösung, die die Verwendung des nativen Python Embeddable Package erlaubt, darin, die benötigten pyd-Dateien oder Wheels auf die Festplatte zu schreiben. Dies sollte in den meisten Fällen keine signifikanten OPSEC-Auswirkungen haben, aber beachten Sie, dass die folgenden Wheels, die pyd-Dateien enthalten, auf die Festplatte geschrieben werden, um das dynamische Laden abzuschließen: *. Cryptodome – benötigt von Bloodhound-Python, Impacket, DonPAPI und LaZagne *. bcrypt, cryptography, nacl, cffi – benötigt von paramiko

Wie man sich gegen diese Technik verteidigt

Python.exe ist eine signierte Binärdatei mit guter Reputation und bietet keine Transparenz über dynamischen Python-Code. Pyramid nutzt diese Ausweicheigenschaften aus, indem es offensive Aufgaben innerhalb desselben python.exe-Prozesses ausführt.

Aus diesem Grund wäre eine der effizientesten Lösungen, Binärdateien und DLLs, die von der Python Foundation signiert sind, standardmäßig zu blockieren und nur für Benutzer Ausnahmen zu schaffen, die tatsächlich Python-Binärdateien verwenden müssen.

Auch können Warnungen bei Downloads von Embeddable Packages ausgelöst werden.

Die Bereitstellung von PEP-578 ist ebenfalls möglich, wenn auch komplex, dies ist eine Beispielimplementierung. Allerdings könnte die Bereitstellung von PEP-578 ohne Blockierung der Verwendung von Standard-Python-Binärdateien diese Gegenmaßnahme nutzlos machen.

Tool herunterladen