91 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

В каком виде операционная система хранит пароли?

Где на компьютере хранятся пароли и как их просмотреть в случае необходимости?

То, что пользователи достаточно часто забывают пароли от всевозможных программ, интернет-сайтов или даже те комбинации, которые используются для входа в систему, знают все. Поэтому и возникает проблема их быстрого восстановления. Но где хранятся все вводимые на компьютере пароли? Как их найти и посмотреть в случае необходимости? Увы, все далеко не так просто. В самом простом случае можно узнать пароли для интернет-ресурсов, а вот с локальными или сетевыми паролями возникает множество проблем, тем более что средствами Windows просмотреть их не представляется возможным, а использование специализированного программного обеспечения освоить могут далеко не все рядовые пользователи. Но для понимания общей картины некоторую ясность внесет представленный ниже материал.

Где на компьютере хранятся пароли: общая информация

Для начала следует отметить тот факт, что какого-то единого и универсального места сохранения парольных комбинаций нет. Основная проблема состоит в том, что операционная система использует собственные хранилища в виде недоступных пользователю и защищенных от просмотра зашифрованных файлов. Некоторые программы могут сохранять пользовательские данные в собственных файлах настроек. А вот если разбираться в том, где на компьютере хранятся пароли браузеров, тут знание местонахождения не нужно, поскольку просмотреть все сохраненные комбинации можно прямо в них самих. Но об этом чуть позже.

В каком виде и где хранятся сохраненные на компьютере пароли, относящиеся ко входу в систему и сетевым настройкам?

Но давайте отталкиваться от того, что нам для начала нужно узнать именно локацию, в которой сохраняется файл с паролями пользователей, а не просмотреть исходную комбинацию. Локальные пользовательские комбинации, относящиеся ко входу в систему или для возможности использования сетевых подключений, сохраняются непосредственно в каталоге каждого пользователя, условно обозначаемого как User SID. В версии ХР в качестве локации используется папка Credentials, а в «Висте» и выше таким местом выбран подкаталог Random ID.

В ветке реестра HKU локациям файлов паролей соответствуют ключи в виде длинных комбинаций, начинающиеся со значений «S-1-5-21». Но это в большинстве случаев только указание на сами файлы, поскольку просмотреть сохраненные комбинации невозможно ни в самих файлах, ни даже в реестре, хотя изменить исходные хранящиеся на компьютере пароли можно совершенно элементарно через соответствующие настройки управления сетевыми подключениями или учетными записями пользователей, которые доступны в графическом интерфейсе.

Для администраторских паролей входа в систему можно обратить внимание на раздел реестра SAM.

Для VPN- и Dial-Up-подключений в ветке реестра HKLM имеются разделы Secrets и SECURITY с ключами вроде RasDialParams, но и они ровным счетом никакой особой информации обычному юзеру не дают. Другое дело, что просмотреть и изменить пароль сетевого доступа можно либо в настройках Windows, либо прямо на маршрутизаторе. Кстати сказать, по схожему принципу сохраняются и парольные комбинации для большинства встроенных в систему почтовых клиентов или утилит от сторонних разработчиков, если они представлены именно в виде отдельных приложений, что не относится к интернет-сервисам вроде почты Mail.Ru или чего-то подобного.

Место сохранения паролей для программы Skype и проблемы просмотра искомых комбинаций

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

Установленное приложение хранит пользовательскую комбинаций в специальном XML-файле, где паролю соответствует значение хэша ( ). Да, но здесь пароль представлен в 16-ричном виде и просто так просмотреть его не получится. Поэтому для таких целей необходимо использовать HEX-редактор. Но и применение таких утилит без соответствующих знаний результата может не дать.

Просмотр паролей в браузерах

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

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

Специализированные программы для «вытаскивания» всех вводимых паролей

Но можно предположить, что пользователю мало знать, где на компьютере хранятся пароли, а нужно еще их как-то «вытащить» из системы для просмотра. Для выполнения таких операций в самих Windows-системах средств нет, зато без проблем можно воспользоваться всевозможным и сторонними программами наподобие Password Recovery Tool, PSexec, входящей в состав пакета PSTools, PasswordSpy или аналогичными.

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

