В этой статье, написанной в рамках серии статьей, посвященной
обеспечению безопасности Windows-систем (в последний статье мы обсуждали
вопросы безопасности паролей, хранимых в GPP)
, мы познакомимся с достаточно простой методикой получения в открытом
виде паролей всех пользователей, работающих в Windows-системе с помощью
Open Source утилиты Mimikatz.
В принципе, это так, но есть различные нюансы, касающиеся пользователей, залогиненых в конкретной системе Windows. Дело в том, что некоторые системные процессы в своих служебных целях все-таки используют пароли пользователей в открытом (или зашифрованном) виде, а не их хэши.
Так, например, механизм дайджест-аутентификации (HTTP Digest Authentication), используемый для поддержки SSO (Single Sign On), для своей работы требует знания вводимого пароля пользователя, а не только его хеша (о том, почему разработчиками это было реализовано именно так, можно только догадываться). Пароли (именно пароли, а не их хэши) пользователей в зашифрованном виде хранятся в памяти ОС, а если быть более точным в памяти процесса LSASS.EXE. Проблема в том, что шифрование паролей реализовано с помощью стандартных Win32 функций LsaProtectMemory и LsaUnprotectMemory, которые предназначены для шифрования/расшифровки некоторого участка памяти. Утилита французских разработчиков mimikatz позволяет получать зашифрованные данные из памяти и расшифровывать их с помощью функции LsaUnprotectMemory, позволяя вывести на консоль все учетные записи пользователей, авторизованных в системе, и их пароли (в открытом, уже расшифрованном виде!). Для эксплуатации уязвимости атакующий должен иметь возможность присоединить специальную библиотеку к процессу lsass.exe.
Скачать утилиту mimikatz можно тут: http://blog.gentilkiwi.com/mimikatz
(последняя команда для все активных пользователей в системе отобразит имена учетных записей и их пароли).

Как вы видите, утилита показала нам суперсложный пароль пользователя user в открытом виде! Все это благодаря тому, что на данном компьютере разрешено использовать режим отладки, выставляя флаг SeDebugPrivilege для нужного процесса. В этом режиме программы могут получать низкоуровневый доступ к памяти процессов, запущенных от имени системы.
Представьте себе, что это терминальный сервер, на котором одновременно работают множество пользователей, и на котором есть в том числе сессия администратора предприятия. Т.е. при наличии прав администратора на одном единственном сервере можно даже перехватить пароль администратора домена.
Получившийся дамп памяти, в нашем примере это lsass_592.dmp
(по умолчанию он сохраняется в каталоге %windir\system32%), нужно
скопировать на другой компьютер, в которой имеется утилита mimikatz и
выполнить команду:

Как вы видите, ничего сложного.
Таким способом можно получить дамп памяти с удаленного компьютера с помощью psexec или через WinRM (при наличии прав администратора) и извлечь из него пароль пользователя.
Для этого понадобится пакет Debugging Tool for Windows (WinDbg), сам mimikatz и утилита преобразования .vmem в файл дампа памяти (для Hyper-V это может быть vm2dmp.exe или MoonSols Windows Memory toolkit для vmem файлов VMWare).
Например, в случае необходимости преобразовать файл подкачки vmem виртуальной машины VMWare в дамп, выполним команду:
И наконец, набираем:

Получение паролей пользователей Windows в открытом виде с помощью утилиты Mimikatz работает на следующих системах, в том числе запущенных на гипервизорах Hyper-V 2008/2012 и VMWare различных версий:
Если после установки обновления и ключа UseLogonCredential попробовать извлечь пароли из памяти, вы увидите, что mimikats с помощью команды creds_wdigest не сможет извлечь пароли и хэши.

Однако при наличии прав администратора вы сможете легко изменить этот ключ:

