Примечание
Олицетворение позволяет одному процессу заимствовать права другого (как будто он имеет маркер доступа другого процесса). Например, олицетворение часто применяется в клиент-серверных приложениях, где сервер может применять олицетворение для получения доступа к ресурсам компьютера от имени клиента (и с его правами доступа). При этом процесс, получивший олицетворяющий маркер (в нашем примере сервер), не может передавать его другому процессу.
Существует несколько уровней олицетворения: anonymous (олицетворение запрещено), identification (можно получать SID и привилегии клиента, но олицетворять клиента запрещено), impersonation (можно как идентифицировать, так и олицетворять клиента) и delegation (позволяет олицетворять клиента как на локальном, так и на удаленном компьютере). Вы уже встречались с этими уровнями при описании оснастки Службы компонентов.
• Информацию о том, кто создал данный маркер (диспетчер сеансов, RPC-cepвер и т. д.).
• DACL по умолчанию (эта информация необходима для определения тех атрибутов защиты, которые будут присваиваться создаваемым с помощью данного маркера объектам, если дескриптор защиты для создаваемого объекта не определен, и объект не наследует DACL родительского объекта).
• Сведения об учетной записи, которой принадлежит маркер, и группах, в которые входит данная учетная запись (эта информация необходима для определения прав доступа процесса к требуемым ему объектам).
Поскольку маркер содержит переменные сведения (набор привилегий и групп), его длина не является постоянной.
Начальный маркер доступа создается во время входа пользователя в систему и присваивается начальному процессу userinit.ехе. Этот процесс запускает все основные процессы пользователя, а поскольку маркер доступа родительского процесса передается и процессам, которые он создает (дочерним процессам), все процессы, создаваемые пользователем, имеют один и тот же маркер доступа.
Кроме основных маркеров доступа и маркеров олицетворения, в операционных системах семейства Windows могут использоваться ограниченные маркеры. Ограниченным называется такой маркер, выданный дочернему процессу, в котором отсутствует какая-нибудь привилегия родительского маркера.
Дескрипторы защиты
Если маркер доступа выдается процессу и определяет те права, которыми обладает запущенный процесс, то дескриптор защиты выдается объектам операционной системы (файлы, каталоги) и определяет тех пользователей, которые могут получить доступ к объекту, а также права, которыми эти пользователи обладают. Дескриптор защиты состоит из следующих элементов.
• DACL (список управления избирательным доступом) – определяет пользователей, которые могут получить доступ к данному объекту, и их права. Каждый АСЕ (элемент списка DACL) содержит SID учетной записи пользователя или группы, маску доступа, а также флаги наследования (определяют, был ли данный АСЕ унаследован от DACL родительского объекта и будет ли он наследоваться DACL дочерних объектов). При этом АСЕ может быть четырех основных типов.
– Доступ разрешен (access allowed). Разрешает пользователю, определенному SID, права доступа к объекту, определенные в маске доступа.
– Доступ отклонен (access denied). Запрещает пользователю, определенному SID, права доступа к объекту, определенные в маске доступа.
– Разрешенный объект (allowed-object). Данный тип АСЕ используется в Active Directory и применяется для разрешения доступа к объектам и подобъектам каталога.
– Запрещенный объект (denied-object). Данный тип АСЕ используется в Active Directory и применяется для запрещения доступа к объектам и подобъектам каталога.
Если дескриптор защиты не содержит DACL, то любой пользователь может получить доступ к данному объекту. Если же дескриптор защиты содержит пустой DACL (не имеющий ни одной записи АСЕ), то доступ к объекту запрещен всем пользователям.
Если же DACL включает в себя множество АСЕ, определяющих доступ одному и тому же пользователю, то определить, сможет ли в результате пользователь получить доступ к объекту, бывает очень сложно. В этом случае проще воспользоваться вкладкой Действующие разрешения окна Дополнительные параметры безопасности. С ее помощью можно просуммировать все запрещающие и разрешающие АСЕ для учетной записи пользователя и групп, в которые он входит, и определить текущие разрешения для данного пользователя.
• SACL (системный список управления доступом) – определяет пользователей, для которых установлен аудит доступа, а также те операции, совершаемые пользователем над объектом, которые будут подлежать аудиту. Список SACL может содержать АСЕ двух типов: системного аудита и объекта системного аудита. Каждый АСЕ включает в себя SID учетной записи пользователя, GUID-объекта, к которому применим АСЕ, а также флаги наследования.
Если дескриптор защиты не содержит SACL, то аудит работы с объектом не ведется.
DACL и SACL являются составными частями списка управления доступом (ACL). Данный список (а также DACL и SACL) состоит из элементов, называемых АСЕ. Работа с DACL и SACL в операционной системе Windows Vista будет описана далее в этой главе.
Привилегии и права
При описании маркеров доступа мы определили, что они могут содержать информацию о привилегиях, предоставляемых процессу. Привилегии – это права определенной учетной записи (или службы, о чем было описано в гл. 6), позволяющие ей выполнять те операции в операционной системе, которые по умолчанию выполнять запрещено.
Мы уже сталкивались с привилегиями, когда рассматривали оснастку Редактор объектов групповой политики, хотя тогда было упомянуто о них лишь мельком, даже не говорилось о том, что это привилегии.
Привилегии операционной системы
Добавлять и удалять привилегии можно как с помощью API-функций, так и с помощью оснастки Редактор объектов групповой политики. Для этого применяется подраздел оснастки Конфигурация компьютера → Конфигурация Windows → Параметры безопасности → Локальные политики → Назначение прав пользователя. Данный подраздел содержит следующие элементы (сначала указано системное название привилегии, потом ее название в оснастке и в самом конце ее описание).
• SeBackupPrivilege (архивация файлов и каталогов) – разрешает службе или учетной записи выполнять операции резервного копирования. Данная привилегия позволяет учетной записи или службе открывать файлы и каталоги независимо от того, разрешена для них эта операция с помощью DACL или нет. Привилегия позволяет обходить проверку таких разрешений, как Обзор папок/Выполнение файлов, Содержимое папки/Чтение данных, Чтение атрибутов, Чтение расширенных атрибутов, Чтение разрешений. При этом DACL обходится только в том случае, если установлен флаг FILE_FLAG_BACKUP_SEMANTIC.
Привилегия предоставлена группам: Администраторы, Операторы архива и Операторы сервера.
• SeChangeNotifyPriviLege (обход перекрестной проверки) – разрешает службе или учетной записи не проходить все проверки прав доступа пользователя при проходе многоуровневых каталогов (проверки прав доступа к вложенным каталогам). Она не предоставляет прав на просмотр содержимого каталога, если эти права вам не предоставлены DACL, однако позволяет выполнять обзор каталога.
Привилегия предоставлена группам: Администраторы, Операторы архива, Пользователи, Все, а также учетной записи локальной службы, учетной записи сетевой службы.
• SeCreateGlobalPrivilege (создание глобальных объектов) – позволяет процессу создание разделов и символьных ссылок во время сеанса службы терминалов.
Привилегия предоставлена: группе Администраторы, учетной записи локальной службы, учетной записи сетевой службы.
• SeCreatePagefilePrivilege (создание файла подкачки) – разрешает службе или учетной записи создание файла подкачки с помощью специальных API-функций.
Привилегия предоставлена группе Администраторы.
• SeCreateSymbolicLinkPrivilege (создание символических ссылок) – позволяет пользователю создавать символические ссылки. Определить, какие виды символьных ссылок доступны в операционной системе, можно с помощью команды программы командной строки fsutil behavior set.
Привилегия предоставлена группе Администраторы.
• SeDebugPrivilege (отладка программ) – разрешает службе или учетной записи производить отладку системного процесса с помощью подключаемого отладчика программ. Это позволяет процессам получать доступ к другим процессам, минуя проверку их дескриптора защиты.
Привилегия предоставлена группе Администраторы.
• SeImpersonatePrivilege (имитация клиента после проверки подлинности) – позволяет процессам выполнять олицетворение других процессов.
Привилегия предоставлена группе Администраторы, учетной записи локальной службы, учетной записи сетевой службы.
• SelncreaseBasePn\'orityPrivilege (увеличение приоритета выполнения) – разрешает службе или учетной записи увеличивать приоритет, с которым выполняются процессы. Например, пользователь сможет сделать это с помощью окна диспетчера задач.
Привилегия предоставлена группе Администраторы.
• SelncreaseQuotaPrivilege (настройка квот памяти для процесса) – позволяет службе или учетной записи увеличивать квоту на доступный объем памяти, назначенную запущенному процессу.
Привилегия предоставлена группе Администраторы, учетной записи локальной службы, учетной записи сетевой службы.
• SeLoadDriverPriviLege (загрузка и выгрузка драйверов устройств) – разрешает службе или учетной записи загружать и выгружать драйверы устройств режима ядра. Данная привилегия не относится к драйверам, поддерживающим Plug and Play.
Привилегия предоставлена группе Администраторы.
• SeManageVolumePrivilege (выполнение задач по обслуживанию томов) – необходима для выполнения проверки диска или его дефрагментации.
Привилегия предоставлена группе Администраторы.
• SeProfileSingleProcessPrivilege (профилирование одного процесса) – разрешает службе или учетной записи собирать информацию о профилях одиночного процесса. Данная привилегия необходима для работы службы предвыборки данных. В частности, эта привилегия необходима для использования средства мониторинга производительности несистемных процессов.
Привилегия предоставлена группе Администраторы.
• SeRemoteShutdownPrivilege (принудительное удаленное завершение работы) – необходима, чтобы процесс winlogon.exe разрешил удаленно завершить работу компьютера.
Привилегия предоставлена группе Администраторы.
• SeRestorePriviLege (восстановление файлов и каталогов) – разрешает службе или учетной записи выполнять операции восстановления. Данная привилегия позволяет учетной записи или службе открывать файлы и каталоги независимо от того, разрешена для них эта операция с помощью DACL или нет. При этом она позволяет обходить проверку таких разрешений, как Обзор папок/Выполнение файлов и Запись. Однако DACL обходится только в том случае, если установлен флаг FILE_FLAG_BACKUP_SEMANTIC.
Привилегия предоставлена группам Администраторы и Операторы архива.
• SeSecurityPriviLege (управление аудитом и журналом безопасности) – необходима для доступа к SACL дескриптора защиты, а также для чтения и очистки журнала событий безопасности. Она идентифицирует своего владельца в качестве оператора системы безопасности.
Привилегия предоставлена группе Администраторы.
• SeShutdownPrivilege (завершение работы системы) – разрешает службе или учетной записи завершать работу операционной системы.
Привилегия предоставлена группам Администраторы, Операторы архива, Пользователи.
• SeSystemEnvironmentPrivilege (изменение параметров среды изготовителя) – необходима для чтения переменных окружения микрокода из энергонезависимой памяти компьютеров с помощью HAL. Эта привилегия применима только к компьютерам с архитектурой, отличной от х86 – единственное, к чему можно получить доступ с помощью этой привилегии на компьютерах х86, так это к сведениям о последней удачной конфигурации. Также эта привилегия требуется для установки и модернизации операционной системы.
Привилегия предоставлена группе Администраторы.
• SeSystemProfilePrivilege (профилирование производительности системы) – проверяется API-функцией NtCreateProfile. Данная привилегия необходима для использования средства мониторинга производительности системных процессов.
Привилегия предоставлена группе Администраторы.
• SeSystemtimePriviLege (изменение системного времени) – разрешает изменять на компьютере время и дату.
Привилегия предоставлена группе Администраторы, учетной записи локальной службы.
• SeTakeOwnershipPriviLege (смена владельцев файлов и других объектов) – позволяет службе или учетной записи получать права владельца на любой объект файловой системы (объекты Active Directory, файлы и папки, принтеры, разделы реестра , процессы и потоки), но не предоставляет полного доступа к объекту.
Привилегия предоставлена группе Администраторы.
• SeTimeZonePriviLege (изменение часового пояса) – разрешает пользователю изменять временную зону, установленную в операционной системе.
Привилегия предоставлена группе Администраторы, учетной записи локальной службы.
• SeTcbPriviLege (работа в составе операционной системы) – повышает общие права службы или учетной записи до уровня операционной системы (идентифицирует владельца привилегии как часть доверенного блока компьютеров). Например, это позволяет создавать новый сеанс от имени любого локального пользователя, относящегося к любой группе (позволяет олицетворять любого пользователя локального компьютера без аутентификации и получать доступ к тем ресурсам, к которым может получить доступ другой пользователь).
Привилегия предоставлена: никому.
• SeUndockPriviLege (отключение компьютера от стыковочного узла) – необходима, чтобы режим Plug and Play разрешил извлечение компьютера из стыковочного устройства.
Привилегия предоставлена группам Администраторы, Пользователи.
Если же вам необходимо узнать, какие привилегии предоставлены текущему пользователю, то можно воспользоваться новой программой командной строки операционной системы Windows Vista Whoami.ехе. Для этого применяется следующий синтаксис программы: Whoami /priv.
Права учетной записи
Подраздел Конфигурация компьютера → Конфигурация Windows → Параметры безопасности → Локальные политики → Назначение прав пользователя оснастки Редактор объектов групповой политики содержит также набор прав, которые могут предоставляться пользователю.
Список большинства этих прав приведен ниже.
• SeAssign Primary Token Privilege (замена маркера уровня процесса) – позволяет процессам использовать API-функцию CreateProcessAsUser для запуска других процессов, не используя свой маркер доступа. Например, эта привилегия может использоваться одной службой для запуска другой. В частности, она используется планировщиком заданий.
Право предоставлено учетным записям сетевой и локальной службы.
• SeAuditPriviLege (управлять аудитом и журналом безопасности) – разрешает службе или учетной записи создание записей в стандартном журнале безопасности системы (eventvwr.msc) с помощью API-функции ReportEvent.
Право предоставлено учетным записям сетевой и локальной службы.
• SeCreatePermanentPriviLege (создание постоянных общих объектов) – позволяет службе или учетной записи создавать постоянные объекты (объекты, не удаляемые при отсутствии ссылок на них). Например, создавать объекты каталога с помощью диспетчера объектов.
Право предоставлено: никому.
• SeCreateTokenPriviLege (создание маркерного объекта) – разрешает службе или учетной записи создавать первичные маркеры. Иначе говоря, учетная запись может создать маркер, содержащий любые SID и привилегии, и запустить с его помощью процесс.
Право предоставлено: никому.
• SeEnableDelegationPrivilege (разрешить доверия к учетным записям компьютеров и пользователей при делегировании) – используется в Active Directory для делегирования учетных записей и определяет, может ли данная учетная запись устанавливать параметр Делегирование разрешено для пользовательского или компьютерного объекта. Этот параметр можно устанавливать только для тех учетных записей пользователей или компьютеров, для которых снят флажок Учетная запись не может быть делегирована.
Право предоставлено: никому.
• SeLockMemoryPrivilege (блокировка страниц в памяти) – разрешает службе или учетной записи выполнять блокировку физических страниц памяти. Блокировка физических страниц памяти запрещает сброс блокированных страниц в файл подкачки, то есть они всегда будут находиться в оперативной памяти.
Право предоставлено: никому.
• SeMachineAccountPrivilege (добавление рабочих станций к домену) – необходимо, чтобы диспетчер учетных данных безопасности SAM разрешил добавление компьютера к домену. Если пользователь обладает данным правом, он может добавить до десяти компьютеров в домен.
Право предоставлено пользователям, прошедшим проверку.
• SeSyncAgentPrivilege (синхронизировать данные службы каталогов) – позволяет пользователям выполнять синхронизацию Active Directory. Данное право позволяет читать объекты и свойства каталога Active Directory, даже если их атрибуты защиты это запрещают.
Право предоставлено: никому.