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
NativeDump — lsass mit ausschließlich NTAPI-Funktionen dumpen, indem Minidump-Dateien handgefertigt werden (ohne MiniDumpWriteDump!!!) | Kitploit
Tools/GitHubGitHub/ricardojoserf/nativedump
SpeicherforensikPost-ExploitationRed Teaming
GitHubricardojoserf/nativedump

NativeDump

lsass mit ausschließlich NTAPI-Funktionen dumpen, indem Minidump-Dateien handgefertigt werden (ohne MiniDumpWriteDump!!!)

Repository anzeigenWebseite
74510423vor 1 MonatVon 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

NativeDump

NativeDump ermöglicht das Dumpen des lsass-Prozesses unter ausschließlicher Verwendung von NTAPIs, wobei eine Minidump-Datei erstellt wird, die nur die Streams enthält, die für die Analyse durch Tools wie Mimikatz oder Pypykatz erforderlich sind (SystemInfo-, ModuleList- und Memory64List-Streams).

esquema

  • NTOpenProcessToken und NtAdjustPrivilegeToken, um die Berechtigung „SeDebugPrivilege“ zu erhalten
  • RtlGetVersion, um die Betriebssystemversiondetails (Hauptversion, Nebenversion und Buildnummer) zu erhalten. Dies ist für den SystemInfo-Stream erforderlich
  • NtQueryInformationProcess und NtReadVirtualMemory, um die Adresse von lsasrv.dll zu erhalten. Dies ist das einzige Modul, das für den ModuleList-Stream benötigt wird
  • NtOpenProcess, um ein Handle für den lsass-Prozess zu erhalten
  • NtQueryVirtualMemory und NtReadVirtualMemory, um durch die Speicherbereiche zu iterieren und alle möglichen auszudumpen. Gleichzeitig wird der Memory64List-Stream befüllt

Das Programm hat ein optionales Argument für die Ausgabedatei, der Standard-Dateiname ist „proc_<PID>.dmp“:

NativeDump.exe [DUMP_FILE]

poc

Das Tool wurde mit den neuesten Windows-Versionen und den gängigsten Sicherheitslösungen (Microsoft Defender for Endpoints, CrowdStrike...) getestet und funktioniert einwandfrei, aber die Tarnung hängt von der gewählten „Flavour“ ab: Verwenden Sie ungewöhnliche Sprachen und passen Sie die Binärdateien an, um die besten Ergebnisse zu erzielen! Es funktioniert jedoch nicht, wenn PPL aktiviert ist oder die PEB-Struktur nicht lesbar ist. Update: Jetzt ist es möglich, die Programme auszuführen, ohne das PEB zu lesen, siehe den peb-unreadable branch :)

Einige Vorteile dieser Technik sind:

  • Es verwendet nicht die bekannte Funktion dbghelp!MinidumpWriteDump
  • Es verwendet nur Funktionen aus Ntdll.dll, sodass es möglich ist, API-Hooking durch Neuzuordnung der Bibliothek zu umgehen
  • Die Minidump-Datei muss nicht auf die Festplatte geschrieben werden; Sie können ihre Bytes (codiert oder verschlüsselt) an einen entfernten Rechner übertragen

Sie finden das Projekt in verschiedenen Varianten (oder Sprachen):

  • main - .NET grundlegende Implementierung (dieser Branch)

  • python-flavour - Python Implementierung mit 3 ntdll.dll-Überschreibungsmethoden + Exfiltrieren zu einem entfernten Rechner

  • golang-flavour - Golang Implementierung mit 3 ntdll.dll-Überschreibungsmethoden + Exfiltrieren zu einem entfernten Rechner

  • c-flavour - C/C++ Implementierung mit 3 ntdll.dll-Überschreibungsmethoden

  • bof-flavour - BOF-Datei mit 3 ntdll.dll-Überschreibungsmethoden

  • rust-flavour - Rust Implementierung von @safedv

  • crystal-flavour - Crystal Implementierung mit ntdll.dll-Überschreibungsfähigkeiten

  • nim-flavour - Nim Implementierung mit ntdll.dll-Überschreibungsfähigkeiten

