Из памяти какого процесса можно извлечь хэши паролей пользователей

Обновлено: 19.05.2024

В этой статье будет рассмотрена атака с целью получения учетных записей из кэша домена и различные техники для извлечения хэшей паролей через эксплуатацию пользователя домена.

Автор: Raj Chandel

В этой статье будет рассмотрена атака с целью получения учетных записей из кэша домена и различные техники для извлечения хэшей паролей через эксплуатацию пользователя домена.

Domain Cache credential (DCC2)

Microsoft Windows хранит информацию о предыдущей авторизации пользователей локально. Соответственно, эти сведения используются в случае, если сервер авторизации (logon server) окажется недоступным. Эта технология носит название Domain Cache credential (или по другому MSCACHE или MSCASH хэш), которая сортирует хэши паролей пользователей, чтобы вы не смогли выполнить атаки навроде pass-the-hash. Для генерации хэшей используется алгоритм MSCACHE, хранящихся локально в реестре операционной системы Windows (по умолчанию, последние 10 хэшей).

Существует две версии MSCASH/MSCACHE (или DCC):

  • MSCACHEV1 или DCC1, используемый до Vista и Server 2003
  • MSCACHEV2 или DCC2, используемый после Vista и Server 2003

Переходим к рассмотрению техник для извлечения хэшей.

Metasploit

Metasploit – первый инструмент в нашем списке, помогающий пентестеру извлекать MSCACHE хэши, хранимые в реестре. Соответствующий модуль извлекает хэши домена, которые были закэшированы в результате настройки групповой политики (GPO). По умолчанию Windows хранит информацию о 10 последних успешных авторизаций:

По результатам отработки модуля выгружаются хэши паролей из DCC2/MSCACHE, как показано на рисунке ниже:


Рисунок 1: Извлечение хэшей при помощи модуля в Metasploit

Impacket

Этот тип хэшей также можно извлечь при помощи Python и библиотек impacket. Перед использованием данной техники следует сохранить ветви реестра system и security на локальной машине при помощи следующих команд:


Рисунок 2: Сохранение ветвей реестра на локальную машину

Далее скопируйте полученные файлы туда, где установлен impacket. В нашем случае копирование происходит в систему с Kali Linux. Затем для извлечения DCC2/MSCACHE хэшей используем следующую команду:

Результат отработки скрипта показан на рисунке ниже:


Рисунок 3: Выгрузка хэшей при помощи скрипта secretsdump.py

Mimikatz

Ни для кого не секрет, что mimikatz – одна из наилучших утилит в арсенале пентестера для извлечения учетных записей в ОС Windows. С целью извлечения DCC2 / MSCACHEv2 хэшей необходимо установить mimikatz на скомпрометированной машине и выполнить следующую команду:

Результат выполнения вышеуказанных команд показан на рисунке ниже:


Рисунок 4: Выгрузка хэшей при помощи mimikatz

PowerShell Empire

Переходим к следующей технике. В PowerShell Empire есть модуль для извлечения MSCACHEV2 хэшей из реестра скомпрометированной машины. Загрузите и запустите Empire в вашей локальной системе, скомпрометируйте целевой хост с целью использования пост-модуля, а затем введите следующую команду:

Результаты работы модуля по выгрузке MSCACHEv2 хэшей показаны на рисунке ниже:


Рисунок 5: Результат выгрузки хэшей при помощи модуля в PowerShell Empire

Koadic

Как и в случае с Powershell Empire, вы можете использовать утилиту Koadic для извлечения DCC2 хэшей при помощи следующего модуля:

Результаты работы этого модуля показаны на рисунке ниже:


Рисунок 6: Извлечение хэшей при помощи Koadic

Python скрипт

Как и в примере с impacket вы можете воспользоваться скриптом mscache.py для извлечения MSCACHEV2 хэшей. Загрузите скрипт с github, и во время запуска в качестве параметров укажите пути к выгруженным файлам (как рассматривалось в разделе с impacket):

Результаты работы скрипта показаны на рисунке ниже:


Рисунок 7: Выгрузка хэшей при помощи скрипта mscache.py

Расшифровка полученных хэшей

Как мы уже знаем, эти хэши не используются во время атак pass the hash, и нам нужна утилита john the ripper для расшифровки:

В результате получаем пароль в открытом виде для указанного хэша. Старайтесь не путаться между понятиями DCC2 и MSCACHEV2/MSCASH. Эти хэши идентичные и могут извлекаться при помощи вышеуказанных техник.


Рисунок 8: Расшифровка извлеченного хэша при помощи утилиты john the ripper


Бенджамин Делпи изначально создал Mimikatz в качестве доказательства концепции, чтобы продемонстрировать Microsoft уязвимость для атак их протоколов аутентификации. Вместо этого он непреднамеренно создал один из самых широко используемых и загружаемых хакерских инструментов за последние 20 лет.

Джейк Уильямс из Rendition Infosec говорит: «Mimikatz сделал для повышения безопасности больше, чем любой другой известный мне инструмент». Если защита сетей Windows — ваша работа, важно быть в курсе последних обновлений Mimikatz, чтобы понимать методы, которые хакеры будут использовать для проникновения в ваши сети, и оставаться на шаг впереди.

Что такое Mimikatz?

Mimikatz — это приложение с открытым исходным кодом, которое позволяет пользователям просматривать и сохранять учетные данные аутентификации, такие как тикеты Kerberos. Бенджамин Делпи продолжает руководить разработкой Mimikatz, поэтому набор инструментов работает с текущей версией Windows и включает самые современные виды атак.


Возможности Mimikatz

Первоначально Mimikatz демонстрировал, как использовать одну уязвимость в системе аутентификации Windows. Теперь же этот инструмент охватывает несколько различных видов уязвимостей. Mimikatz может выполнять следующие методы сбора учетных данных:

  • Pass-the-Hash (перехват хеша): ранее Windows хранил данные аутентификации в хэше NTLM. Злоумышленники используют Mimikatz для передачи точной строки хеша на целевой компьютер для входа в систему. Злоумышленникам даже не нужно взламывать пароль, им просто нужно перехватить хеш и использовать его без какой-либо обработки. Это то же самое, что найти ключ от всех дверей дома на полу. Вам нужен один ключ, чтобы открыть любую дверь.
  • Pass-the-Ticket (перехват тикета): новые версии Windows хранят данные аутентификации в конструкции, называемой тикетом (Ticket). Mimikatz предоставляет пользователю возможность передать тикет Kerberos на другой компьютер и войти в систему с помощью этого тикета. В остальном это то же самое, что и перехват и передача хеша.
  • Over-Pass the Hash (Pass the Key): еще одна разновидность атаки pass-the-hash, но этот метод передает уникальный ключ для выдачи себя за пользователя, данные которого можно получить от контроллера домена.
  • Kerberos Golden Ticket): это вид атаки с перехватом тикета (pass-the-ticket), но в данном случае целью является конкретный тикет для скрытой учетной записи под названием KRBTGT. Эта учетная запись шифрует все остальные тикеты.«Золотой билет» дает вам учетные данные администратора домена для любого компьютера в сети без срока истечения.
  • Kerberos Silver Ticket: еще одна атака типа pass-the-ticket, но «серебряный тикет»использует для своих целей функцию Windows, которая упрощает использование служб в сети. Kerberos предоставляет пользователю тикет сервера выдачи разрешений (TGS), и пользователь может использовать этот тикет для входа в любые службы в сети. Microsoft не всегда проверяет тикет сервера выдачи разрешений (TGS) после его выпуска, поэтому с его помощью можно легко обойти любые меры безопасности.
  • Pass-the-Cache): единственная атака, не использующая уязвимости Windows! Атака с перехватом кэша обычно аналогична атаке с перехватом билета, но в этой атаке используются сохраненные и зашифрованные данные для входа в систему Mac/UNIX/Linux.

Как скачать Mimikatz

Вы можете скачать Mimikatz с GitHub Бенджамина Делпи. Он предлагает несколько вариантов загрузки, от исполняемого файла до исходного кода, который вам нужно будет скомпилировать с Visual Studio 2010 или более новой версии.

Как использовать Mimikatz

После запуска исполняемого файла Mimikatz появится интерактивная консоль Mimikatz, в которой вы сможете запускать команды в реальном времени.

Запустите Mimikatz от имени администратора: для полноценной работы Mimikatz выберите «Запуск от имени администратора», даже если вы используете учетную запись администратора.

Проверка версии Mimikatz
Существует 2 версии Mimikatz: 32-битная и 64-битная. Убедитесь, что вы используете версию, соответствующую разрядности вашей Windows. Выполните команду version из командной строки Mimikatz, чтобы получить информацию об исполняемом файле Mimikatz, версии Windows и о наличии каких-либо настроек Windows, которые могут помешать корректной работе Mimikatz.

Извлечение из памяти паролей в виде открытого текста
Модуль sekurlsa в Mimikatz позволяет выгружать пароли из памяти. Чтобы использовать команды в модуле sekurlsa, у вас должны быть права на уровне администратора или системы.

Сначала выполните команду:


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


И, наконец, выведите все хранящиеся на этом компьютере пароли в виде незашифрованного текста:

Использование других модулей Mimikatz

Модуль шифрования открывает доступ к CryptoAPI в Windows, который позволяет перечислять и экспортировать сертификаты и их закрытые ключи, даже если они отмечены как неэкспортируемые.

Модуль Kerberos обращается к API Kerberos, поэтому вы можете поэкспериментировать с этой функциональностью, извлекая тикеты Kerberos и управляя ими.

Модуль служб позволяет запускать, останавливать, отключать и выполнять другие операции со службами Windows.

И, наконец, команда coffee выводит ASCII-изображение кофе, ведь кофе нужен всем.

Mimikatz способен на гораздо большее Если вы интересуетесь тестированием на проникновение или просто хотите покопаться во внутреннем устройстве проверки подлинности Windows, ознакомьтесь со ссылками ниже.

Конец июня 2017 года запомнился IT сообществу по массовому заражению множества крупнейших компаний и госучреждений России, Украины и других стран новым вирусом-шифровальщиком Petya (NotPetya). В большинстве случаев, после проникновения внутрь корпоративной сети, Petya молниеносно распространялся по всем компьютерам и серверам домена, парализуя до 70-100% всей Windows-инфраструктуры. И хотя, одним из методов распространения Пети между компьютерами сети было использование эксплоита EternalBlue (как и в случае с WannaCry ), это был не основной канал распространения вымогателя. В отличии от WCry, который распространялся исключительно благодаря уязвимости в SMBv1 , NotPetya были изначально заточен под корпоративные сети. После заражения системы, шифровальщик с помощью общедоступной утилиты Mimikatz, получал учетные данные (пароли, хэши) пользователей компьютера и использовал их для дальнейшего распространения по сети с помощью WMI и PsExec, вплоть до полного контроля над доменом. Соответственно, для защиты всех систем не достаточно было установить обновление MS17-010 .

В этой статье мы рассмотрим основные методики защиты Windows систем в домене Active Directory от атак посредством Mimikatz–like инструментов.

Утилита Mimikatz с помощью модуля sekurlsa позволяет извлечь пароли и хэши авторизованных пользователей, хранящиеся в памяти системного процесса LSASS.EXE ( Local Security Subsystem Service ). У нас уже была статья с примером использования mimikatz для получения в паролей пользователей в открытом виде (из WDigest, LiveSSP и SSP).

Предотвращение возможности получения debug

В статье по ссылке выше видно, как использование привилегии debug, позволяет Mimikatz получить доступ к системному процессу LSASS и извлечь из него пароли.

По умолчанию, права на использование режима debug предоставляются локальной группе администраторов (BUILTIN\Administrators). Хотя в 99% случаях эта привилегия абсолютно не используется администраторами (нужна она как правило системным программистам), соответственно, в целях безопасности возможность использования привелегии SeDebugPrivilege лучше отключить. Делается это через групповую политику (локальную или доменную). Перейдите в раздел Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment и включите политику Debug Program . В нее нужно добавить доменную группу пользователей, которым могут понадобится права debug (как правило, разработчики), либо оставить эту группу пустой, чтобы данного права не было не у кого.

Этичный хакинг и тестирование на проникновение, информационная безопасность

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

Не каждый пользователь использует пароль на Windows — особенно редко пользователи устанавливают пароль на домашнем компьютере, за которым работает один человек. Но в условиях корпоративной сети или при использовании Windows в качестве сервера, пароль является обязательным. Ещё одно интересное свойство пароля пользователя Windows: если пользователь завёл онлайн учётную запись Microsoft, то хеш пароля всё равно хранится на локальном компьютере, но расшифрованный пароль подойдёт и для локального компьютера, и для онлайн сервисов Microsoft.

Где Windows хранит пароль входа пользователя?

Пароли пользователей Windows хранятся в кустах (hives) реестра Windows под названием SYSTEM и SAM в файлах:

  • C:/Windows/System32/config/SAM
  • C:/Windows/System32/config/SYSTEM

Вместо пароля в виде простого текста, Windows хранит хеши паролей. Эти хеши легко поддаются брут-форсу, но даже без взлома хеши паролей Windows можно использовать для сбора данных и выполнения атак.

Как получить хеши паролей Windows

Дамп хешей паролей Windows на работающем компьютере

На запущенной системе проблематично получить доступ к файлам C:/Windows/System32/config/SAM и C:/Windows/System32/config/SYSTEM, хотя это и возможно. Для сохранения копий этих файлов можно использовать утилиту reg, а именно следующие команды:

В некоторых инструкциях вместо SYSTEM сохраняют куст SECURITY — это ошибка, с кустами SECURITY и SAM восстановить хеш не удасться, нужны именно SYSTEM и SAM!

Хеш пароля также содержится в оперативной памяти, а именно в процессе Local Security Authority Process (lsass.exe). Этот процесс всегда запущен в работающей Windows и можно сделать его дамп (копию процесса в оперативной памяти сохранить на диск в виде файла). Для создания дампа можно использовать различные утилиты, в том числе две официальные:

Диспетчер задач уже имеется в каждой Windows, чтобы его открыть нажмите Win+r и наберите taskmgr, затем нажмите ENTER. Либо правой кнопкой мыши нажмите на панель задач (то есть на нижнюю полоску, где находятся часы, кнопка пуск и т. д.) и в контекстном меню выберите «Диспетчер задач».


В Диспетчере задач нажмите «Подробнее» и во вкладке «Процессы», в разделе «Процессы Windows» найдите Local Security Authority Process, нажмите на него правой кнопкой мыши и выберите в контекстном меню пункт «Создать файл дампа»:



Файл будет сохранён по пути C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Local\Temp\lsass.DMP. У меня имя пользователя MiAl и путь до файла C:\Users\MiAl\AppData\Local\Temp\lsass.DMP.

Дамп хешей паролей Windows на выключенном компьютере

На выключенном компьютере для последующего извлечения пароля пользователя достаточно скопировать файлы:

  • C:/Windows/System32/config/SAM
  • C:/Windows/System32/config/SYSTEM

Эти же файлы можно найти в резервной копии Windows или в Shadow копии диска, либо скопировать загрузившись с Live системы.

Чем различаются хеши NTLM и NTLMv1/v2 и Net-NTLMv1/v2

Сейчас мы будем охотиться за хешем NTLM. В статье «Взлом сетевой аутентификации Windows» мы уже охотились за хешами NTLMv1 и NTLMv2, название которых довольно похоже.

На самом деле, NTLM и NTLMv1/v2 это довольно разные вещи. Хеш NTLM хранится и используется локально, а хеши NTLMv1/NTLMv2 используются для сетевой аутентификации и являются производными хеша NTLM. Используя любой из этих хешей можно расшифровать пароль пользователя Windows, но это разные алгоритмы шифрования/взлома.

Для атаки Pass-the-hash (мы рассмотрим её в этой статье) применим только хеш NTLM, а хеши NTLMv1/NTLMv2 не подходят.

Остался ещё один вопрос, что такое хеши Net-NTLMv1/v2. Хеши Net-NTLMv1/v2 это сокращённое название для хешей NTLMv1/v2, то есть NTLMv1/v2 и Net-NTLMv1/v2 это одно и то же. А NTLM это другое.

В этой статье мы будем извлекать, взламывать и эксплуатировать без взлома хеш NTLM.

Что такое mimikatz

Программа mimikatz хорошо известна за возможность извлекать пароли в виде простого текста, хеши, ПИН коды и тикеты kerberos из памяти. mimikatz также может выполнять атаки pass-the-hash, pass-the-ticket или строить Golden тикеты.

Имеются реализации mimikatz в Meterpreter & Metasploit, DLL reflection в PowerShell и других продуктах. В принципе, mimikatz можно запускать в Wine на Linux, но не будут работать функции, связанные с извлечением данных непосредственно из Windows; функции извлечения хешей из дампов или расшифровки из файлов реестра должны работать в Linux.

Как установить mimikatz в Windows

mimikatz — это портативная утилита командной строки. То есть установка не требуется, но нужно уметь запустить, если вы не очень знакомы с командной строкой.

2. Откройте PowerShell (Win+x → Windows PowerShell (администратор)) или командную строку (Win+r → cmd).

3. В командной строке с помощью команды cd перейдите в папку с исполнимым файлом mimikatz.exe. К примеру, архив распакован в папку C:\Users\MiAl\Downloads, тогда исполнимый файл будет в папке C:\Users\MiAl\Downloads\mimikatz_trunk\x64\:

4. Запустите исполнимый файл.

Как извлечь хеш пароля пользователя NTLM из файлов реестра

Следующие команды нужно выполнять в консоли mimikatz.

Команда log включает запись всего вывода в ФАЙЛ:

К примеру, для запуска всего вывода в файл hash.txt:

Я скопировал с выключенного компьютера файлы SYSTEM и SAM, теперь для извлечения хеша мне нужно запустить команду вида:

Пример моей команды:



Вывод довольно обширный и много не до конца понятных данных. Интерес представляют последовательно идущие строки вида:

В моём примере интересные строки:

Также есть строки с именами пользователей:

Но после них нет строк с хешем NTLM, поскольку у этих пользователей не установлен пароль в системе.

Если вы хотите извлечь данные из файлов реестра текущей операционной системы, то выходим из mimikatz, для этого нажмите Ctrl+c.

Теперь сделаем дамп кустов реестра SYSTEM и SAM текущей системы:

Вновь запускаем mimikatz:

Включаем ведение журнала:

И выполняем команду с указанием файлов, в которые сохранены дампы кустов реестра, то есть SystemBkup.hiv и SamBkup.hiv:


Здесь найден только один пользователь с хешем:

На самом деле, для извлечения хешей NTLM из локальной системы необязательно было делать дамп кустов реестра. Другой вариант — повысить привилегии самой программы mimikatz и извлечь хеши непосредственно из системы. Для этого выполните команды:


Извлечение хеша NTLM из дампа lsass.DMP

По логике (и на практике) в дампе процесса Local Security Authority Process должен быть хеш только пользователя, выполнившего вход с паролем.

