Процесс LSASS и его секреты
Last updated
Last updated
TODO: - CredSSP - Откуда еще в ОС можно извлечь данные (svchost, браузер)
lsass.exe (Local Security Authority Subsystem Service) — это критически важный системный процесс в операционных системах Windows. Он отвечает за управление безопасностью на локальном уровне, включая аутентификацию пользователей, управление паролями и создание токенов доступа.
Lsass.exe хранит в памяти критически важные данные, такие как хэши паролей, Kerberos-билеты и токены. Это делает его привлекательной целью для атак, направленных на кражу учетных данных.
Дамп памяти — это процесс создания копии (дампа) памяти, выделенной для конкретного процесса. В случае lsass.exe, этот процесс содержит критически важные данные, такие как:
Хэши паролей (NTLM, LM).
Токены аутентификации.
Учетные данные в открытом виде (в старых операционных системах, если включен wDigest).\
Для этого можно использоватьк как встроенных инструментов Windows (Task Manager, ProcDump, comsvcs.dll minidump). Сдампить lsass можно даже с помощью .
Самым популярным сторонним инструментом является .
Мои самым любимым инструментом является .
Злоумышленник может внедрить вредоносный код в процесс lsass.exe, чтобы напрямую извлекать данные из памяти.
Сторонние SSP (Security Support Providers) — это DLL-библиотеки, которые интегрируются в процесс LSASS (Local Security Authority Subsystem Service) в Windows для расширения функциональности аутентификации. Они являются частью архитектуры SSPI (Security Support Provider Interface) и используются для обработки различных протоколов аутентификации, таких как NTLM, Kerberos и других. Однако злоумышленники могут использовать сторонние SSP для внедрения вредоносного кода в LSASS с целью кражи учетных данных или выполнения других злонамеренных действий. Например, полностью отключить проверку пароля. Или принимать авторизацию любого пользователя, если он предосталвяет опредленный пароль - backdoor.
Внедрение SSP: Злоумышленник может зарегистрировать вредоносную DLL как SSP в системе, добавив её в раздел реестра HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
. После этого эта DLL будет загружена в процесс LSASS при следующей загрузке системы или перезапуске LSASS.
Самый простой и очевидный способ обнаружить дамп памяти lsass - это мониторить событие создания процессов Windows (Event ID 4688) и выявлять подозрительные паттерны командной строки.
Например таких:
У mimikatz, например, очень выразительные команды, которые сложно с чем-то спутать:
Но стоит всегда помнить, что детекты, основанные на паттернах командной строки самые ненадежные. Вот пример, сколькими способами можно запустить comsvcs.dll MiniDump:
Вообще классическим способом выявления дампа lsass.exe в мире информационной безопасности считается событие Sysmon 10.
Для эффективного обнаружения дампа lsass.exe с помощью Event ID 10, важно понимать, какие маски доступа (Access Masks) используются при таких атаках. Маски доступа — это флаги, которые указывают, какие операции пытается выполнить процесс при доступе к другому процессу. Маски доступа, такие как PROCESS_VM_READ
, PROCESS_QUERY_INFORMATION
и PROCESS_ALL_ACCESS
, являются ключевыми индикаторами при попытках дампинга памяти lsass.exe.
Вот неплохой гайд, который рассказывает о том, как работают маски. По конретной маске даже предполагает инструмент. И сразу предлагает конфиг для sysmon.
Создание потока в адресном пространстве lsass.exe (Sysmon 8) или подгрузка любых сторонних библиотек (Sysmon 7) должна насторожить.
Злоумышленники могут использовать встроенный диспетчер задач для создания дампа памяти lsass.exe:
Откройте Диспетчер задач.
Найдите процесс lsass.exe
.
Щелкните правой кнопкой мыши и выберите Создать файл дампа.
И в этом случае в системе зарегистрируется событие создания файла дампа (Sysmon 11), а создателем этого файла будет taskmgr.exe (дипетчер задач).
Если уж говорить про старт процесса, то лучше использовать Sysmon 1, т.к. он дает более расширенную информацию о процессе, в том числе метаинформацию. И если хакер ленивый и использует сборку с GitHub, то в метаинформации процесса могут остаться артефакты, которые однозначно идентифицируют инструмент.
В общем, если видете в метаинформации gentilkiwi, вы знаете, что это за инструмент - mimikatz.
И так как про Sysmon 10 уже все в курсе, атакующие ищут способы получить данные из памяти lsass без прямого доступа к его памяти.
Я бы 100% ловила вызовы WriteDumpMiniDump
помощью хуков (hooks) или подписи на события. WriteDumpMiniDump
— это функция, которая используется для создания мини-дампов (minidumps) памяти процессов.
Этот API часто используется легитимными приложениями, такими как отладчики или системы сбора диагностических данных, но он также может быть использован злоумышленниками для создания дампов памяти процессов, таких как LSASS.
Для начала стоит сказать, что учетные данные (например, пароли, хэши, токены аутентификации) остаются в памяти процесса LSASS (Local Security Authority Subsystem Service) при интерактивном входе:
Когда пользователь входит в систему с помощью пароля, вводя его с клавиатуры.
Когда пользователь запускает процесс от имени другого пользователя (например, через RunAs
).
При подключении к удаленному рабочему столу.
Память lsass.exe очищается при перезагрузке узла.
SeDebugPrivilege — это привилегия в Windows, которая позволяет процессу отлаживать (debug) другие процессы, включая доступ к их памяти. По умолчанию SeDebugPrivilege отключена даже для администраторов. Её необходимо явно включить с помощью API-функций. Имено поэтому запуск mimikatz обычно начинается с privilege::debug
.
Если злоумышленник получает права администратора и активирует SeDebugPrivilege, он может использовать её для чтения памяти LSASS.
Говорят, что можно ограничить использование SeDebugPrivilege только для доверенных пользователей и процессов, например, через групповые политики.
Начиная с Windows 8.1 и Windows Server 2012 R2, LSASS можно запустить в режиме Protected Process Light (PPL). Это механизм защиты процессов в Windows, который ограничивает доступ к защищенным процессам со стороны других процессов, даже если у них есть права администратора или привилегии, такие как SeDebugPrivilege.
В Windows 10 и Windows Server 2016/2019/2022 можно включить функцию Credential Guard, которая изолирует учетные данные в защищенной области памяти с использованием аппаратной виртуализации (Virtual Secure Mode). Это предотвращает извлечение учетных данных из LSASS.
Credential Guard использует технологию Hyper-V для создания изолированной среды (Virtual Secure Mode), где хранятся учетные данные.
LSASS взаимодействует с этой средой через защищенные API, но не имеет прямого доступа к данным.
Даже если злоумышленник получит доступ к памяти LSASS, он не сможет извлечь учетные данные, так как они хранятся в изолированной области.
Protected Users — это группа безопасности в Active Directory, которая предоставляет дополнительные меры защиты для учетных записей пользователей, особенно тех, которые имеют высокие привилегии (например, администраторы).
Учетные данные пользователей из группы Protected Users не кэшируются на локальных устройствах.
Для аутентификации пользователей из группы Protected Users всегда используется протокол Kerberos, который считается более безопасным, чем NTLM. Учетные записи, добавленные в группу Protected Users, не могут использовать слабые или устаревшие протоколы аутентификации.
Учетные записи в группе Protected Users не могут быть использованы для делегирования учетных данных.
Это может быть создание потока в памяти, так и внедрение сторонних DLL. Автор предлагает использовать механизм Silent Process Exit, встроенный в Windows, как метод для скрытного дампа памяти процесса LSASS (Local Security Authority Subsystem Service). Этот механизм позволяет настроить систему так, чтобы при завершении определенного процесса (в данном случае LSASS) автоматически создавался дамп его памяти
- включает в себя как модули большинство известных способов получить учетные данные из памяти lsass
- есть несколько интерсеных ключей, который позволяют получить доступ к памяти без регистрации sysmon 10, попробуйте --fork