Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
NativeDump — Despejar lsass usando apenas funções NTAPI criando manualmente arquivos Minidump (sem MiniDumpWriteDump!!!) | Kitploit
Ferramentas/GitHubGitHub/ricardojoserf/nativedump
Forensia de MemóriaPós-ExploraçãoRed Teaming
GitHubricardojoserf/nativedump

NativeDump

Despejar lsass usando apenas funções NTAPI criando manualmente arquivos Minidump (sem MiniDumpWriteDump!!!)

Ver RepositórioSite
74510423há 1 mêsRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

NativeDump

NativeDump permite despejar o processo lsass usando apenas NTAPIs, gerando um arquivo Minidump com apenas os streams necessários para serem analisados por ferramentas como Mimikatz ou Pypykatz (SystemInfo, ModuleList e Memory64List Streams).

esquema

  • NTOpenProcessToken e NtAdjustPrivilegeToken para obter o privilégio "SeDebugPrivilege"
  • RtlGetVersion para obter os detalhes da versão do sistema operacional (versão principal, versão secundária e número de compilação). Isso é necessário para o SystemInfo Stream
  • NtQueryInformationProcess e NtReadVirtualMemory para obter o endereço da lsasrv.dll. Este é o único módulo necessário para o ModuleList Stream
  • NtOpenProcess para obter um handle para o processo lsass
  • NtQueryVirtualMemory e NtReadVirtualMemory para percorrer as regiões de memória e despejar todas as possíveis. Ao mesmo tempo, preenche o Memory64List Stream

O programa tem um argumento opcional para o arquivo de saída, o nome padrão é "proc_<PID>.dmp":

NativeDump.exe [DUMP_FILE]

poc

A ferramenta foi testada nas versões mais recentes do Windows com as soluções de segurança mais comuns (Microsoft Defender for Endpoints, CrowdStrike...) e funciona bem, mas a furtividade dependerá da "variante" que você escolher: use linguagens incomuns e personalize os binários para obter os melhores resultados! No entanto, não funciona se o PPL estiver ativado ou a estrutura PEB não for legível. Atualização: Agora é possível executar os programas sem ler o PEB, confira o branch peb-unreadable :)

Alguns benefícios desta técnica são:

  • Não utiliza a conhecida função dbghelp!MinidumpWriteDump
  • Utiliza apenas funções da Ntdll.dll, portanto é possível contornar o API hooking remapeando a biblioteca
  • O arquivo Minidump não precisa ser escrito em disco, você pode transferir seus bytes (codificados ou criptografados) para uma máquina remota

Você pode encontrar o projeto em diferentes "variantes" (ou linguagens):

  • main - .NET implementação básica (este branch)

  • python-flavour - Python implementação com 3 métodos de sobrescrita da ntdll.dll + Exfiltração para máquina remota

  • golang-flavour - Golang implementação com 3 métodos de sobrescrita da ntdll.dll + Exfiltração para máquina remota

  • c-flavour - C/C++ implementação com 3 métodos de sobrescrita da ntdll.dll

  • bof-flavour - Arquivo BOF com 3 métodos de sobrescrita da ntdll.dll

  • rust-flavour - Rust implementação por @safedv

  • crystal-flavour - Crystal implementação com capacidades de sobrescrita da ntdll.dll

  • nim-flavour - Nim implementação com capacidades de sobrescrita da ntdll.dll

Outros branches interessantes usando .NET:

  • remote - Exfiltração para máquina remota + 3 métodos de sobrescrita da ntdll.dll + Resolução dinâmica de funções + Criptografia AES de strings + Codificação XOR do conteúdo Minidump

  • all-modules - Obtém as informações para todos os módulos (não apenas lsasrv.dll)

  • peb-unreadable - Implementação sem ler a estrutura PEB do lsass + 3 métodos de sobrescrita da ntdll.dll



Técnica em detalhes: Criando um arquivo Minidump mínimo

Após ler as estruturas não documentadas do Minidump, sua estrutura pode ser resumida em:

  • Cabeçalho: Informações como a Assinatura ("MDMP"), a localização do Diretório de Streams e o número de streams
  • Diretório de Streams: Uma entrada para cada stream, contendo o tipo, tamanho total e localização no arquivo de cada um
  • Streams: Cada stream contém diferentes informações relacionadas ao processo e possui seu próprio formato
  • Regiões: Os bytes reais do processo de cada região de memória que pode ser lida

estructure

Criei uma ferramenta de análise que pode ser útil: MinidumpParser. Vamos nos concentrar em criar um arquivo válido com apenas os valores necessários para o cabeçalho, diretório de streams e os únicos 3 streams necessários para que um arquivo Minidump seja analisado por Mimikatz/Pypykatz: SystemInfo, ModuleList e Memory64List Streams.


A. Cabeçalho

O cabeçalho é uma estrutura de 32 bytes que pode ser definida em C# como:

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

Os valores necessários são:

  • Signature: Valor fixo 0x504d44d (string "MDMP")
  • Version: Valor fixo 0xa793 (constante Microsoft MINIDUMP_VERSION)
  • NumberOfStreams: Valor fixo 3, os três Streams necessários para o arquivo
  • StreamDirectoryRVA: Valor fixo 0x20 ou 32 bytes, o tamanho do cabeçalho

B. Diretório de Streams

Cada entrada no Diretório de Streams é uma estrutura de 12 bytes, portanto com 3 entradas o tamanho é 36 bytes. A definição da struct em C# para uma entrada é:

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

O campo "StreamType" representa o tipo de stream como um inteiro ou ID, alguns dos mais relevantes são:

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

C. SystemInformation Stream

O primeiro stream é um SystemInformation Stream, com ID 7. O tamanho é 56 bytes e estará localizado no offset 68 (0x44), após o Diretório de Streams. Sua definição em C# é:

Baixar ferramenta