Weitere interessante Branches mit .NET:

  • remote - Exfiltrieren zu einem entfernten Rechner + 3 ntdll.dll-Überschreibungsmethoden + dynamische Funktionsauflösung + String-AES-Verschlüsselung + XOR-Kodierung des Minidump-Inhalts

  • all-modules - Informationen für alle Module abrufen (nicht nur lsasrv.dll)

  • peb-unreadable - Implementierung ohne Lesen der PEB-Struktur von lsass + 3 ntdll.dll-Überschreibungsmethoden



Technik im Detail: Erstellen einer minimalen Minidump-Datei

Nachdem die undokumentierten Minidump-Strukturen gelesen wurden, kann die Struktur wie folgt zusammengefasst werden:

  • Header: Informationen wie die Signatur („MDMP“), die Position des Stream-Verzeichnisses und die Anzahl der Streams
  • Stream-Verzeichnis: Ein Eintrag für jeden Stream, der den Typ, die Gesamtgröße und die Position jedes Streams in der Datei enthält
  • Streams: Jeder Stream enthält unterschiedliche Informationen zum Prozess und hat sein eigenes Format
  • Regionen: Die tatsächlichen Bytes aus dem Prozess aus jedem Speicherbereich, der gelesen werden kann

estructure

Ich habe ein Analysewerkzeug erstellt, das hilfreich sein kann: MinidumpParser. Wir konzentrieren uns auf die Erstellung einer gültigen Datei mit nur den notwendigen Werten für den Header, das Stream-Verzeichnis und die einzigen 3 Streams, die für die Analyse einer Minidump-Datei durch Mimikatz/Pypykatz benötigt werden: SystemInfo-, ModuleList- und Memory64List-Streams.


A. Header

Der Header ist eine 32-Byte-Struktur, die in C# wie folgt definiert werden kann:

public struct MinidumpHeader
{
    public uint Signature;
    public ushort Version;
    public ushort ImplementationVersion;
    public ushort NumberOfStreams;
    public uint StreamDirectoryRva;
    public uint CheckSum;
    public IntPtr TimeDateStamp;
}

Die erforderlichen Werte sind:

  • Signature: Fester Wert 0x504d44d (String „MDMP“)
  • Version: Fester Wert 0xa793 (Microsoft-Konstante MINIDUMP_VERSION)
  • NumberOfStreams: Fester Wert 3, die drei für die Datei erforderlichen Streams
  • StreamDirectoryRVA: Fester Wert 0x20 oder 32 Bytes, die Größe des Headers

B. Stream Directory

Jeder Eintrag im Stream-Verzeichnis ist eine 12-Byte-Struktur, sodass bei 3 Einträgen die Größe 36 Bytes beträgt. Die C#-Struktdefinition für einen Eintrag ist:

public struct MinidumpStreamDirectoryEntry
{
    public uint StreamType;
    public uint Size;
    public uint Location;
}

Das Feld „StreamType“ repräsentiert den Typ des Streams als Ganzzahl oder ID. Einige der relevantesten sind:

IDStream Type
0x00UnusedStream
0x01ReservedStream0
0x02ReservedStream1
0x03ThreadListStream
0x04ModuleListStream
0x05MemoryListStream
0x06ExceptionStream
0x07SystemInfoStream
0x08ThreadExListStream
0x09Memory64ListStream
0x0ACommentStreamA
0x0BCommentStreamW
0x0CHandleDataStream
0x0DFunctionTableStream
0x0EUnloadedModuleListStream
0x0FMiscInfoStream
0x10MemoryInfoListStream
0x11ThreadInfoListStream
0x12HandleOperationListStream
0x13TokenStream
0x16HandleOperationListStream

C. SystemInformation Stream

Der erste Stream ist ein SystemInformation-Stream mit der ID 7. Die Größe beträgt 56 Bytes und er befindet sich bei Offset 68 (0x44), nach dem Stream-Verzeichnis. Seine C#-Definition ist:

Tool herunterladen