Функции монитора состояния защиты (Security Reference
Monitor, SRM): • Определение структуры маркера доступа для определения контекста зашиты; • Проверка прав доступа к объектам; • Манипулирование привилегиями (правами пользователями); • Генерация сообщений аудита безопасности. Подсистема проверки подлинности локальной системы безопасности (LSASS) Подсистема LSASS Функции подсистемы проверки подлинности локальной системы безопасности • Политика безопасности локальной системы (пользователи с правом входа, политики паролей, привилегии пользователей и групп, настройки аудита безопасности, . . . ); • Аутентификация пользователей; • Журналирование сообщений аудита безопасности Подсистема проверки подлинности локальной системы безопасности
• Представлена как процесс пользовательского режима% SystemRot% \ System32 \
LSASS.exe • Большая часть функциональности LSASS реализована в библиотеке Lsasrv.dll (The Local Security Authority service), который загружает LSASS.exe Взаимодействие SRM и LSASS Взаимодействие SRM и LSASS Компоненты LSASS. База политик Находится в реестре в ACL-защищенной ветке HKLM\SECURTY. И содержит: • Настройки политики безопасности (какие домены доверены для аутентификации попыток входа в систему; • у кого есть разрешение на доступ к системе и как • (интерактивный, сетевой, пакетный и сервисный вход в систему); • кому назначены какие привилегии; • какой аудит безопасности должен быть выполнен;) Компоненты LSASS. База политик • Информация для входа в систему, используемая для кэшированных входов в домен; • Учетные записи пользователей служб Windows; • Часто является целью противников, потому что позволяет извлечь хеши кэшированных и служебных аккаунтов. Компоненты LSASS. Security Accounts Manager Server (SAM) SAM (Security Account Manager) Диспетчер учётных записей безопасности Windows, оперирующий базой данных учетных записей.
SAM выполняет следующие задачи:
• Идентификация субъектов (трансляции имен в идентификаторы (SID'ы) и обратно); • Проверка пароля, авторизация (участвует в процессе входа пользователей в систему); • Хранит статистику (время последнего входа, количества входов, количества некорректных вводов пароля); Компоненты LSASS. Security Accounts Manager Server (SAM) • Хранит настройки политики учетных записей и приводит их в действие (политика паролей и политика блокировки учетной записи); • Хранит логическую структуру группировки учетных записей (по группам, доменам, алиасам); • Контролирует доступ к базе учетных записей; • Предоставляет программный интерфейс для управления базой учетных записей. Компоненты LSASS. Security Accounts Manager Server (SAM) База данных SAM хранится в реестре (в ключе HKEY_LOCAL_MACHINE\SAM\SAM), доступ к которому запрещен по умолчанию даже администраторам. Компоненты LSASS. Security Accounts Manager Server (SAM) SAM-сервер реализован в виде DLL-библиотеки samsrv.dll, загружаемой lsass.exe. Программный интерфейс для доступа клиентов к серверу реализован в виде функций, содержащихся в DLL-библиотеке samlib.dll.
Часто является целью
злоумышленников, поскольку SAM хранит хеши локальных учетных записей. Компоненты LSASS. Служба сетевого входа Служба сетевого входа: (Network logon service, Netlogon.dll) — устанавливает безопасное соединение с контроллером домена для интерактивного входа и входа при помощи активного каталога Компоненты LSASS. Служба сетевого входа Отвечает за настройку защищенного канала для контроллера домена, по которому отправляются запросы безопасности (это запросы проверки подлинности LM и NTLM v1 / v2, интерактивные входы в систему, если контроллер домена работает под управлением NT 4). Реализуется как DLL% SystemRot% \ System32 \ Netlogon.dll, которая запускается в процессе Lsass.exe Компоненты LSASS. Служба Active Directory Служба Active Directory состоит из: Агента системы каталогов (DSA), который предоставляет интерфейсы, через которые соединяются клиенты и другие серверы; Уровеня базы данных, который обеспечивает интерфейс прикладного программирования (API) для работы с хранилищем данных Active Directory;
Реализуется как DLL%
SystemRot% \ System32 \ ntdsa.dll, которая запускается в процессе Lsass.exe База данных Active Directory Хранилище данных Active Directory: • Основной файл NTDS.dit (% SystemRot% \ NTDS \ ntds.dit) - содержит все содержимое хранилища данных Active Directory; • NTDS.dit - это «slice of the cake» для злоумышленников, поскольку он содержит хэши ВСЕХ пользователей домена; • Некоторые дополнительные файлы, используемые для обеспечения целостности и согласованности базы данных AD (журналы транзакций, checkpoint файл). Active Directory и домены Windows Active Directory - это реализация Windows службы каталогов облегченного протокола доступа к каталогам (LDAP) (RFC 4510). По сути, Active Directory - это база данных, в которой хранятся объекты, представляющие ресурсы, определенные приложениями, в сети Windows;
Основное назначение Active Directory - централизованное
управление пользователями и группами, и конфигурациями операционной системы (включая политики безопасности, а также параметры, не связанные непосредственно с безопасностью). Централизованная настройка выполняется через так называемые групповые политики; Active Directory и домены Windows Для его использования в сети должен быть развернут один или несколько контроллеров домена (DC). Любой компьютер с установленной ОС Windows Server может стать DC. В сети может быть более одного DC (даже больше, ДОЛЖНО быть более одного DC);
DC хранит объекты в базе данных (представленной в виде
файла% SystemRoot% \ Ntds.dit) и предоставляет сервис аутентификации другим компьютерам в сети; Active Directory и домены Windows Любые изменения в файле базы данных домена Ntdis.dit реплицируются на все контроллеры домена;
После развертывания DC в вашей сети появится домен.
Любой компьютер в сети может присоединиться к своему домену;
После того, как компьютер присоединен к домену, он
может быть настроен с помощью групповых политик и может использовать принципалы домена как для локального доступа, так и для доступа к другим компьютерам и службам в сети. Active Directory и домены Windows. Управление УЗ Active Directory и домены Windows. Управление УЗ Компоненты LSASS. Security Packages Отвечает за аутентификацию пользователя путем проверки соответствия заданного имени пользователя и пароля (или других типов учетных данных) и, если да, возврата к информации LSASS, в которой подробно описан идентификатор безопасности пользователя, который LSASS использует для создания токена доступа; Компоненты LSASS. Security Packages Реализован как библиотеки DLL, которые выполняются в контексте как процесса LSASS, так и процесса клиента, который выполняет аутентификацию. Основные пакеты: • % SystemRot% \ System32 \ Kerberos.dll - для интерактивного входа в домен. • % SystemRot% \ System32 \ msv1_0.dll - для интерактивного входа в систему на локальном компьютере, для входа в домен в доверенных доменах до Windows 2000 и в случаях, когда ни один контроллер домена недоступен; Winlogon • Ответ на SAS (безопасная последовательность аутентификации - Ctrl-Alt-Del); • Управление интерактивными сеансами входа в систему; • Создание первого пользовательского процесса; • Обработка выхода из системы; • Представлено как процесс пользовательского режима% SystemRot% \ System32 \ Winlogon.exe LogonUI Пользовательский интерфейс входа в систему (LogonUI): • Предоставляет пользователям интерфейс пользователя, который они могут использовать для аутентификации в системе; • Использует поставщиков учетных данных для запроса учетных данных пользователя различными способами; • Представлено как процесс пользовательского режима% SystemRot% \ System32 \ LogonUI.exe Winlogon и LogonUI Credential Providers Это внутрипроцессные COM-объекты (реализованные в виде DLL), которые выполняются в процессе LogonUI и используются для получения имени пользователя и пароля, PIN-кода смарт-карты, биометрических данных (таких как отпечатки пальцев) или другой идентификационной информации. Стандартными CP являются authui.dll, SmartCardCredentialProvider.dll, BioCredProv.dll и FaceCredentialProvider.dll. To be continued… Windows Access Control Субъекты - процессы или потоки. Они связаны с токенами доступа и действуют от имени какого-либо пользователя;
Когда пользователь входит в Windows (то есть
аутентифицируется), операционная система создает маркер доступа, содержащий идентификаторы безопасности (SID), связанные с учетной записью пользователя и любыми учетными записями группы, к которым принадлежит пользователь. Маркер также содержит список привилегий, которыми владеет пользователь или группы пользователей;
Объекты - файлы, ключи реестра, принтеры, другие
процессы или угрозы и т.д., связаны с дескрипторами безопасности; Windows Access Control Когда создается объект, ему присваивается дескриптор безопасности, который содержит дискреционный список управления доступом (DACL). Он определяет, какие SID пользователей и групп могут обращаться к объекту и как (читать, писать, выполнять ...);
Списки управления доступом
• Список SACL управляется администратором системы и предназначен для аудита безопасности. • Список DACL управляется владельцем объекта и предназначен для идентификации пользователей и групп, которым предоставлен или запрещен определенный тип доступа к объекту. Windows Access Control SID Для однозначного определения пользователя в системе используются идентификаторы защиты (SID – Security Identifier). Кроме пользователей, SID имеется у групп пользователей, компьютеров, доменов и членов доменов. SID генерируется системой случайным образом так, что вероятность совпадения SID у разных пользователей близка к нулю. Примеры SID S-1-5-32-544 - встроенная группа администраторов: • Уровень ревизии - 1; • Значение авторитетного идентификатора - 5, NT Authority; • Идентификатор домена - 32, Встроенный, SID для встроенных учетных записей и групп всегда имеют одинаковое значение идентификатора домена, которое существует на каждом компьютере; • Относительный идентификатор - 544 «Администраторы», каждый участник на локальном компьютере имеет уникальный RID. Примеры SID S-1-5-21-1004336348-1177238915-682003330-512 - пример SID субъекта домена «COMPANY \ Domain Admins»: • Уровень ревизии - 1; • Идентификатор органа - 5, NT Authority; • Идентификатор домена - 21-1004336348-1177238915- 682003330, например, COMPANY, каждый принципал в этом домене имеет такое значение в части идентификатора домена SID; • Относительный идентификатор - 512, Администраторы домена, каждый участник в домене имеет уникальный RID. Access Token Каждый процесс / поток имеет токен доступа. Исходный токен создается после успешного входа в систему и присоединяется к первому процессу сеанса пользователя; Все процессы, созданные из первого, наследуют копию исходного токена. Вот почему все процессы в пользовательской сессии выполняются под одним и тем же токеном; По умолчанию копия токена доступа прикрепляется к каждому потоку и процессу, который пользователь, но можно запустить процесс с другим токеном, используя функцию «Запуск от имени другого пользователя»; Access Token Токен содержит: • SID пользователя; • SID всех групп, в которые входит пользователь (рекурсивно); • Права пользователя; • Уровень целостности, определяемый как специальный SID группы; • Тип олицетворения (поговорим об этом чуть позже); • Идентификатор сеанса входа в систему; • И т.д. ;
Токен никогда не меняется после его создания.
Access Token. Access Token. Creating the groups SIDs list To be continued… Impersonation При взаимодействии клиентов и серверов в операционной системе Windows может использоваться механизм олицетворения (impersonation). В этом случае при необходимости обратиться с запросом к серверу в процессе клиента создается поток (thread), которому назначается маркер доступа пользователя, инициировавшего этот запрос. Этот механизм позволяет серверу действовать от лица клиента при доступе к объектам, к которым сам сервер не имеет доступа. Impersonation Поток может иметь собственный токен доступа, отличающийся от токена своего процесса.
Когда серверный процесс
принимает клиента, он создает поток для выполнения работы и связывает маркер доступа клиента с рабочим потоком. Однажды связанный таким образом, клиентский токен доступа является токеном олицетворения, который идентифицирует клиента, группы клиентов и привилегии клиента. Impersonation Impersonation. Уровни Каждый уровень позволяет серверу выполнять различный набор операций относительно контекста защиты клиента: • SecurityAnonymous — самый ограниченный уровень; сервер не может олицетворять или идентифицировать клиент; • SecurityIdentification — сервер может получать SID и привилегии клиента, но не получает право на олицетворение клиента; • SecurityImpersonation — сервер может идентифицировать и олицетворять клиент в локальной системе; • SecurityDelegation — наименее ограниченный уровень. Позволяет серверу олицетворять клиент в локальных и удаленных системах. Windows NT 4 и более ранние версии лишь частично поддерживают этот уровень олицетворения. Impersonation. Token stealing attack (Pass-the-Token) Impersonation. Token stealing attack (Pass-the-Token) Impersonation privilege Impersonation Disable delegation for sensitive accounts Механизмы авторизации Windows Привилегии. Определяет, какие безопасные операции может выполнять процесс / поток. Маркер доступа к процессу содержит список привилегий
Дискреционный контроль доступа.
Определяет, к каким объектам процесс / поток может получить доступ. Маркер доступа процесса содержит SID учетной записи пользователя и SID группы
Мандатный контроль доступа.
Основная цель - ограничить права доступа приложений, которые работают под одной учетной записью пользователя и которые менее надежны. Маркер доступа процесса содержит уровень целостности. Каждый объект имеет уровень целостности. Привилегии Привилегии Super privileges Debug programs - Может открыть любой процесс в системе. Это позволяет вводить код в другой процесс без учета дескриптора безопасности, присутствующего в процессе. Это может быть сделано для повышения привилегий (внедрение в процесс с более высокими привилегиями), для чтения конфиденциальных данных из памяти другого процесса, для изменения кода в памяти (изменение поведения процесса) Super privileges Take ownership - Может получить доступ к любому объекту в системе. Владелец может изменить DACL дескриптора безопасности объекта, поэтому процесс с этой привилегией может изменить DACL, чтобы предоставить себе полный доступ к объекту.
Restore files and directories - Можно заменить любой файл
в системе своим. Злоумышленник может использовать эту возможность, заменяя системные файлы вредоносными Super privileges Load and unload device drivers - Драйвер считается доверенной частью ОС, способной обойти все защитные механизмы.
Create a token object - Может подделывать любого
локального пользователя, генерируя токен, который представляет произвольную учетную запись пользователя с произвольным членством в группе и назначенными привилегиями
Act as part of operating system - Может создать новый
сеанс входа в систему, который включает идентификаторы безопасности более привилегированных групп или пользователей в полученном токене Discretionary Access Control Object Security Descriptor Объекты могут быть контейнерами для других объектов: папка - файл, ключ реестра - подраздел реестра и т.д. Discretionary Access Control Object Security Descriptor Каждый объект имеет дескриптор безопасности, который включает в себя: Номер редакции - версия модели безопасности SRM, используемая для создания дескриптора; Flags - необязательные модификаторы, которые определяют поведение или некоторые характеристики дескриптора; Владелец SID - принципал, который имеет права на чтение и изменение DACL; Group SID - SID основной группы объекта (используется для совместимости с Posix); Дискреционный список контроля доступа (DACL) - указывает, у кого есть доступ к объекту; Список контроля доступа к системе (SACL) - указывает, какие операции, с помощью которых пользователь должен регистрироваться в журнале аудита безопасности, а также указывает явный уровень целостности объекта. Discretionary Access Control. Разрешения Разрешения - это действия, которые применяются к каждому классу объектов; Есть несколько общих разрешений, которые определены для всех объектов: чтение, запись, выполнение, все, удаление; Но также у каждого класса объектов есть определенные разрешения: Добавить, Чтение памяти, Создать поток и т.д.; Объект DACL указывает, какие участники (SID) имеют какие разрешения. Discretionary Access Control. Разрешения Discretionary access control list SID Permissions ACE #1 - Admins Full control ACE #2 - user Write, Read ACE #3 + Test user Full control ACE #4 + Experts Read, Write ACE #5 + EVERYONE Read ACE #6 + user Write
DACL состоит из заголовка и нулевой или
пустой структуры Access Control Entry (ACE): Если DACL отсутствует (нулевой DACL) в дескрипторе безопасности, каждый имеет полный доступ к объекту; Если DACL присутствует, но пустой (то есть он имеет нулевые ACE), ни один пользователь не имеет доступа к объекту. Discretionary Access Control. Определение прав доступа Mandatory Integrity Control Механизм обязательного контроля целостности (MIC) был представлен в Windows Vista / Server 2008; Уровни целостности могут перекрывать дискреционный доступ для разграничения процесса и объектов, запущенных и принадлежащих одному и тому же пользователю, предлагая возможность изолировать код и данные в учетной записи пользователя; Каждый процесс имеет уровень целостности, который хранится в его токене. По умолчанию процесс наследует уровень целостности своего родителя. Уровень целостности процесса представлен в виде специального SID в списке групп; Объекты также могут иметь уровень целостности, хранящийся как часть их дескриптора безопасности, в структуре, которая называется обязательной меткой По умолчанию все объекты имеют неявный средний уровень целостности, чтобы избежать необходимости указывать его вручную. Явный уровень целостности объекта хранится в дескрипторе безопасности. Уровни целостности SID Name Use (Level) S-1-16-0x0 Untrusted Используется процессами, запущенными анонимной (0) группой. Блокирует большинство записей. S-1-16- Low (1) Используется в защищенном режиме Internet 0x1000 Explorer. Блокирует доступ на запись к большинству объектов (таких как файлы и ключи реестра) в системе. S-1-16- Medium (2) Используется обычными приложениями, 0x2000 запускаемыми при включенном UAC S-1-16- High (3) Используется административными приложениями, 0x3000 запускаемыми через повышение прав при включенном UAC, или обычными приложениями, если UAC отключен, а пользователь является администратором. S-1-16- System (4) Используется сервисами и другими приложениями 0x4000 системного уровня (такими как Wininit, Winlogon, Smss и т. Д.) Mandatory Integrity Control. Стандартная политика Процесс / поток не может записывать в файл с более высоким уровнем целостности (правило No-Write-Up); Процесс / поток не может записать в память процесса более высокий уровень целостности (опять-таки правило No-Write-Up, только для объектов процесса); Процесс / поток не может прочитать память процесса с более низким уровнем целостности (правило отсутствия чтения). Mandatory Integrity Control. Где используется в Windows? В UAC он ограничивает доступ между процессами, работающими со стандартными привилегиями пользователя, и процессами с повышенными правами, работающими с полными правами администратора в режиме одобрения администратором; В настройках безопасности по умолчанию он ограничивает доступ к корневой папке системного тома; В защищенном режиме Internet Explorer он ограничивает возможности кода, выполняемого в интернет-браузере, изменять данные пользователя или параметры профиля пользователя (Internet Explorer работает с низким уровнем целостности в защищенном режиме); Чтобы приложения, работающие с низкой целостностью, имели доступное для записи местоположение файла, они назначают определенным папкам в профиле пользователя низкий уровень целостности. Mandatory Integrity Control. Где используется в Windows? Авторизация. Подводя итоги Доступ к объекту Авторизация. Подводя итоги Выполнение чувствительной операции User Account Control UAC был представлен в Windows Vista / Windows Server 2008; UAC - это реализация Microsoft принципа наименьших привилегий: запускать с правами администратора только при необходимости; При включенном контроле учетных записей все приложения запускаются со стандартными правами пользователя, даже если пользователь вошел в учетную запись с правами администратора; User Account Control Но в то же время UAC позволяет обычным пользователям получать доступ к административным правам, когда они им нужны - будь то устаревшие приложения, которые в них нуждаются, или изменение определенных системных настроек; При попытке запуска административной задачи, служба отобразит диалоговое окно повышения прав, содержащее информацию об исполняемом файле. В некоторых случаях это диалоговое окно повышения прав может запрашивать соответствующие учетные данные; Зачем нужен User Account Control? • Уменьшить количество сценариев, требующих повышения до административной учетной записи; • Сделать повышение прав значительно проще - по возможности, автоматически - по сравнению с предыдущими кладжами, такими как использование runas.exe или выход из одной учетной записи в другую; • Обеспечить некоторую изоляцию приложений, работающих в качестве администратора, чтобы защитить их от тех, которые этого не делают; • Позволяет некоторым выставленным приложениям работать с еще более низкими привилегиями, когда это возможно; User Account Control Если пользователь отклоняет повышение прав, Windows возвращает ошибку отказа в доступе процессу, который инициировал запуск; Таким образом, если вредоносная программа пытается выполнить привилегированную операцию, это потребует подтверждения от пользователя. User Account Control. Принцип работы Когда непривилегированный пользователь входит в систему на компьютере, система создает один маркер доступа для этого пользователя. Здесь UAC не работает; Когда администратор входит в систему, UAC начинает работать! User Account Control. Принцип работы Для пользователя создаются два отдельных токена доступа: токен фильтрованного доступа и токен администратора; Отфильтрованный токен присоединяется к начальному процессу, который Winlogon запускает после аутентификации администратора. Следовательно, все приложения запускаются с отфильтрованным токеном доступа, который совпадает с токеном доступа непривилегированного пользователя; User Account Control. Принцип работы Отфильтрованный токен доступа имеет следующие характеристики: • Уровень целостности установлен на средний уровень; • Администраторские идентификаторы безопасности помечаются как «только для запрета» (группа с флагом «только для запрета» может использоваться только для запрета доступа пользователя к ресурсу, но не для его разрешения). • Удаляются все привилегии, кроме уведомления об изменении, выключения, разблокировки и часового пояса. Вот почему по-умолчанию администратор не может выполнять какие-либо привилегированные операции или получать доступ к некоторым объектам. User Account Control. Принцип работы Если исполняемый образ является компонентом Windows с цифровой подписью (Microsoft или другим лицом), диалоговое окно отображает голубую полосу в верхней части; User Account Control. Принцип работы Если изображение не подписано, полоса становится желтой, и подсказка подчеркивает неизвестное происхождение изображения; User Account Control. Принцип работы Если повышение привилегий отключено конфигурацией групповой политики, диалоговое окно отображает красную полосу. Обход UAC Злоумышленники всегда стремятся получить максимальные привилегии в системе, но UAC мешает им сделать это. Поэтому противники пытаются обойти UAC. И есть дюжина способов сделать это! https://github.com/hfiref0x/UACME Обход UAC