Гостевая статья Доступ к учетным данным - DLL Filter Password

Microsoft ввела фильтры паролей в качестве метода для системных администраторов для применения политик паролей и уведомления об изменениях. Фильтры используются для проверки новых паролей и обеспечения их соответствия политике паролей, а также не используются пароли, которые могут соответствовать политике домена, но считаются слабыми. Например, пароль из 8 символов может быть приемлемым для групповой политики, однако, если он имеет форму $ companyname123 или Spring2020 считается слабым, так как эти пароли могут быть использованы злоумышленником во время атаки методом подбора. Фильтры паролей помогают администраторам предотвращать пароли такого типа, чтобы пользователи могли выбирать более уникальные пароли.

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

  1. DLL фильтра паролей должна быть сброшена в C: \ Windows \ System32
  2. Изменение ключа реестра для регистрации DLL Filter Password
  3. Перезагрузка системы для загрузки DLL фильтра паролей в процесс LSASS
На следующем снимке экрана показан ход запроса на изменение пароля:

passwordfilter.png

Запрос на изменение пароля - поток

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

credential-access-password-filter-dll-lsass-process.png

Filer DLL загружен в lsass.exe

разработала DLL-библиотеку фильтров паролей, которую можно использовать для реализации этой техники. Из существующего сеанса Meterpreter DLL-библиотека фильтра паролей может быть легко перенесена в папку « System32 » с помощью функции загрузки.

credential-access-password-filter-dll-upload-dll.png

DLL фильтра паролей

Раздел реестра, который отвечает за загрузку DLL в процесс LSASS, представляет собой « Пакеты уведомлений », которые можно найти в следующем разделе реестра:

Код:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

credential-access-password-filter-dll-notifcation-packages-registry-key.png

Доступ к учетным данным - раздел реестра пакетов уведомлений

Следующие команды могут запросить ключ реестра из командной строки, чтобы перечислить существующие фильтры паролей и изменить ключ, включив в него 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

credential-access-password-filter-dll-notifcation-packages-registry-key-modification-cmd.png

Доступ к учетным данным - Модификация ключа реестра пакетов уведомлений

credential-access-password-filter-dll-notifcation-packages-registry-key-modification-shell.png

Доступ к учетным данным - Модификация ключа реестра пакетов уведомлений

« 0 » перед именем DLL является обязательным, поскольку между значениями пакетов уведомлений должен быть пробел.

credential-access-password-filter-dll-notifcation-packages-registry-key-registration.png

Доступ к учетным данным

Систему необходимо перезагрузить, чтобы загрузить произвольную DLL в процесс « LSASS ». Когда пользователь изменяет свой текущий пароль, фильтр паролей извлечет новый пароль в виде простого текста.

credential-access-password-filter-dll-notifcation-packages-password-change.png

Смена пароля

Пароль будет записан в текстовый файл на диске C: \, но код можно изменить, чтобы изменить местоположение.

Код:
type logFile1.txt
type logFile2.txt

credential-access-password-filter-dll-notifcation-packages-clear-text-passwords-cmd.png

Открытый текстовый пароль зарегистрирован

credential-access-password-filter-dll-notifcation-packages-clear-text-passwords-shell.png

Открытый текстовый пароль зарегистрирован

В качестве альтернативы этот метод может быть реализован непосредственно из консоли 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

credential-access-password-filter-dll-powershell.png

PowerShell Filter DLL - PowerShell

DLL фильтра паролей - ДемоСсылки
Источник:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!