После этого вы опять сможете получить доступ к паролям в памяти LSA.
В инструментарии mimikatz есть и другие инструменты получения паролей и их хэшей из памяти (WDigest, LM-hash, NTLM-hash, модуль для захвата билетов Kerberos), поэтому в качестве рекомендаций рекомендуется реализовать следующие меры:
На более старых системах нужно в качестве временного решения нужно ограничить получение привилегии debug и отключить поставщика безопасности wdigest через реестр. Для этого в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa найдите ключ Security Packages и удалить из списка пакетов строку wdigest.
Однако нужно понимать, что атакующему, при наличии соответствующих прав на реестр, не составит труда вернуть настройки обратно.
Выводы. Еще раз напоминаем прописные истины:
Дисклаймер.
Информация и технологии, описанные в данной статье, стоит использовать
только в информационно-ознакомительных целях, и ни в коем случае не
применять для получения доступа к учетным записям, информации и системам
третьих лиц.
Содержание:
- Хранение паролей и хэшей в памяти Windows
- Используем Mimikatz для извлечения паролей пользователей из lsass.exe онлайн
- Получение пароля пользователя из дампа памяти Windows
- Получение паролей пользователей из файлов виртуальных машины и файлов гибернации
- Использование Mimikatz в pass-the-hash атаках
- Как защитить Windows от извлечения паролей из памяти через mimikatz?
Хранение паролей и хэшей в памяти Windows
Большинство системных администраторов пребывают в уверенности, что Windows не хранит пароли пользователей в открытом виде, а только в виде его хэша. И хотя на сегодня существует большое количество утилит, способных извлечь хэши пользовательских паролей из системы, можно с определенной уверенностью сказать, что при использовании достаточно сложного пароля не «из словаря», у злоумышленника практически нет шансов подобрать его прямым брутфорсом или по базе уже рассчитанных хэшей.В принципе, это так, но есть различные нюансы, касающиеся пользователей, залогиненых в конкретной системе Windows. Дело в том, что некоторые системные процессы в своих служебных целях все-таки используют пароли пользователей в открытом (или зашифрованном) виде, а не их хэши.
Так, например, механизм дайджест-аутентификации (HTTP Digest Authentication), используемый для поддержки SSO (Single Sign On), для своей работы требует знания вводимого пароля пользователя, а не только его хеша (о том, почему разработчиками это было реализовано именно так, можно только догадываться). Пароли (именно пароли, а не их хэши) пользователей в зашифрованном виде хранятся в памяти ОС, а если быть более точным в памяти процесса LSASS.EXE. Проблема в том, что шифрование паролей реализовано с помощью стандартных Win32 функций LsaProtectMemory и LsaUnprotectMemory, которые предназначены для шифрования/расшифровки некоторого участка памяти. Утилита французских разработчиков mimikatz позволяет получать зашифрованные данные из памяти и расшифровывать их с помощью функции LsaUnprotectMemory, позволяя вывести на консоль все учетные записи пользователей, авторизованных в системе, и их пароли (в открытом, уже расшифрованном виде!). Для эксплуатации уязвимости атакующий должен иметь возможность присоединить специальную библиотеку к процессу lsass.exe.
Скачать утилиту mimikatz можно тут: http://blog.gentilkiwi.com/mimikatz
Инфо. Утилита mimikatz детектируется большинством антивирусов и браузерами, как потенциально опасное ПО (хакерская утилита).
Утилита mimikatz позволяет извлечь пароли пользователей непосредственно из памяти (путем инъекции в lsass.exe библиотеки sekurlsa.dll), из сохраненного дампа памяти компьютера или даже из файла гибернации.Используем Mimikatz для извлечения паролей пользователей из lsass.exe онлайн
- Скачайте и запустите Mimikatz.exe с правами администратора (есть x86 и x64-версии утилиты для соответствующих систем)
- В контексте утилиты выполните команды
mimikatz # privilege::debug
mimikatz # sekurlsa::logonPasswords full
(последняя команда для все активных пользователей в системе отобразит имена учетных записей и их пароли).

Как вы видите, утилита показала нам суперсложный пароль пользователя user в открытом виде! Все это благодаря тому, что на данном компьютере разрешено использовать режим отладки, выставляя флаг SeDebugPrivilege для нужного процесса. В этом режиме программы могут получать низкоуровневый доступ к памяти процессов, запущенных от имени системы.
Представьте себе, что это терминальный сервер, на котором одновременно работают множество пользователей, и на котором есть в том числе сессия администратора предприятия. Т.е. при наличии прав администратора на одном единственном сервере можно даже перехватить пароль администратора домена.
Примечание. В июне
2017 года многие крупные компании России, Украины и других стран были
заражены вирусом-шифровальщиком not-petya, которые для сбора паролей
пользователей и администраторов домена использовал в том числе
интегрированный модуль mimikatz.
Примечание.
Данная методика не сработает при наличии на системе современного
антивируса, блокирующего инъекцию. В этом случае придется сначала
создать дамп памяти машины и уже на другой машине «вытянуть» из него
пароли для сессий всех пользователей.
Получение пароля пользователя из дампа памяти Windows
Дамп памяти для процесса LSASS можно получить с помощью PowerShell функции Out-Minidump.ps1 . Импортируйте функцию Out-Minidump в PoSh и создайте дамп памяти процесса LSASS:Get-Process lsass | Out-Minidump

Mimikatz “sekurlsa::minidump lsass_592.dmp”
И следующей командой получим из сохранённого дампа памяти список пользователей, работающих в системе и их пароли:mimikatz # sekurlsa::logonPasswords

Как вы видите, ничего сложного.
Таким способом можно получить дамп памяти с удаленного компьютера с помощью psexec или через WinRM (при наличии прав администратора) и извлечь из него пароль пользователя.
Получение паролей пользователей из файлов виртуальных машины и файлов гибернации
Идем дальше. С помощью простых манипуляций злоумышленник может легко извлечь пароли пользователей из файлов дампов памяти, файла гибернации системы (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 (версию выбрать в зависимости
от разрядности системы):.load mimilib.dll
Ищем в дампе процесс lsass.exe:!process 0 0 lsass.exe

.process /r /p fffffa800e0b3b30
!mimikatz
и получаем список пользователей Windows и их пароли в открытом виде.
Получение паролей пользователей Windows в открытом виде с помощью утилиты Mimikatz работает на следующих системах, в том числе запущенных на гипервизорах Hyper-V 2008/2012 и VMWare различных версий:
- Windows Server 2008 / 2008 R2
- Windows Server 2012/ R2
- Windows 7
- Windows 8
Примечание. Кстати говоря, функционал mimikatz уже внедрен в Metasploit Framework.
Использование Mimikatz в pass-the-hash атаках
В том случае, если не удается получить пароль пользователя, а только его хеш, Mimikatz можно использовать для так называемой атаки pass-the-hash (повторное использованиу хэша). В этом случае хэш может использовать для запуска процессов от имени пользователя. Например, получив NTLM хэш пользователя, следующая команда запустит командную строку от имени привилегированного аккаунта:sekurlsa::pth /user:Administrator /domain:CORP /ntlm:{NTLM-хэш} /run:cmd
Как защитить Windows от извлечения паролей из памяти через mimikatz?
В Windows 8.1 и Server 2012 R2 (и выше) возможности по извлечению паролей через LSASS несколько ограничены. Так, по-умолчанию в этих системах в памяти не хранятся LM хэш и пароли в открытом виде. Этот же функционал бэкпортирован и на более ранние версии Windows (7/8/2008R2/2012), в которых нужно установить специальное обновление KB2871997 (обновление дает и другие возможности усилить безопасность системы) и в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest установить параметр DWORD реестра UseLogonCredential равным 0 (WDigest отключен).Если после установки обновления и ключа UseLogonCredential попробовать извлечь пароли из памяти, вы увидите, что mimikats с помощью команды creds_wdigest не сможет извлечь пароли и хэши.

Однако при наличии прав администратора вы сможете легко изменить этот ключ:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1

После этого вы опять сможете получить доступ к паролям в памяти LSA.
В инструментарии mimikatz есть и другие инструменты получения паролей и их хэшей из памяти (WDigest, LM-hash, NTLM-hash, модуль для захвата билетов Kerberos), поэтому в качестве рекомендаций рекомендуется реализовать следующие меры:
- Запретить хранить пароли с использование обратимого шифрования (Reversible Encryption)
- Запретить использование сохранённых паролей в Credential Manager
- Запретить кэшировать учетные данные доменных пользователей (ключ CachedLogonsCount и политика Interactive logon: Number of previous logons to cache)
- Если функциональный уровень домена не ниже Windows Server 2012 R2, можно добавить учетные записи администартороав в специальную группу Protected Users
Совет. Подробная статья о способах защите памяти Windows систем от извлечения паролей и хэшей — Методы защиты от mimikatz в домене Windows
При
тестировании mimkatz в Windows 10 Pro x64 с настройками утилита mimkatz
2.0 смогла получить хэши пароля активного пользователя (но не пароль в
открытом виде).На более старых системах нужно в качестве временного решения нужно ограничить получение привилегии debug и отключить поставщика безопасности wdigest через реестр. Для этого в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa найдите ключ Security Packages и удалить из списка пакетов строку wdigest.

Выводы. Еще раз напоминаем прописные истины:
- Не стоит использовать одинаковые пароли для разных сервисов (особенно терминальных, находящихся во владении третьих лиц).
- Задумайтесь о безопасности ваших паролей и данных, находящихся на виртуальных машинах в облаках, ведь вы не можете быть уверенными в том, у кого еще имеется доступ к гипервизорам и хранилищу, на котором расположены файлы виртуальных машины.
- Минимизируйте в своих системах количество учетных записей, обладающих правами локального администратора (см. гайд об организации защиты учетных записей администраторов в среде Windows)
- Никогда не заходите с учетной записью администратора домена на сервера и компьютеры, доступные другим пользователям
Ежедневник Админа: Mimikatz: Извлекаем Пароли Пользователей Windows Из Памяти В Открытом Виде >>>>> Download Now
ОтветитьУдалить>>>>> Download Full
Ежедневник Админа: Mimikatz: Извлекаем Пароли Пользователей Windows Из Памяти В Открытом Виде >>>>> Download LINK
>>>>> Download Now
Ежедневник Админа: Mimikatz: Извлекаем Пароли Пользователей Windows Из Памяти В Открытом Виде >>>>> Download Full
>>>>> Download LINK xG