
- •Методы, затрудняющие использование скопированной информации
- •Этапы работ по защите персональных данных
- •Создание режима защиты персональных данных
- •Основные отличия поточных шифров от блочных
- •Проектирование поточных шифров
- •Структура сертификата [править]
- •Программная реализация методов защиты в Windows Избирательное управление доступом
- •Маркер доступа
- •Сканирование файловой системы
- •Кража ключевой информации
- •Подбор пароля
- •Сборка мусора
- •Превышение полномочий
- •Программные закладки
- •Стандарты защищённости ос
- •Процессы-серверы
- •Разграничение доступа с помощью доменов безопасности
- •Средства аудита
Маркер доступа
Маркер доступа (access token) (МД) является объектом, который описывает контекст безопасности процесса или нити. Информация в МД включает принадлежность (authority) и привилегии пользователя, связанные процессом или нитью.
Структура МД достаточна обширна, поэтому рассмотрим основной компонент со сылками на дополнительные структуры. Эти сведения носят справочный характер, так как МД-структура создаётся при регистрации пользователя и просмотреть или изменить её можно соответствующими функциями.
Структура TOKEN_INFORMATION_CLASS перечислимого типа, содержит значения которые определяют информацию, содержащуюся в МД.
typedef enum _TOKEN_INFORMATION_CLASS
{
TokenUser, // структура TOKEN_USER, идентифицирующая пользователя, связанного с данным МД
TokenGroups, // структура TOKEN_GROUPS, описывающая SID групп, ккоторым принадлежит владелец МД
TokenPrivileges, // структура TOKEN_PRIVILLEGES, описывающая привилегии владельца МД
TokenOwner, // структура TOKEN_OWNER, содержащая SID владельца, используемая при создании объектов
TokenPrimaryGroup, // структура TOKEN_PRIMARY_GROUP, описывающая первичную группу владельца МД
TokenDefaultDacl, // структура TOKEN_DEFAULT_DACL, содержащая DACL владельца, используемая при создании объектов
TokenSource, // структура TOKEN_SOURCE, описывающая источник создания МД: Session Manager, LAN Manager, RPC Server
TokenType, // значение TOKEN_TYPE, указывающее является ли МД первичным или олицетворением.
TokenImpersonationLevel, // значение SECURITY_IMPERSONATION_LEVEL, указывающее уровень олицетворения признака. Если МД является первичным, то оно имеет значение ЛОЖЬ.
TokenStatistics, // структура TOKEN_STATISTICS, содержащая различную информацию о МД.
TokenRestrictedSids, // структура TOKEN_GROUPS, содержащая список ограничивающих SID в МД.
TokenSessionId // значение идентификатора сессии
} TOKEN_INFORMATION_CLASS;
Для работы с МД используются следующие функции.
Функция GetTokenInformation извлекает информацию о МД. Вызывающий процесс должен иметь соответствующие права доступа, для получения информацию.
Функция AdjustTokenGroups изменяет информацию о группе в МД.
Функция AdjustTokenPrivileges разрешает или запрещает привилегии в МД.
Функция CheckTokenMembership определяет доступен ли данный SID в указанном МД.
Функция CreateRestrictedToken создаёт новый МД с ограничением возможностей исходного МД.
Функция DuplicateToken создаёт новый олицетворённый МД, являющийся дубликатом существующего МД.
Функция DuplicateTokenEx создаёт новый первичный или олицетворённый МД.
Функция IsTokenRestricted определяет для МД список ограниченных SID.
Функция OpenProcessToken возвращает хендл первичного МД для процесса.
Функция OpenThreadToken возвращает хендл олицетворённого МД для нити.
Функция SetThreadToken устанавливает или удаляет олицетворённый МД для нити.
Функция SetTokenInformation изменяет владельца, первичную группу или DACL, задаваемую по умолчанию.
Пример получения данных из МД. Если требуется исследовать маркер чьей-либо учётной записи можно войти в систему под этой учётной записью или использовать команду RunAs для запуска нового экземпляра командного процессора. Так для выполнения приложения под именем администратора в командной строке набрать
RunAs/user:MyMachine\administrator cmd
16 1616161616161616161616161616161616161616161616161616