Microsoft ввела фильтры паролей в качестве метода для системных администраторов для применения политик паролей и уведомления об изменениях. Фильтры используются для проверки новых паролей и обеспечения их соответствия политике паролей, а также не используются пароли, которые могут соответствовать политике домена, но считаются слабыми. Например, пароль из 8 символов может быть приемлемым для групповой политики, однако, если он имеет форму $ companyname123 или Spring2020 считается слабым, так как эти пароли могут быть использованы злоумышленником во время атаки методом подбора. Фильтры паролей помогают администраторам предотвращать пароли такого типа, чтобы пользователи могли выбирать более уникальные пароли.
Во время красной оценки команды фильтры паролей могут использоваться в качестве метода для получения учетных данных от пользователей домена (контроллер домена) или локальных учетных записей (локальный компьютер). Это связано с тем, что для фильтрации пароля для проверки пароля требуется от локального органа безопасности (LSA) пароль пользователя в виде простого текста. Поэтому установка и регистрация фильтра произвольных паролей может использоваться для сбора учетных данных каждый раз, когда пользователь меняет свой пароль. Этот метод требует повышенного доступа (локальный администратор) и может быть реализован в три этапа:
Запрос на изменение пароля - поток
Перед сохранением нового пароля в диспетчере учетных записей безопасности (SAM) местный орган безопасности требует проверки с помощью фильтра паролей. Согласно документации Microsoft, каждый фильтр паролей вызывается дважды для проверки принятого нового пароля и для уведомления фильтра об изменении пароля.
Filer DLL загружен в lsass.exe
DLL фильтра паролей
Раздел реестра, который отвечает за загрузку DLL в процесс LSASS, представляет собой « Пакеты уведомлений », которые можно найти в следующем разделе реестра:
Доступ к учетным данным - раздел реестра пакетов уведомлений
Следующие команды могут запросить ключ реестра из командной строки, чтобы перечислить существующие фильтры паролей и изменить ключ, включив в него DLL фильтра произвольных паролей (регистрация DLL).
Доступ к учетным данным - Модификация ключа реестра пакетов уведомлений
Доступ к учетным данным - Модификация ключа реестра пакетов уведомлений
« 0 » перед именем DLL является обязательным, поскольку между значениями пакетов уведомлений должен быть пробел.
Доступ к учетным данным
Систему необходимо перезагрузить, чтобы загрузить произвольную DLL в процесс « LSASS ». Когда пользователь изменяет свой текущий пароль, фильтр паролей извлечет новый пароль в виде простого текста.
Смена пароля
Пароль будет записан в текстовый файл на диске C: \, но код можно изменить, чтобы изменить местоположение.
Открытый текстовый пароль зарегистрирован
Открытый текстовый пароль зарегистрирован
В качестве альтернативы этот метод может быть реализован непосредственно из консоли PowerShell.
PowerShell Filter DLL - PowerShell
DLL фильтра паролей - ДемоСсылки
Во время красной оценки команды фильтры паролей могут использоваться в качестве метода для получения учетных данных от пользователей домена (контроллер домена) или локальных учетных записей (локальный компьютер). Это связано с тем, что для фильтрации пароля для проверки пароля требуется от локального органа безопасности (LSA) пароль пользователя в виде простого текста. Поэтому установка и регистрация фильтра произвольных паролей может использоваться для сбора учетных данных каждый раз, когда пользователь меняет свой пароль. Этот метод требует повышенного доступа (локальный администратор) и может быть реализован в три этапа:
- DLL фильтра паролей должна быть сброшена в C: \ Windows \ System32
- Изменение ключа реестра для регистрации DLL Filter Password
- Перезагрузка системы для загрузки DLL фильтра паролей в процесс LSASS
Запрос на изменение пароля - поток
Перед сохранением нового пароля в диспетчере учетных записей безопасности (SAM) местный орган безопасности требует проверки с помощью фильтра паролей. Согласно документации Microsoft, каждый фильтр паролей вызывается дважды для проверки принятого нового пароля и для уведомления фильтра об изменении пароля.
Filer DLL загружен в lsass.exe
Ссылка скрыта от гостей
разработала DLL-библиотеку фильтров паролей, которую можно использовать для реализации этой техники. Из существующего сеанса Meterpreter DLL-библиотека фильтра паролей может быть легко перенесена в папку « System32 » с помощью функции загрузки. DLL фильтра паролей
Раздел реестра, который отвечает за загрузку DLL в процесс LSASS, представляет собой « Пакеты уведомлений », которые можно найти в следующем разделе реестра:
Код:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
Доступ к учетным данным - раздел реестра пакетов уведомлений
Следующие команды могут запросить ключ реестра из командной строки, чтобы перечислить существующие фильтры паролей и изменить ключ, включив в него DLL фильтра произвольных паролей (регистрация DLL).
Код:
REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Notification Packages"
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Notification Packages" /t REG_MULTI_SZ /d "scecli\0Win32Project3" /f
Доступ к учетным данным - Модификация ключа реестра пакетов уведомлений
Доступ к учетным данным - Модификация ключа реестра пакетов уведомлений
« 0 » перед именем DLL является обязательным, поскольку между значениями пакетов уведомлений должен быть пробел.
Доступ к учетным данным
Систему необходимо перезагрузить, чтобы загрузить произвольную DLL в процесс « LSASS ». Когда пользователь изменяет свой текущий пароль, фильтр паролей извлечет новый пароль в виде простого текста.
Смена пароля
Пароль будет записан в текстовый файл на диске C: \, но код можно изменить, чтобы изменить местоположение.
Код:
type logFile1.txt
type logFile2.txt
Открытый текстовый пароль зарегистрирован
Открытый текстовый пароль зарегистрирован
В качестве альтернативы этот метод может быть реализован непосредственно из консоли PowerShell.
Код:
$passwordFilterName = (Copy-Item "Win32Project3.dll" -Destination "C:\Windows\System32" -PassThru).basename
$lsaKey = Get-Item "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\"
$notificationPackagesValues = $lsaKey.GetValue("Notification Packages")
$notificationPackagesValues += $passwordFilterName
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\" "Notification Packages" $notificationPackagesValues
Restart-Computer -Confirm
PowerShell Filter DLL - PowerShell
-
Ссылка скрыта от гостей
-
Ссылка скрыта от гостей
-
Ссылка скрыта от гостей
- 3gstudent/PasswordFilter
-
Ссылка скрыта от гостей
- GoSecure/DLLPasswordFilterImplant
-
Ссылка скрыта от гостей
Ссылка скрыта от гостей