Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
NativeDump — Дамп lsass с использованием только функций NTAPI путем ручного создания файлов Minidump (без MiniDumpWriteDump!!!) | Kitploit
Инструменты/GitHubGitHub/ricardojoserf/nativedump
Криминалистика памятиПост-эксплуатацияRed Teaming
GitHubricardojoserf/nativedump

NativeDump

Дамп lsass с использованием только функций NTAPI путем ручного создания файлов Minidump (без MiniDumpWriteDump!!!)

РепозиторийСайт
745104231 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

NativeDump

NativeDump позволяет дампить процесс lsass, используя только NTAPI, создавая файл Minidump только с теми потоками, которые необходимы для анализа такими инструментами, как Mimikatz или Pypykatz (потоки SystemInfo, ModuleList и Memory64List).

esquema

  • NTOpenProcessToken и NtAdjustPrivilegeToken для получения привилегии "SeDebugPrivilege"
  • RtlGetVersion для получения деталей версии операционной системы (мажорная версия, минорная версия и номер сборки). Это необходимо для потока SystemInfo
  • NtQueryInformationProcess и NtReadVirtualMemory для получения адреса lsasrv.dll. Это единственный модуль, необходимый для потока ModuleList
  • NtOpenProcess для получения дескриптора процесса lsass
  • NtQueryVirtualMemory и NtReadVirtualMemory для перебора областей памяти и дампа всех возможных. Одновременно заполняется поток Memory64List

Программа имеет один необязательный аргумент для выходного файла, имя файла по умолчанию — "proc_<PID>.dmp":

NativeDump.exe [DUMP_FILE]

poc

Инструмент протестирован на последних версиях Windows с наиболее распространенными решениями безопасности (Microsoft Defender for Endpoints, CrowdStrike...) и работает нормально, но скрытность будет зависеть от выбранной "разновидности": используйте нестандартные языки и настраивайте бинарники для наилучших результатов! Однако он не работает, если включен PPL или структура PEB нечитаема. Обновление: теперь можно выполнять программы без чтения PEB, см. ветку peb-unreadable branch :)

Некоторые преимущества этой техники:

  • Она не использует широко известную функцию dbghelp!MinidumpWriteDump
  • Она использует только функции из Ntdll.dll, поэтому можно обойти перехват API, переотобразив библиотеку
  • Файл Minidump не обязательно записывать на диск, можно передать его байты (закодированные или зашифрованные) на удаленную машину

Вы можете найти проект в различных "разновидностях" (или на разных языках):

  • main — .NET базовая реализация (эта ветка)

  • python-flavour — Реализация на Python с 3 методами перезаписи ntdll.dll + Экфильтрация на удаленную машину

  • golang-flavour — Реализация на Golang с 3 методами перезаписи ntdll.dll + Экфильтрация на удаленную машину

  • c-flavour — Реализация на C/C++ с 3 методами перезаписи ntdll.dll

  • bof-flavour — BOF файл с 3 методами перезаписи ntdll.dll

  • rust-flavour — Реализация на Rust от @safedv

  • crystal-flavour — Реализация на Crystal с возможностями перезаписи ntdll.dll

  • nim-flavour — Реализация на Nim с возможностями перезаписи ntdll.dll

Другие интересные ветки с использованием .NET:

  • remote — Экфильтрация на удаленную машину + 3 метода перезаписи ntdll.dll + Динамическое разрешение функций + AES-шифрование строк + XOR-кодирование содержимого Minidump

  • all-modules — Получение информации для всех модулей (не только lsasrv.dll)

  • peb-unreadable — Реализация без чтения структуры PEB процесса lsass + 3 метода перезаписи ntdll.dll



Техника в деталях: Создание минимального файла Minidump

После изучения недокументированных структур Minidump его структуру можно свести к следующему:

  • Заголовок: Информация, такая как сигнатура ("MDMP"), расположение каталога потоков и количество потоков
  • Каталог потоков: Одна запись для каждого потока, содержащая тип, общий размер и расположение в файле каждого из них
  • Потоки: Каждый поток содержит различную информацию о процессе и имеет свой собственный формат
  • Регионы: Фактические байты процесса из каждой области памяти, которые можно прочитать

estructure

Я создал инструмент парсинга, который может быть полезен: MinidumpParser. Мы сосредоточимся на создании валидного файла только с необходимыми значениями для заголовка, каталога потоков и только 3 потоков, необходимых для того, чтобы файл Minidump был распарсен Mimikatz/Pypykatz: SystemInfo, ModuleList и Memory64List.


A. Заголовок

Заголовок представляет собой структуру размером 32 байта, которую можно определить в C# как:

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

Необходимые значения:

  • Signature: Фиксированное значение 0x504d44d (строка "MDMP")
  • Version: Фиксированное значение 0xa793 (константа Microsoft MINIDUMP_VERSION)
  • NumberOfStreams: Фиксированное значение 3, три потока, необходимые для файла
  • StreamDirectoryRVA: Фиксированное значение 0x20 или 32 байта, размер заголовка

B. Каталог потоков

Каждая запись в каталоге потоков представляет собой структуру размером 12 байт, поэтому при 3 записях размер составляет 36 байт. Определение структуры C# для записи:

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

Поле "StreamType" представляет тип потока в виде целого числа или ID, некоторые из наиболее важных:

IDТип потока
0x00UnusedStream
0x01ReservedStream0
0x02ReservedStream1
0x03ThreadListStream
0x04ModuleListStream
0x05MemoryListStream
0x06ExceptionStream
0x07SystemInfoStream
0x08ThreadExListStream
0x09Memory64ListStream
0x0ACommentStreamA
0x0BCommentStreamW
0x0CHandleDataStream
0x0DFunctionTableStream
0x0EUnloadedModuleListStream
0x0FMiscInfoStream
0x10MemoryInfoListStream
0x11ThreadInfoListStream
0x12HandleOperationListStream
0x13TokenStream
0x16HandleOperationListStream

C. Поток SystemInformation

Первый поток — это поток SystemInformation, с ID 7. Его размер составляет 56 байт, и он будет расположен по смещению 68 (0x44), после каталога потоков. Его определение в C#:

public struct SystemInformationStream
{
    public ushort ProcessorArchitecture;
    public ushort ProcessorLevel;
    public ushort ProcessorRevision;
    public byte NumberOfProcessors;
    public byte ProductType;
    public uint MajorVersion;
    public uint MinorVersion;
    public uint BuildNumber;
    public uint PlatformId;
    public uint UnknownField1;
    public uint UnknownField2;
    public IntPtr ProcessorFeatures;
    public IntPtr ProcessorFeatures2;
    public uint UnknownField3;
    public ushort UnknownField14;
    public byte UnknownField15;
}
Скачать инструмент