Обеспечение безопасности в Windows
Задание 7. Исследовать дескриптор защиты (security descriptor).
Указания к выполнению.
1. Адрес дескриптора защиты объекта (в данном случае – файла) содержится в параметре SecurityDescriptor функции SeAccessCheck:
2. Дескриптор защиты, зная его адрес, можно посмотреть при помощи команды !sd:
!sd 0xE186ABC0 1
Параметр 1 в конце указывает, что нужно по возможности указывать имена для SID.
Уровень доступа к объекту определяется в списке DACL маской доступа (поля Mask выделены на рисунке красным). В маске отдельные биты отвечают за определенные виды доступа.
Выделяют стандартные права доступа (Standard Access Rights), применимые к большинству объектов, и специфичные для объектов права доступа (Object-Specific Access Rights) (см. лекцию 9 "Безопасность в Windows"). Описание стандартных прав доступа и соответствующих значений масок приведено в файле public\sdk\inc\ntseapi.h (строки 72–166), а также описаны в статье MSDN "Access Mask Format"2http://msdn.microsoft.com/en-us/library/windows/desktop/aa374896(v=vs.85).aspx. Описание прав доступа для файлов и каталогов имеется в файле public\sdk\inc\ntioapi.h (строки 41–108), а также в статье MSDN "Access Mask"3http://msdn.microsoft.com/en-us/library/windows/hardware/ff538834(v=vs.85).aspx.
Для примера рассмотрим две маски, используемые для файла input.txt (см. рисунок выше): 0x001F01FF и 0x001200A9.
Представим маску 0x001F01FF в двоичном виде и укажем, за что отвечает каждая единица:
Как видно из рисунка, маска 0x001F01FF обозначает полный доступ к файлу. Такой доступ имеют члены группы Administrators и системная учетная запись Система (System).
Рассмотрим вторую маску доступа 0x001200A9:
Таким образом, члены группы Пользователи (Users) имеют доступ только на чтение и исполнение.
Задания для самостоятельного выполнения
Задание 1. Изменить права доступа на файл и зафиксировать изменения в DACL дескриптора защиты файла.
Указания к выполнению.
1. В виртуальной машине измените права доступа на файл input.txt. Для этого в свойствах файла перейдите на вкладку Security и сделайте необходимые изменения (добавьте/удалите пользователей и/или группы, измените их права):
Замечание. Для осуществления некоторых действий (например, удаления пользователей) может потребоваться отказаться от наследования прав доступа объекта родителя (папки). Для этого нажмите кнопку Advanced – снимите флажок Allow inheritable permissions… – в появившемся окне нажмите кнопку Copy:
2. Просмотрите дескриптор безопасности файла, повторив действия из задания 7 основной части работы.
Задание 2. Исследовать функцию SeAccessCheck.
Указания к выполнению.
1. Выполните трассировку функции SeAccessCheck, пользуясь материалом лекции 9 "Безопасность в Windows" и документацией WRK.
Задание 3. Исследовать расположение в памяти структуры SECURITY_DESCRIPTOR.
Указания к выполнению.
1. Выясните расположение в памяти структуры SECURITY_DESCRIPTOR, пользуясь информацией, изложенной в задании 7 данной лабораторной работы, материалом лекции 9 "Безопасность в Windows", документацией WRK и статьей MSDN "SECURITY_DESCRIPTOR"4http://msdn.microsoft.com/en-us/library/cc230366(v=prot.10).aspx.