Вначале укажите путь до файла дампа командой вида:

Затем выполните команду:

Брут-форс хеша NTLM

Для взлома я возьму следующий хеш:

Загляним в справку Hashcat, чтобы узнать номер режима хеша NTLM:

То есть номер хеша NTLM равен 1000.

Чтобы запустить атаку по маске для взлома NTLM в Hashcat нужно выполнить команду вида:

Пример моей реальной команды:

  • hashcat — имя исполнимого файла. В Windows это может быть hashcat64.exe.
  • --force — игнорировать предупреждения
  • --hwmon-temp-abort=100 — установка максимальной температуры, после которой будет прерван перебор, на 100 градусов Цельсия
  • -m 1000 — тип хеша NTLM
  • -D 1,2 — означает использовать для взлома и центральный процессор, и видеокарту
  • -a 3 — означает атаку по маске
  • -i — означает постепенно увеличивать количество символов в генерируемых паролях
  • --increment-min 1 — означает начать с длины маски равной единице
  • --increment-max 10 — означает закончить перебор при длине маске равный десяти
  • -1 ?l?d — пользовательский набор символов номер 1, в него включены маленькие латинские буквы (?l) и цифры (?d)
  • ca76a176340f0291e1cc8ea7277fc571 — хеш для взлома
  • ?1?1?1?1?1?1?1?1?1 — маска из пользовательского набора символов


Взломаем ещё один хеш:

Команда (другой хеш и другой набор пользовательских символов):


Итак, в этой статье мы научились извлекать хеш NTLM и взламывать пароль Windows. А что делать, если не удалось взломать NTLM? Ответ на этот вопрос смотрите во второй части, которая называется «Использование NTLM без взлома пароля: атака Pass-the-hash».

date

18.05.2021

directory

Windows 10, Windows Server 2016, Безопасность

comments

комментариев 28

В этой статье, написанной в рамках серии статьей, посвященной обеспечению безопасности Windows-систем, мы познакомимся с достаточно простой методикой получения паролей пользователей Windows с помощью Open Source утилиты Mimikatz.

Программа mimikatz позволяет извлечь из памяти Windows пароли в виде простого текста, хэши паролей, билеты kerberos из памяти и т.д. Также mimikatz позволяет выполнить атаки pass-the-hash, pass-the-ticket или генерировать Golden тикеты. Функционал mimikatz доступен также через Metasploit Framework.

В этой статье мы покажем, как получить пароли пользователей в Windows Server 2016 или Windows с помощью mimikatz.

Дисклаймер. Информация и технологии, описанные в данной статье, стоит использовать только в информационно-ознакомительных целях, и ни в коем случае не применять для получения доступа к учетным записям, информации и системам третьих лиц.

Извлекаем хэши паролей пользователей из памяти Windows

получение NTLM хэша пароля пользователя Windows из LSASS

Можно использовать mimikatz не в интерактивном, а в командном режиме. Чтобы автоматически получить хэши паролей пользователей и экспортировать в текстовый файл, выполните команды:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" >> c:\tools\mimikatz\output.txt

Как вы видите, сервис быстро нашел значения для этих NTLM хэшей. Т.е. мы получили пароли пользователей в открытом виде (представьте, что один из них это администратор домена….).

расшифровка ntlm хэшей

Если вы используете более сложные пароли, расшифровать их будет намного сложнее. Поэтому всегда включаете повышенную сложность в политике паролей Windows и выполняйте аудит надежности паролей в домене.

Как вы видите, благодаря mimikatz мы получили NTLM хеши всех активных пользователей! Все это благодаря тому, что на данном компьютере разрешено использовать режим отладки, выставляя флаг SeDebugPrivilege для нужного процесса. В этом режиме программы могут получать низкоуровневый доступ к памяти процессов, запущенных от имени системы.

Примечание. В июне 2017 года многие крупные компании России, Украины и других стран были заражены вирусом-шифровальщиком not-petya, которые для сбора паролей пользователей и администраторов домена использовал в том числе интегрированный модуль mimikatz.

Получение хешей паролей пользователей из дампа памяти Windows

Рассмотренная выше методика получения хэшей пароля не сработает, если на сервере установлен антивирус, блокирующего инъекцию. В этом случае придется сначала создать дамп памяти процесса LSASS на целевом сервере, и затем на другом компьютере с помощью mimikatz извлечь из него хэши пароли для сессий пользователей.

Создать дамп памяти процесса в Windows довольно просто. Запустите Task Manager, найдите процесс lsass.exe, щелкните по нему правой клавишей и выберите Create dump file.

дамп процесса lsass.exe

Windows сохраните дам памяти в указанную папку.

Вам осталось только разобрать дамп с помощью mimikatz (можно на другом компьютере). Загрузите дамп памяти в mimikatz:

Mimikatz “sekurlsa::minidump C:\Users\anovach\AppData\Local\Temp\lsass.DMP”

Вывести информацию о пользователях, и хэшах их паролей из сохраненного дампа памяти:

получение ntlm хэшей из дампа памяти

Вы можете получить дамп памяти с удаленного компьютера с помощью psexec, или через WinRM (при наличии прав администратора), и затем из него пароли пользователей.

Также для получения дампа можно использовать утилиту procdump от Sysinterals.

procdump -ma lsass.exe lsass.dmp

Дамп памяти для процесса LSASS можно получить с помощью PowerShell функции Out-Minidump.ps1 . Импортируйте функцию Out-Minidump в PoSh и создайте дамп памяти процесса LSASS:

Import-Module .\OutMiniDump.ps1
Get-Process lsass | Out-Minidump


Получение паролей пользователей из файлов виртуальных машины и файлов гибернации

Также возможно извлечь пароли пользователей из файлов дампов памяти, файлов гибернации системы (hiberfil.sys) и. vmem файлов виртуальных машин (файлы подкачки виртуальных машин и их снапшоты).

Для этого понадобится пакет Debugging Tool for Windows (WinDbg), сам mimikatz и утилита преобразования .vmem в файл дампа памяти (для Hyper-V это может быть vm2dmp.exe или MoonSols Windows Memory toolkit для vmem файлов VMWare).

Например, чтобы преобразовать файл подкачки vmem виртуальной машины VMWare в дамп, выполните команду:

bin2dmp.exe "winsrv2008r2.vmem" vmware.dmp

Полученный дамп откройте в WinDbg (File -> Open Crash Dump). Загрузите библиотеку mimikatz с именем mimilib.dll (используйте версию библиотеки в зависимости от разрядности Windows):

Найдите в дампе процесс lsass.exe:

!process 0 0 lsass.exe

Поиск в дампе памяти процесса lsass

И наконец, выполните:

.process /r /p fffffa800e0b3b30
!mimikatz

В результате вы получите список пользователей Windows, и NTLM хэши их паролей, или даже пароли в открытом виде.

Получаем пароль пользователя Windows

Как узнать пароли пользователей Windows в открытом виде через протокол WDigest?

Протокол WDigest по-умолчанию отключен во всех новых версиях Windows, в том числе Windows 10 и Windows Server 2016. Но не удален окончательно. Если у вас есть права администратора в Windows, вы можете включить протокол WDiget, дождаться входа пользователей и получить их пароли.

Включите поддержку Wdigest:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1

Дождитесь входа пользователей (в Windows 10 нужно пользователю нужно перезайти, в Windows Server 2016 достаточно разблокировать сессию после блокировки экрана) и получите их пароли через mimikatz:

Как вы видите, в секции wdigest содержится пароль пользователя в открытом виде:

получение пароля пользователя в открытом виде

Извлекаем пароли локальных пользователей Windows из SAM

С помощью mimikatz вы можете извлечь хэши паролей локальных пользователей Windows из SAM так:

