В этой статье, написанной в рамках серии статьей, посвященной
обеспечению безопасности 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 для нужного процесса. В этом режиме программы могут получать низкоуровневый доступ к памяти процессов, запущенных от имени системы.
Представьте себе, что это терминальный сервер, на котором одновременно работают множество пользователей, и на котором есть в том числе сессия администратора предприятия. Т.е. при наличии прав администратора на одном единственном сервере можно даже перехватить пароль администратора домена.
Как вы видите, ничего сложного.
Таким способом можно получить дамп памяти с удаленного компьютера с помощью 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
Получившийся дамп памяти, в нашем примере это lsass_592.dmp
(по умолчанию он сохраняется в каталоге %windir\system32%), нужно
скопировать на другой компьютер, в которой имеется утилита mimikatz и
выполнить команду: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