Послесловие

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

Mimikatz: Извлекаем пароли пользователей Windows из памяти в открытом виде

В этой статье, написанной в рамках серии статьей, посвященной обеспечению безопасности Windows-систем (в последний статье мы обсуждали вопросы безопасности паролей, хранимых в GPP) , мы познакомимся с достаточно простой методикой получения в открытом виде паролей всех пользователей, работающих в Windows-системе с помощью Open Source утилиты 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 позволяет извлечь пароли пользователей непосредственно из памяти ( путем инъекции в lsass .exe библиотеки sekurlsa .dll ), из сохраненного дампа памяти компьютера или даже из файла гибернации.

Используем Mimikatz для извлечения паролей пользователей из lsass.exe онлайн

  • Скачайте и запустите Mimikatz.exe с правами администратора (есть x86 и x64-версии утилиты для соответствующих систем)
  • В контексте утилиты выполните команды

mimikatz # privilege::debug
mimikatz # sekurlsa::logonPasswords full
(последняя команда для все активных пользователей в системе отобразит имена учетных записей и их пароли).

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

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

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

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

Получившийся дамп памяти, в нашем примере это lsass_592.dmp (по умолчанию он сохраняется в каталоге %windirsystem32%), нужно скопировать на другой компьютер, в которой имеется утилита mimikatz и выполнить команду:

И следующей командой получим из сохранённого дампа памяти список пользователей, работающих в системе и их пароли:

Как вы видите, ничего сложного.

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

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

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

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

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

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

Ищем в дампе процесс lsass.exe:

И наконец, набираем:

и получаем список пользователей Windows и их пароли в открытом виде.

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

  • Windows Server 2008 / 2008 R2
  • Windows Server 2012/ R2
  • Windows 7
  • Windows 8

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

В том случае, если не удается получить пароль пользователя, а только его хеш, Mimikatz можно использовать для так называемой атаки pass-the-hash (повторное использованиу хэша). В этом случае хэш может использовать для запуска процессов от имени пользователя. Например, получив NTLM хэш пользователя, следующая команда запустит командную строку от имени привилегированного аккаунта:
sekurlsa::pth /user:Administrator /domain:CORP /ntlm: /run:cmd

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

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

Читать еще:  Более 350 бесплатных инструментов для разработчиков

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

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

reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1

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

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

  • Запретить хранить пароли с использование обратимого шифрования (Reversible Encryption)
  • Отключить NTLM
  • Запретить использование сохранённых паролей в Credential Manager
  • Запретить кэшировать учетные данные доменных пользователей (ключ CachedLogonsCount и политика Interactive logon: Number of previous logons to cache)
  • Если функциональный уровень домена не ниже Windows Server 2012 R2, можно добавить учетные записи администартороав в специальную группу Protected Users

При тестировании mimkatz в Windows 10 Pro x64 с настройками утилита mimkatz 2.0 смогла получить хэши пароля активного пользователя (но не пароль в открытом виде).

На более старых системах нужно в качестве временного решения нужно ограничить получение привилегии debug и отключить поставщика безопасности wdigest через реестр. Для этого в ветке HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa найдите ключ Security Packages и удалить из списка пакетов строку wdigest. Однако нужно понимать, что атакующему, при наличии соответствующих прав на реестр, не составит труда вернуть настройки обратно.

Выводы. Еще раз напоминаем прописные истины:

  • Не стоит использовать одинаковые пароли для разных сервисов (особенно терминальных, находящихся во владении третьих лиц).
  • Задумайтесь о безопасности ваших паролей и данных, находящихся на виртуальных машинах в облаках, ведь вы не можете быть уверенными в том, у кого еще имеется доступ к гипервизорам и хранилищу, на котором расположены файлы виртуальных машины.
  • Минимизируйте в своих системах количество учетных записей, обладающих правами локального администратора (см. гайд об организации защиты учетных записей администраторов в среде Windows)
  • Никогда не заходите с учетной записью администратора домена на сервера и компьютеры, доступные другим пользователям