Также можно извлечь NTLM хэши SAM из реестра.

экспорт реестра

  1. Экспортируйте содержимое веток реестра SYSTEM и SAM в файлы: reg save hklm\sam c:\tmp\sam.hiv
    reg save hklm\security c:\tmp\sec.hiv
  2. Затем с помощью Mimikatz извлеките хэши паролей: privilege::debug
    token::elevate
    lsadump::sam c:\tmp\sam.hiv c:\tmp\sec.hiv

извлечение ntlm хэшей из реестра

Использование Mimikatz в pass-the-hash атаках

Если у пользователя используется достаточно сложный пароль, и получить его быстро не удается, можно использовать Mimikatz для атаки pass-the-hash (повторное использование хэша). В этом случае хэш может использовать для запуска процессов от имени пользователя. Например, получив NTLM хэш пароля пользователя, следующая команда запустит командную строку от имени привилегированного аккаунта:

privilege::debug
sekurlsa::pth /user:Administrator /domain:srv01 /ntlm:e19ccf75ee54e06b06a5907af13cef42 /run:powershell.exe

использование mimikatz для запуска команд по известному хэшу

Также для использования NTLM хэша для выполнения команд на удаленных компьютерах можно использовать утилиту Invoke-TheHash. Позволяет также

Просмотр сохраненных паролей в Windows

В Windows вы можете сохранять пароли в Windows Credential Manager (это могут быть пароли для доступа к удаленным компьютерам, сайтам, пароли для RDP подключений в формате TERMSRV/server1). Mimikatz может извлечь эти пароли из Credential Manager и показать их вам:

Как вы видите, сохраненый пароль показан в секции credman.

получаем сохраненные пароли Windows

Пароли для автоматического входа в Windows хранятся в реестре в открытом виде. Также просто извлечь сохраненные Wi-Fi пароли.

Дампим пароли при входе в Windows

Еще один интересный способ дампа паролей в Windows заключается в использовании дополнительно SSP провайдера (Security Support Provider).

поддельный ssp провайдер mimilib.dll

  1. Скопируйте файл библиотеки Mimikatz mimilib.dll в папку C:\Windows\System32\.
  2. Зарегистрируйте дополнительного провайдер командой: reg add "hklm\system\currentcontrolset\control\lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ
  3. При входе каждого пользователя в Windows его пароль будет записываться в файл kiwissp.log. Можно вывести все пароли через PowerShell:
    Get-Content C:\Windows\System32\kiwissp.log

пароли всех пользователей зписываются при входе в Windows в тектовый файл

Как защитить Windows от извлечения паролей из памяти?

В Windows 8.1 и Server 2012 R2 (и выше) возможности по извлечению паролей через LSASS несколько ограничены. Так, по-умолчанию в этих системах в памяти не хранятся LM хэш и пароли в открытом виде. Этот же функционал бэкпортирован и на более ранние версии Windows (7/8/2008R2/2012), в которых нужно установить специальное обновление KB2871997 (обновление дает и другие возможности усилить безопасность системы) и отключить WDigest в реестре (в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest установить параметр DWORD реестра UseLogonCredential равным 0).

Если после установки обновления и ключа UseLogonCredential попробовать извлечь пароли из памяти, вы увидите, что mimikatz с помощью команды creds_wdigest не сможет извлечь пароли и хэши.

mimikatz creds_wdigest не работает в Windows 8.1 / 2012 R2 и выше

Выше мы показывали, как при наличии прав администратора можно легко установить этот ключ в уязвимое значение. После этого вы опять сможете получить доступ к паролям в памяти LSA.

В инструментарии mimikatz есть и другие инструменты получения паролей и их хэшей из памяти (WDigest, LM-hash, NTLM-hash, модуль для захвата билетов Kerberos), поэтому в качестве рекомендаций рекомендуется реализовать следующие меры:

Читайте также: