Вы находитесь на странице: 1из 78

Windows security

Компоненты безопасности Windows


Монитор состояния защиты (SRM)

Функции монитора состояния защиты (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

Вам также может понравиться