Mimikatz: Извлекаем пароли пользователей Windows из памяти в открытом виде

В этой статье, написанной в рамках серии статьей, посвященной обеспечению безопасности Windows-систем (в последний статье мы обсуждали вопросы безопасности паролей, хранимых в GPP) , мы познакомимся с достаточно простой методикой получения в открытом виде паролей всех пользователей, работающих в Windows-системе с помощью Open Source утилиты 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 позволяет извлечь пароли пользователей непосредственно из памяти ( путем инъекции в lsass .exe библиотеки sekurlsa .dll ), из сохраненного дампа памяти компьютера или даже из файла гибернации.

Используем Mimikatz для извлечения паролей пользователей из lsass.exe онлайн

  • Скачайте и запустите Mimikatz.exe с правами администратора (есть x86 и x64-версии утилиты для соответствующих систем)
  • В контексте утилиты выполните команды

mimikatz # privilege::debug
mimikatz # sekurlsa::logonPasswords full
(последняя команда для все активных пользователей в системе отобразит имена учетных записей и их пароли).

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

Читать еще:  Giveaway of the Day — лицензионные программы бесплатно

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

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

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

Получившийся дамп памяти, в нашем примере это lsass_592.dmp (по умолчанию он сохраняется в каталоге %windirsystem32%), нужно скопировать на другой компьютер, в которой имеется утилита mimikatz и выполнить команду:

И следующей командой получим из сохранённого дампа памяти список пользователей, работающих в системе и их пароли:

Как вы видите, ничего сложного.

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

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

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

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

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

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

Ищем в дампе процесс lsass.exe:

И наконец, набираем:

и получаем список пользователей Windows и их пароли в открытом виде.

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

  • Windows Server 2008 / 2008 R2
  • Windows Server 2012/ R2
  • Windows 7
  • Windows 8

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

В том случае, если не удается получить пароль пользователя, а только его хеш, Mimikatz можно использовать для так называемой атаки pass-the-hash (повторное использованиу хэша). В этом случае хэш может использовать для запуска процессов от имени пользователя. Например, получив NTLM хэш пользователя, следующая команда запустит командную строку от имени привилегированного аккаунта:
sekurlsa::pth /user:Administrator /domain:CORP /ntlm: /run:cmd

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

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

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

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

reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1

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

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

  • Запретить хранить пароли с использование обратимого шифрования (Reversible Encryption)
  • Отключить NTLM
  • Запретить использование сохранённых паролей в Credential Manager
  • Запретить кэшировать учетные данные доменных пользователей (ключ CachedLogonsCount и политика Interactive logon: Number of previous logons to cache)
  • Если функциональный уровень домена не ниже Windows Server 2012 R2, можно добавить учетные записи администартороав в специальную группу Protected Users

При тестировании mimkatz в Windows 10 Pro x64 с настройками утилита mimkatz 2.0 смогла получить хэши пароля активного пользователя (но не пароль в открытом виде).

На более старых системах нужно в качестве временного решения нужно ограничить получение привилегии debug и отключить поставщика безопасности wdigest через реестр. Для этого в ветке HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa найдите ключ Security Packages и удалить из списка пакетов строку wdigest. Однако нужно понимать, что атакующему, при наличии соответствующих прав на реестр, не составит труда вернуть настройки обратно.

Выводы. Еще раз напоминаем прописные истины:

  • Не стоит использовать одинаковые пароли для разных сервисов (особенно терминальных, находящихся во владении третьих лиц).
  • Задумайтесь о безопасности ваших паролей и данных, находящихся на виртуальных машинах в облаках, ведь вы не можете быть уверенными в том, у кого еще имеется доступ к гипервизорам и хранилищу, на котором расположены файлы виртуальных машины.
  • Минимизируйте в своих системах количество учетных записей, обладающих правами локального администратора (см. гайд об организации защиты учетных записей администраторов в среде Windows)
  • Никогда не заходите с учетной записью администратора домена на сервера и компьютеры, доступные другим пользователям
голоса
Рейтинг статьи
Ссылка на основную публикацию
Статьи c упоминанием слов: