Как происходит проверка прав доступа пользователя к ресурсам в ос windows
Перейти к содержимому

Как происходит проверка прав доступа пользователя к ресурсам в ос windows

  • автор:

1. Доступ к данным. Этапы идентификации и аутентификации, реализуемые ос Windows. Разграничение доступа к устройствам.

Доступ пользователя к информационным ресурсам компьютера осуществляется при успешном выполнении процедуры идентификации и аутентификации.

Идентификация – процесс распознавания элемента системы, обычно с помощью заранее определенного идентификатора или другой уникальной информации – каждый субъект или объект системы должен быть однозначно идентифицируем.

Аутентификация– проверка подлинности идентификации пользователя, процесса, устройства или другого компонента системы (обычно осуществляется перед разрешением доступа к ресурсу).

Этапы идентификации и аутентификации, реализуемые ОС Windows

Первый шаг реализуется при входе пользователя в систему. Здесь следует выделить возможность входа в штатном и в безопасном режиме. Принципиальным отличием безопасного режима является то, что при запуске системы в безопасном режиме можно отключить загрузку сторонних по отношению к системе драйверов и приложений. Поэтому, если в системе используется добавочная СЗИ от НСД, можно попытаться загрузить систему в безопасном режиме без компонент СЗИ от НСД, т.е. без средства защиты. С учетом того, что загрузить систему в безопасном режиме может любой пользователь (в Unix системах – только Root), то СЗИ от НСД должна обеспечивать возможность входа в систему в безопасном режиме только под учетной записью администратора.

Второй шаг состоит в запуске пользователем процессов, которые порождают потоки (именно потоки осуществляют обращение к ресурсам). Все работающие в системе процессы и потоки выполняются в контексте защиты пользователя, от имени которого они были запущены. Для идентификации контекста защиты потока используется маркер доступа (access token). В контекст защиты входит информация, описывающая привилегии, учетные записи и группы, сопоставленные с процессом и потоком. При регистрации пользователя в системе создается начальный маркер, представляющий пользователя. Все программы, запускаемые пользователем, наследуют копию этого маркера. Механизмы защиты используют маркер, определяя набор действий, разрешенных потоку или процессу.

В общем случае пользователь имеет возможность запуска процесса под учетной записью другого пользователя (только после выполнения процедуры аутентификации). Это полезно, например, когда на одном компьютере требуется обрабатывать конфиденциальные и открытые данные, например, под одной учетной записью обрабатывать необходимым приложением конфиденциальные данные, под другой учетной записью запустить Internet-приложение. Реализация данной возможности выставляет дополнительные требования к СЗИ (при подобном запуске приложения не изолируется буфер обмена, который является «принадлежностью» рабочего стола). Важнейшей особенностью этого способа запуска процесса является то, что система начинает функционировать в многопользовательском режиме. Следовательно, может возникнуть проблема идентификации пользователя при доступе к ресурсу.

Третий шаг состоит в порождении процессом потоков, которые собственно и обращаются к ресурсам. Система предоставляет разработчикам приложений сервисы олицетворения. Сервис олицетворения (impersonation) предоставляет возможность отдельному потоку выполняться в контексте защиты, отличном от контекста защиты процесса, его запустившего, т.е. запросить олицетворить себя с правами другого пользователя. Именно на этом этапе и возникают вопросы корректности И/А при доступе, и задача сводится к контролю корректности олицетворения. Аналогичная ситуация и в ОС семейства Unix, где существуют понятия идентификатора и эффективного идентификатора (под которым осуществляется запрос доступа к ресурсам).

Задача защиты при этом сводится к контролю корректности олицетворения при запросах доступа к ресурсам, т.к. именно использование сервиса олицетворения может привести к неконтролируемой смене исходного идентификатора. При запросе доступа к ресурсу должны выявляться факты произошедшего олицетворения и проверяться их корректность в соответствии с заданными разрешениями. Проверка прав доступа к ресурсу должна осуществляться уже после проверки корректности его идентификации.

Разграничение доступа к устройствам

Разграничение доступа к устройствам – это задача противодействия внутренним ИТ-угрозам, в частности, для защиты информации от санкционированных пользователей.

В ОС семейства Unix рассматриваемые проблемы не столь критичны, т.к. устройства в них монтируются к файловой системе. ОС Windows проблема состоит в том, что многие устройства предполагают возможность взаимодействия с ними приложения не напрямую, а через драйвер. В этом случае запрос доступа к устройству осуществляется от лица пользователя System. Трудность состоит в определении идентификатора пользователя, который инициировал обращение. Можно «посмотреть», какой пользователь зарегистрирован, и фильтровать запросы доступа применительно к его учетной записи (подобный подход реализуется некоторыми специализированными средствами защиты). Но уже Windows XP возможность входа в многопользовательский режим вынесена в интерфейс (из проводника можно запустить приложение с правами другого пользователя – многопользовательский режим). При этом выявление учетной записи, от которой осуществлен запрос доступа к устройству, становится весьма сложной задачей. Возникает задача корректного разграничения доступа пользователей к устройствам, доступ к которым осуществляется через драйверы от имени пользователя System, которая напрямую не решается современными средствами ОС. Это возможно лишь опосредованно, например, через механизм обеспечения замкнутости программной среды, разрешив/запретив пользователю запуск приложения для работы с устройствами.

Как происходит проверка прав доступа пользователя к ресурсам в ос windows

На просторах России много фирм и мелких предприятий не имеют в штате своего системного администратора на постоянной основе или приходящего время от времени. Фирма растёт и рано или поздно одной расшаренной папки в сети, где каждый может делать что захочет, становится мало. Требуется разграничение доступа для разных пользователей или групп пользователей на платформе MS Windows. Линуксоидов и опытных админов просьба не читать статью.

Самый лучший вариант — взять в штат опытного админа и задуматься о покупке сервера. Опытный админ на месте сам решит: поднимать ли MS Windows Server с Active Directory или использовать что-то из мира Linux.

Но данная статья написана для тех, кто решил пока мучаться самостоятельно, не применяя современные программные решения. Попытаюсь объяснить хотя бы как правильно реализовывать разграничение прав.

Прежде чем начать хотелось бы разжевать пару моментов:

  • Любая операционная система «узнаёт» и «различает» реальных людей через их учётные записи. Должно быть так: один человек = одна учётная запись.
  • В статье описывается ситуация, что в фирме нет своего админа и не куплен, к примеру, MS Windows Server. Любая обычная MS Windows одновременно обслуживает по сети не более 10 для WinXP и 20 человек для Win7. Это сделано фирмой Microsoft специально, чтобы клиентские Windows не перебегали дорогу серверам Windows и вы не портили бизнес Microsoft. Помните число 10-20 и когда в вашей фирме будет более 10-20 человек, вам придётся задуматься о покупке MS Windows Server или попросить кого-либо поднять вам бесплатный Linux Samba сервер, у которого нет таких ограничений.
  • Раз у вас нет грамотного админа, то ваш обычный комп с клиентской MS Windows будет изображать из себя файловый сервер. Вы вынуждены будете продублировать на нём учётные записи пользователей с других компьютеров, чтобы получать доступ к расшаренным файлам. Другими словами, если есть в фирме ПК1 бухгалтера Оли с учётной записью olya, то и на этом «сервере» (именую его в дальнейшем как WinServer) нужно создать учётную запись olya с таким же паролем, как и на ПК1.
  • Люди приходят и уходят. Текучесть кадров есть везде и если вы, тот бедный человек, который не админ и назначен (вынужден) поддерживать ИТ вопросы фирмы, то вот вам совет. Делайте учётные записи, не привязанные к личности. Создавайте для менеджеров — manager1, manager2. Для бухгалтеров — buh1, buh2. Или что-то подобное. Ушёл человек? Другой не обидится, если будет использовать manager1. Согласитесь это лучше, чем Семёну использовать учётную запись olya, так как влом или некому переделывать и уже всё работает 100 лет.
  • Забудьте такие слова как: «сделать пароль на папку». Те времена, когда на ресурсы накладывался пароль давным давно прошли. Поменялась философия работы с различными ресурсами. Сейчас пользователь входит в свою систему с помощью учётной записи (идентификация), подтверждая себя своим паролем (аутентификация) и ему предоставляется доступ ко всем разрешённым ресурсам. Один раз вошёл в систему и получил доступ ко всему — вот что нужно помнить.
  • Желательно выполнять нижеперечисленные действия от встроенной учётной записи Администратор или от первой учётной записи в системе, которая по умолчанию входит в группу Администраторы.

Приготовление.

В Проводнике уберите упрощённый доступ к нужным нам вещам.

  • MS Windows XP. Меню Сервис — Свойства папки — Вид. Снять галочку Использовать мастер общего доступа
  • MS Windows 7. Нажмите Alt. Меню Сервис — Параметры папок — Вид. Снять галочку Использовать простой общий доступ к файлам.

Создайте на вашем компьютере WinServer папку, которая будет хранить ваше богатство в виде файлов приказов, договоров и так далее. У меня, как пример, это будет C:\dostup\. Папка обязательна должна быть создана на разделе с NTFS.

Доступ по сети.

На данном этапе нужно выдать в доступ по сети (расшарить — share) папку для работы с ней другими пользователями на своих компьютерах данной локальной сети.

И самое главное! Выдать папку в доступ с полным разрешением для всех! Да да! Вы не ослышались. А как же разграничение доступа?

Мы разрешаем по локальной сети всем подсоединяться к папке, НО разграничивать доступ будем средствами безопасности, сохраняемые в файловой системе NTFS, на которой расположена наш каталог.

  • MS Windows XP. На нужной папке (C:\dostup\) правой клавишей мыши и там Свойства. Вкладка Доступ — Открыть общий доступ к этой папке. Заполняем Примечание. Жмём Разрешение. Группа Все должна иметь по сети право Полный доступ.
  • MS Windows 7. На нужной папке (C:\dostup\) правой клавишей мыши и там Свойства. Вкладка Доступ — Расширенная настройка. Ставим галочку Открыть общий доступ к этой папке. Заполняем Примечание. Жмём Разрешение. Группа Все должна иметь по сети право Полный доступ.

Пользователи и группы безопасности.

Нужно создать необходимые учётные записи пользователей. Напоминаю, что если на многочисленных ваших персональных компьютерах используются различные учётные записи для пользователей, то все они должны быть созданы на вашем «сервере» и с теми же самыми паролями. Этого можно избежать, только если у вас грамотный админ и компьютеры в Active Directory. Нет? Тогда кропотливо создавайте учётные записи.

  • MS Windows XP. Панель Управления — Администрирование — Управление компьютером.
    Локальные пользователи и группы — Пользователи. Меню Действие — Новый пользователь.
  • MS Windows 7. Панель Управления — Администрирование — Управление компьютером.
    Локальные пользователи и группы — Пользователи. Меню Действие — Создать пользователя.

Теперь очередь за самым главным — группы! Группы позволяют включать в себя учётные записи пользователей и упрощают манипуляции с выдачей прав и разграничением доступа.

Чуть ниже будет объяснено «наложение прав» на каталоги и файлы, но сейчас главное понять одну мысль. Права на папки или файлы будут предоставляться группам, которые образно можно сравнить с контейнерами. А группы уже «передадут» права включённым в них учётным записям. То есть нужно мыслить на уровне групп, а не на уровне отдельных учётных записей.

  • MS Windows XP. Панель Управления — Администрирование — Управление компьютером.
    Локальные пользователи и группы — Группы. Меню Действие — Создать группу.
  • MS Windows 7. Панель Управления — Администрирование — Управление компьютером.
    Локальные пользователи и группы — Группы. Меню Действие — Создать группу.

Нужно включить в нужные группы нужные учётные записи. Для примера, на группе Бухгалтеры правой клавишей мыши и там Добавить в группу или Свойства и там кнопка Добавить. В поле Введите имена выбираемых объектов впишите имя необходимой учётной записи и нажмите Проверить имена. Если всё верно, то учётная запись изменится к виду ИМЯСЕРВЕРА\учётная_запись. На рисунке выше, учётная запись buh3 была приведена к WINSERVER\buh3.

Итак, нужные группы созданы и учётные записи пользователей включены в нужные группы. Но до этапа назначения прав на папках и файлах с помощью групп хотелось бы обсудить пару моментов.

Стоит ли заморачиваться с группой, если в ней будет одна учётная запись? Считаю, что стоит! Группа даёт гибкость и маневренность. Завтра вам понадобится ещё одному человеку Б дать те же права, что и определённому человеку с его учётной записью А. Вы просто добавите учётную запись Б в группу, где уже имеется А и всё!

Намного проще, когда права доступа выданы группам, а не отдельным персонам. Вам остаётся лишь манипулировать группами и включением в них нужных учётных записей.

Права доступа.

Желательно выполнять нижеперечисленные действия от встроенной учётной записи Администратор или от первой учётной записи в системе, которая по умолчанию входит в группу Администраторы.

Вот и добрались до этапа, где непосредственно и происходит магия разграничения прав доступа для различных групп, а через них и пользователям (точнее их учётным записям).

Итак, у нас есть директория по адресу C:\dostup\, которую мы уже выдали в доступ по сети всем сотрудникам. Внутри каталога C:\dostup\ ради примера создадим папки Договора, Приказы, Учёт МЦ. Предположим, что есть задача сделать:

  • папка Договора должна быть доступна для Бухгалтеров только на чтение. Чтение и запись для группы Менеджеров.
  • папка УчётМЦ должна быть доступна для Бухгалтеров на чтение и запись. Группа Менеджеров не имеет доступа.
  • папка Приказы должна быть доступна для Бухгалтеров и Менеджеров только на чтение.

На папке Договора правой клавишей и там Свойства — вкладка Безопасность. Мы видим что какие-то группы и пользователи уже имеют к ней доступ. Эти права были унаследованы от родителя dostup\, а та в свою очередь от своего родителя С:

Мы прервём это наследование прав и назначим свои права-хотелки.

Жмём кнопку Дополнительно — вкладка Разрешения — кнопка Изменить разрешения.

Сначала прерываем наследование прав от родителя. Снимаем галочку Добавить разрешения, наследуемые от родительских объектов. Нас предупредят, что разрешения от родителя не будут применяться к данному объекту (в данном случае это папка Договора). Выбор: Отмена или Удалить или Добавить. Жмём Добавить и права от родителя останутся нам в наследство, но больше права родителя на нас не будут распространяться. Другими словами, если в будущем права доступа у родителя (папка dostup) изменить — это не скажется на дочерней папке Договора. Заметьте в поле Унаследовано от стоит не унаследовано. То есть связь родитель — ребёнок разорвана.

Теперь аккуратно удаляем лишние права, оставляя Полный доступ для Администраторов и Система. Выделяем по очереди всякие Прошедшие проверку и просто Пользователи и удаляем кнопкой Удалить.

Кнопка Добавить в данном окне Дополнительные параметры безопасности предназначена для опытных админов, которые смогут задать особые, специальные разрешения. Статья же нацелена на знания опытного пользователя.

Мы ставим галочку Заменить все разрешения дочернего объекта на разрешения, наследуемые от этого объекта и жмём Ок. Возвращаемся назад и снова Ок, чтобы вернуться к простому виду Свойства.

Данное окно позволит упрощённо достигнуть желаемого. Кнопка Изменить выведет окно «Разрешения для группы».

Жмём Добавить. В новом окне пишем Бухгалтеры и жмём «Проверить имена» — Ок. По умолчанию даётся в упрощённом виде доступ «на чтение». Галочки в колонке Разрешить автоматически выставляются «Чтение и выполнение», «Список содержимого папки», «Чтение». Нас это устраивает и жмём Ок.

Теперь по нашему техническому заданию нужно дать права на чтение и запись для группы Менеджеры. Если мы в окне Свойства, то снова Изменить — Добавить — вбиваем Менеджеры — Проверить имена. Добавляем в колонке Разрешить галочки Изменение и Запись.

Теперь нужно всё проверить!

Следите за мыслью. Мы приказали, чтобы папка Договора не наследовала права от свого родителя dostup. Приказали дочерним папкам и файлам внутри папки Договора наследовать права от неё.

На папку Договора мы наложили следующие права доступа: группа Бухгалтеры должна только читать файлы и открывать папки внутри, а группа Менеджеры создавать, изменять файлы и создавать папки.

Следовательно, если внутри директории Договора будет создаваться файл-документ, на нём будут разрешения от его родителя. Пользователи со своими учётными записями будут получать доступ к таким файлам и каталогам через свои группы.

Зайдите в папку Договора и создайте тестовый файл договор1.txt

На нём щелчок правой клавишей мыши и там Свойства — вкладка Безопасность — Дополнительно — вкладка Действующие разрешения.

Жмём Выбрать и пишем учётную запись любого бухгалтера, к примеру buh1. Мы видим наглядно, что buh1 получил права от своей группы Бухгалтеры, которые обладают правами на чтение к родительской папке Договора, которая «распространяет» свои разрешения на свои дочерние объекты.

Пробуем manager2 и видим наглядно, что менеджер получает доступ на чтение и запись, так как входит в группу Менеджеры, которая даёт такие права для данной папки.

Абсолютно так же, по аналогии с папкой Договора, накладываются права доступа и для других папок, следуя вашему техническому заданию.

  • Используйте разделы NTFS.
  • Когда разграничиваете доступ на папки (и файлы), то манипулируйте группами.
  • Создавайте учётные записи для каждого пользователя. 1 человек = 1 учётная запись.
  • Учётные записи включайте в группы. Учётная запись может входить одновременно в разные группы. Если учётная запись находится в нескольких группах и какая-либо группа что-то разрешает, то это будет разрешено учётной записи.
  • Колонка Запретить (запрещающие права) имеют приоритет перед Разрешением. Если учётная запись находится в нескольких группах и какая-либо группа что-то запрещает, а другая группа это разрешает, то это будет запрещено учётной записи.
  • Удаляйте учётную запись из группы, если хотите лишить доступа, которого данная группа даёт.
  • Задумайтесь о найме админа и не обижайте его деньгами.

Задавайте вопросы в комментариях и спрашивайте, поправляйте.

Видеоматериал показывает частный случай, когда нужно всего лишь запретить доступ к папке, пользуясь тем, что запрещающие правила имеют приоритет перед разрешающими правила.

Стандарт управления правами доступа к корпоративным файловым информационным ресурсам

Стандарт управления правами доступа к корпоративным файловым информационным ресурсам (далее – Стандарт) регламентирует процессы предоставления доступа к файловым информационным ресурсам, размещенным на компьютерах, работающих под управлением операционных систем семейства Microsoft Windows. Стандарт распространяется на случаи, когда в качестве файловой системы используется NTFS, а в качестве сетевого протокола для совместного доступа к файлам SMB/CIFS.

Информационный ресурс – поименованная совокупность данных, к которой применяются методы и средства обеспечения информационной безопасности (например, разграничение доступа).
Файловый информационный ресурс – совокупность файлов и папок, хранящихся в каталоге файловой системы (который называется корневым каталогом файлового информационного ресурса), доступ к которой разграничивается.
Составной файловый информационный ресурс – это файловый информационный ресурс, содержащий в себе один или несколько вложенных файловых информационных ресурсов, отличающихся от данного ресурса правами доступа.
Вложенный файловый информационный ресурс – это файловый информационный ресурс, входящий в составной информационный ресурс.
Точка входа в файловый информационный ресурс – каталог файловой системы, к которому предоставляется сетевой доступ (shared folder) и который используется для обеспечения доступа к файловому информационному ресурсу. Данный каталог обычно совпадает с корневым каталогом файлового информационного ресурса, но может быть и вышестоящим.
Промежуточный каталог – каталог файловой системы, находящийся на пути от точки входа в файловый информационной ресурс к корневому каталогу файлового информационного ресурса. Если точка входа в файловый информационный ресурс является вышестоящим каталогом по отношению к корневому каталогу файлового информационного ресурса, то она также будет являться промежуточным каталогом.
Группа доступа пользователей – локальная или доменная группа безопасности, содержащая в конечном счете учетные записи пользователей, наделенные одним из вариантов полномочий доступа к файловому информационному ресурсу.

  1. Доступ разграничивается только на уровне каталогов. Ограничение доступа к отдельным файлам не проводится.
  2. Назначение прав доступа выполняется на базе групп безопасности. Назначение прав доступа на отдельные учетные записи пользователей не проводится.
  3. Явно запрещающие полномочия доступа (deny permissions) не применяются.
  4. Разграничение прав доступа проводится только на уровне файловой системы. На уровне сетевых протоколов SMB/CIFS права не разграничиваются (Группа «Все» – полномочия «Чтение/Запись» / Everyone – Change).
  5. При настройке сетевого доступа к файловому информационному ресурсу в настройках SMB/CIFS устанавливается опция «Перечисление на основе доступа (Access based enumeration)».
  6. Создание файловых информационных ресурсов на рабочих станциях пользователей недопустимо.
  7. Не рекомендуется размещать файловые информационные ресурсы на системных разделах серверов.
  8. Не рекомендуется создавать несколько точек входа в файловый информационный ресурс.
  9. Следует по возможности избегать создание вложенных файловых информационных ресурсов, а в случаях, когда имена файлов или каталогов содержат конфиденциальную информацию, это вовсе недопустимо

Доступ пользователей к файловому информационному ресурсу предоставляется путем наделения их одним из вариантов полномочий:

  • Доступ «Только на чтение (Read Only)».
  • Доступ «Чтение и запись (Read & Write)».

В подавляющем количестве задач разграничения доступа подобных вариантов полномочий доступа будет достаточно, но при необходимости возможно формирование новых вариантов полномочий, например, «Чтение и запись, кроме удаления (Read & Write without Remove)». Для реализаций новый полномочий необходимо будет уточнить пункт В.3 Таблицы 1, в остальном применение Стандарта останется неизменным.

Правила именования групп доступа пользователей

Имена групп доступа пользователей формируются по шаблону:

FILE-Имя файлового информационного ресурса–аббревиатура полномочий

Имя файлового информационного ресурса
должно совпадать с UNC именем ресурса или состоять из имени сервера и локального пути (если сетевой доступ к ресурсу не предоставляется). При необходимости в данном поле допускаются сокращения. Символы «\\» опускаются, а «\» и «:» заменяются на «-».

  • RO — для варианта доступа «Только на чтение (Read Only)»
  • RW — для варианта доступа «Чтение и запись (Read & Write)».

Пример 1
Имя группы доступа пользователей, имеющих полномочия «Только чтение» для файлового информационного ресурса с UNC именем \\FILESRV\Report, будет:
FILE-FILESRV-Report-RO

Пример 2
Имя группы доступа пользователей, имеющих полномочия «Чтение и запись» для файлового информационного ресурса, размещенного на сервере TERMSRV по пути D:\UsersData, будет:
FILE-TERMSRV-D-UsersData-RW

Шаблон прав доступа к каталогам файлового информационного ресурса

Таблица 1 – Шаблон NTFS-прав доступа для корневого каталога файлового информационного ресурса.

Субъекты Права Режим наследования
Наследование прав доступа от вышестоящих каталогов отключено
А) Обязательные права
Специальная учетная запись:
«СИСТЕМА (SYSTEM)»
Полный доступ (Full access) Для этой папки, ее подпапок и файлов (This folder, subfolders and files)
Локальная группа безопасности:
«Администраторы (Administrators)»
Полный доступ (Full access) Для этой папки, ее подпапок и файлов (This folder, subfolders and files)
Б.1) Полномочия «Только чтение (Read Only)»
Группа доступа пользователей:
«FILE-Имя ресурса-RO»
Базовые права:
а) чтение и выполнение (read & execute);
б) список содержимого папки (list folder contents);
в) чтение (read);
Для этой папки, ее подпапок и файлов (This folder, subfolders and files)
Б.2) Полномочия «Чтение и запись (Read & Write)»
Группа доступа пользователей:
«FILE-Имя ресурса-RW»
Базовые права:
а) изменение (modify);
б) чтение и выполнение (read & execute);
в) список содержимого папки (list folder contents);
г) чтение (read);
д) запись (write);
Для этой папки, ее подпапок и файлов (This folder, subfolders and files)
Б.3) Другие полномочия при их наличии
Группа доступа пользователей:
«FILE-Имя ресурса-аббревиатура полномочий»
Согласно полномочиям Для этой папки, ее подпапок и файлов (This folder, subfolders and files)

Табилца 2 – Шаблон NTFS-прав доступа для промежуточных каталогов файлового информационного ресурса.

Субъекты Права Режим наследования
Наследование прав доступа от вышестоящих каталогов включено, но если данный каталог является вышестоящим по отношению к файловым информационным ресурсам и не входит ни в один другой файловый информационный ресурс, то наследование отключено
А) Обязательные права
Специальная учетная запись:
«СИСТЕМА (SYSTEM)»
Полный доступ (Full access) Для этой папки, ее подпапок и файлов (This folder, subfolders and files)
Локальная группа безопасности:
«Администраторы»
Полный доступ (Full access) Для этой папки, ее подпапок и файлов (This folder, subfolders and files)
Б.1) Полномочия «Проход через каталог (TRAVERSE
Группы доступа пользователей информационных ресурсов, для которых этот каталог является промежуточным Дополнительные параметры безопасности:
а) траверс папок / выполнение файлов (travers folder / execute files);
б) содержимое папки / чтение данных (list folder / read data);
в) чтение атрибутов (read attributes);
в) чтение дополнительных атрибутов (read extended attributes);
г) чтение разрешений (read permissions);
Только для этой папки (This folder only)

Бизнес процессы управления доступом к файловым информационным ресурсам

А. Создание файлового информационного ресурса
При создании файлового информационного ресурса выполняются следующие действия:

  1. Создаются группы доступа пользователей. Если сервер, на котором размещен файловый информационный ресурс, является членом домена, то создаются доменные группы. Если нет, то группы создаются локально на сервере.
  2. На корневой каталог и промежуточные каталоги файлового информационного ресурса назначаются права доступа согласно шаблонам прав доступа.
  3. В группы доступа пользователей добавляются учетные записи пользователей в соответствии с их полномочиями.
  4. При необходимости для файлового информационного ресурса создается сетевая папка (shared folder).

Б. Предоставление пользователю доступа к файловому информационному ресурсу
Учетная запись пользователя помещается в соответствующую группу доступа пользователя в зависимости от его полномочий.

В. Изменение доступа пользователя к файловому информационному ресурсу
Учетная запись пользователя перемещается в другую группу доступа пользователей в зависимости от указанных полномочий.

Г. Блокирование доступа пользователя к файловому информационному ресурсу
Учетная запись пользователя удаляется из групп доступа пользователей файлового информационного ресурса. Если работник увольняется, то членство в группах не меняется, а блокируется учетная запись целиком.

Д1. Создание вложенного файлового информационного ресурса. Расширение доступа
Данная задача возникает, когда к некоторому каталогу файлового информационного ресурса необходимо предоставить доступ дополнительной группе лиц (расширить доступ). При этом выполняются следующие мероприятия:

  1. Регистрируется вложенный файловый информационный ресурс (согласно процессу А)
  2. В группы доступа пользователей вложенного файлового информационного ресурса добавляются группы доступа пользователей вышестоящего составного файлового информационного ресурса.

Д2. Создание вложенного файлового информационного ресурса. Сужение доступа
Данная задача возникает, когда к некоторому каталогу файлового информационного ресурса необходимо ограничить доступ и предоставить его только ограниченной группе лиц:

  1. Регистрируется вложенный файловый информационный ресурс (согласно процессу А)
  2. В группы доступа пользователей создаваемого информационного ресурса помещаются те учетные записи пользователей, которым требуется предоставить доступ.

Е. Изменение модели предоставления доступа к файловому информационному ресурсу
В случаях, когда к стандартным вариантам полномочий «Только чтение (Read only)» или «Чтение и запись (Read & Write)» необходимо добавить новые типы полномочий, например, «Чтение и запись, кроме удаления (Read & Write without Remove)» выполняют следующие действия:

  1. Организационными (или техническими, но не связанными с изменением прав доступа к каталогам файловой системы) мерами блокируется доступ пользователей к данному и всем вложенным файловым информационным ресурсам.
  2. К корневому каталогу файлового информационного ресурса назначаются новые права доступа, при этом заменяются права доступа для всех дочерних объектов (активируется наследие).
  3. Перенастраиваются права доступа для всех вложенных информационных ресурсов.
  4. Настраиваются промежуточные каталоги для данного и вложенных информационных ресурсов.

Примеры

Рассмотрим применение данного стандарта на примере гипотетической организации ООО «ИнфоКриптоСервис», где для централизованного хранения файловых информационных ресурсов выделен сервер с именем «FILESRV». Сервер работает под управлением операционной системы Microsoft Windows Server 2008 R2 и является членом домена Active Directory с FQDN именем «domain.ics» и NetBIOS именем «ICS».

Подготовка файлового сервера
На диске «D:» сервера «FILESRV» создаем каталог «D:\SHARE\». Этот каталог будет единой точкой входа во все файловые информационные ресурсы, размещенные на данном сервере. Организуем сетевой доступ к данной папке (используем апплет «Share and Storage Management»):

Создание файлового информационного ресурса
Постановка задачи.
Пусть в составе организации ООО «ИнфоКриптоСервис» имеется Отдел разработки информационных систем в составе: начальника отдела Иванова Сергея Леонидовича (SL.Ivanov@domain.ics), специалиста Маркина Льва Борисовича (LB.Markin@domain.ics), и для них нужно организовать файловый информационный ресурс для хранения данных подразделения. Обоим работникам требуется доступ на чтение и запись к данному ресурсу.

Решение.
В каталоге «D:\SHARE\» сервера «FILESRV» создадим папку «D:\SHARE\Отдел разработки информационных систем\», которая будет корневым каталогом для файлового информационного ресурса. Также создадим группы доступа пользователей (глобальные группы безопасности домена «ICS») для данного ресурса:

  • «FILE-FILESRV-SHARE-Отд. разр. ИС-RO»
  • «FILE-FILESRV-SHARE-Отд. разр. ИС-RW»

Настроим права доступа для каталога «D:\SHARE\Отдел разработки информационных систем\»:

Дамп NTFS разрешений, полученных командой cacls:
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RO:(OI)(CI)R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RW:(OI)(CI)C
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F

Каталог D:\SHARE\ является точкой входа и промежуточным каталогом для данного ресурса. Добавим в него права на проход (Traverse) для групп: «FILE-FILESRV-SHARE-Отд. разр. ИС-RO» и «FILE-FILESRV-SHARE-Отд. разр. ИС-RW»

Дамп NTFS разрешений, полученных командой cacls:
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RW:R
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F

Поскольку пользователям требуется доступ на чтение и запись, добавим их учетные запаси в группу «FILE-FILESRV-SHARE-Отд. разр. ИС-RW»

Предоставление доступа пользователю к файловому информационному ресурсу
Постановка задачи.
Предположим, в отдел разработки приняли еще одного работника – специалиста Егорова Михаила Владимировича (MB.Egorov@domain.ics), и ему, как и остальным работникам отдела, требуется доступ на чтение и запись к файловому информационному ресурсу отдела.

Решение.
Учетную запись работника необходимо добавить в группу «FILE-FILESRV-SHARE-Отд. разр. ИС-RW»

Создание вложенного информационного ресурса. Расширение доступа
Постановка задачи.
Предположим, Отдел разработки информационных систем решил улучшить качество взаимодействия с Отделом маркетинга и предоставить руководителю последнего — Кругликовой Наталье Евгеньевне (NE.Kruglikova@domain.ics) — доступ на чтение к актуальной документации на продукты, хранящейся в папке «Документация» файлового информационного ресурса Отдела разработки информационных систем.

Решение.
Для решения данной задачи необходимо сделать вложенный ресурс «\\FILESRV\share\Отдел разработки информационных систем\Документация», доступ к которому на чтение и запись должен быть (остаться) у всех пользователей, имевших доступ к «\\FILESRV\share\Отдел разработки информационных систем\ и добавиться доступ на чтение для пользователя Кругликовой Натальи Евгеньевне (NE.Kruglikova@domain.ics)

В каталоге «D:\SHARE\Отдел разработки информационных систем\» создадим папку «D:\SHARE\Отдел разработки информационных систем\Документация», которая будет корневым каталогом для нового ресурса. Также создадим две группы доступа пользователей:

  • «FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RO»
  • «FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW»

Настроим права доступа на папку «D:\SHARE\Отдел разработки информационных систем\Документация» следующим образом:

Дамп NTFS разрешений, полученных командой cacls:
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RO:(OI)(CI)R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW:(OI)(CI)C

Поскольку всем пользователям, имеющим доступ в «\\FILESRV\share\Отдел разработки информационных систем\», необходим аналогичный доступ в \\FILESRV\share\Отдел разработки информационных систем\Документация», то добавим группу «FILE-FILESRV-SHARE-Отд. разр. ИС-RO» в «FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RO» и «FILE-FILESRV-SHARE-Отд. разр. ИС-RW» в «FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW» соответственно. Добавим учетную запись Кругликовой Натальи Евгеньевны (NE.Kruglikova@domain.ics) в группу «FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW»

Теперь, если Кругликова Наталья Евгеньевна (NE.Kruglikova@domain.ics) обратится по ссылке «\\FILESRV\share\Отдел разработки информационных систем\Документация», то она сможет попасть в интересующую ее папку, но обращаться по полному пути не всегда удобно, поэтому настроим сквозной проход к данной паке от точки входа «\\FILESRV\share\» («D:\SHARE\»). Для этого настроим права доступа на промежуточные каталоги «D:\SHARE\» и «D:\SHARE\Отдел разработки информационных систем\».

Проведем настройку «D:\SHARE\»:

Дамп NTFS разрешений, полученных командой cacls:
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RW:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW:R
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F

и «D:\SHARE\Отдел разработки информационных систем»:

Дамп NTFS разрешений, полученных командой cacls:
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RO:(OI)(CI)R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RW:(OI)(CI)C
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F

Создание вложенного информационного ресурса. Сужение доступа
Постановка задачи
В целях организации резервного копирования наработок Отдела разработки информационных систем начальнику отдела Иванову Сергею Леонидовичу (SL.Ivanov@domain.ics), в рамках файлового информационного ресурса отдела, понадобилась сетевая папка «Архив», доступ к которой был бы только у него.

Решение.
Для решения данной задачи в файловом информационном ресурсе отдела требуется сделать вложенный ресурс «Архив» («\\FILESRV\share\Отдел разработки информационных систем\Архив»), доступ к которому предоставить только начальнику отдела.

В каталоге «D:\SHARE\Отдел разработки информационных систем\» создадим папку «D:\SHARE\Отдел разработки информационных систем\Архив», которая будет корневым каталогом для нового ресурса. Также создадим две группы доступа пользователей:

  • «FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RO»
  • «FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RW»

Проведем настройки прав доступа на каталоги «D:\SHARE\Отдел разработки информационных систем\Архив»:

Дамп NTFS разрешений, полученных командой cacls:
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RO:(OI)(CI)R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RW:(OI)(CI)C

«D:\SHARE\Отдел разработки информационных систем»

Дамп NTFS разрешений, полученных командой cacls:
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RW:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RO:(OI)(CI)R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RW:(OI)(CI)C
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F

и «D:\SHARE\»:

Дамп NTFS разрешений, полученных командой cacls:
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-RW:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Документация-RW:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RO:R
ICS\FILE-FILESRV-SHARE-Отд. разр. ИС-Архив-RW:R
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Administrators:(OI)(CI)F

0x00 введение

В операционной системе, когда мы говорим о безопасности, это означает, что некоторые ресурсы должны быть защищены. В операционной системе Windows большинство этих защищенных ресурсов существует в форме объектов. Объекты — это своего рода ресурсы. Аннотация. Каждый объект может иметь свой собственный дескриптор безопасности (Security Descriptor), который используется для описания того, кто и как к нему можно получить доступ. Эти объекты являются объектами, так что является предметом доступа к этим объектам? Этими субъектами являются различные процессы в операционной системе или, точнее, каждый поток в этих процессах. У каждого процесса есть первичный токен (Primary Token), который может совместно использоваться каждым потоком в процессе, а некоторые потоки являются специальными, они олицетворяют (олицетворяют) личность клиента, поэтому у них есть токен олицетворения ( Токен олицетворения) .Для этих потоков эффективный токен является токеном олицетворения, а эффективный токен других потоков — это базовый токен процесса, которому он принадлежит. Когда субъект пытается получить доступ к объекту, операционная система выполняет проверку прав доступа (Access Check), в частности, она сравнивает действительный токен субъекта с дескриптором безопасности объекта, чтобы определить, является ли доступ законным. Чтобы повысить эффективность, проверка доступа предоставляет механизм кэширования, то есть только тогда, когда объект создается или открывается процессом, будет выполняться проверка прав доступа, и результат проверки прав доступа будет кэширован в дескриптор процесса. В таблице дескрипторов для последующих операций над объектом, выполняемых процессом, необходимо только запрашивать содержимое таблицы дескрипторов для определения законности доступа, вместо того, чтобы каждый раз выполнять более дорогостоящую проверку доступа. Поскольку объекты и процессы имеют свои собственные уровни наследования, дескриптор безопасности объекта и токен процесса являются логически наследуемыми. Например, файл в файловой системе может наследовать дескриптор безопасности каталога, в котором он расположен, а дочерний процесс может Унаследовать токен родительского процесса. Этот механизм наследования позволяет объектам и процессам иметь атрибуты безопасности по умолчанию. Поэтому количество экземпляров дескрипторов безопасности и токенов в системе очень ограничено, в большинстве случаев от родительского Мы унаследовали значение по умолчанию.

0x01 Проверка прав доступа

Проверки прав доступа включают проверки по нескольким параметрам:

Проверка DACL

Проверка DACL (список управления дискреционным доступом, Discretionary Access Control List) является самой простой проверкой прав доступа.

В дескрипторе безопасности есть таблица DACL (см. Диаграмму дескриптора безопасности), которая описывает, какие права доступа применяются субъектом с каким типом личности будет разрешено или запрещено. Каждая запись в таблице DACL имеет следующую структуру:

Среди них для DACL AceType может иметь

Есть две возможности; Маска — это растровое изображение, представляющее набор связанных разрешений; личность субъекта представлена ​​Sid (Идентификатор безопасности), который представляет собой структуру данных переменной длины:

Sid — это базовый тип в системе безопасности Windows, который можно использовать для однозначной идентификации многих различных типов сущностей, таких как идентификация пользователей и групп, определение уровней целостности, уровней надежности и возможностей в AppContainer.

Процесс проверки DACL выглядит следующим образом. Если дескриптор безопасности объекта пуст, это означает, что объект не защищен никаким образом, то есть к нему может получить доступ субъект, представленный любым токеном; если объект имеет непустой дескриптор безопасности, но описание безопасности Член Dacl в символе пуст, что означает, что объект явно не предоставляет никаких прав доступа какому-либо субъекту, то есть к нему не разрешен доступ; если член Dacl не пустой, он будет сравниваться с идентификатором Sid текущего субъекта один за другим в порядке в таблице , Пока все разрешения, запрошенные субъектом, не будут явно разрешены или определенное запрошенное разрешение не будет явно отклонено, проверка заканчивается; если до тех пор, пока не завершится проверка таблицы Dacl, разрешения, запрошенные субъектом, все еще не все явно разрешены, то все равно Представитель отказался.

Согласно приведенным выше правилам порядок каждой записи в DACL имеет решающее значение для результата проверки прав доступа. Например, в конце таблицы есть запись, которая явно отклонена субъектом. Если предыдущая запись уже отображается Тип позволяет этому субъекту подать заявку на разрешение, тогда эта явно запрещенная запись не будет иметь никакого эффекта. По этой причине, если записи DACL добавляются через меню параметров безопасности Windows, вызываемое правой кнопкой мыши, явно запрещенные записи всегда помещаются перед явно разрешенными записями, чтобы гарантировать их действительность. На добавление напрямую через API это ограничение не распространяется.

Проверка привилегий и суперпривилегий

Так называемые привилегии относятся к тем правам доступа, которые не относятся к конкретному объекту и влияют на всю систему. Такие привилегии — это супер-привилегии. Получив одну из супер-привилегий, вы можете получить все другие привилегии и разрешения, такие как SeDebugPrivilege. В общем, получив привилегию, вы можете читать и записывать цель по своему желанию. Память процесса не ограничивается разрешениями и привилегиями, полученными при открытии процесса для получения дескриптора.

Проверка уровня целостности и обязательной политики

Механизм уровня целостности (IL) — важный механизм безопасности, представленный в Windows Vista. Механизм песочницы, основанный на нем, очень прост и чрезвычайно эффективен.

Ограниченная проверка токена

Создавая ограниченные токены, можно получить подмножество набора разрешений, принадлежащих общему токену, которое можно использовать для выполнения некоторых операций с низким уровнем привилегий и снижения рисков безопасности.

Проверка возможностей AppContainer

Маркер LowBox и групповое удостоверение AppContainer Capabilities являются механизмами безопасности, появившимися после Windows 8. Он обеспечивает еще один более сложный механизм песочницы. Возможности очень похожи на ограничения разрешений приложений в системе Android.

Проверка уровня доверия

Проверка уровня целостности — это крупномасштабное и относительно стабильное средство контроля доступа; с непрерывным развитием Windows зависимость от механизма подписи становится все более очевидной, а подпись представляет определенную степень надежности. Автор считает, что Windows постепенно устанавливает полный набор механизмов проверки прав доступа на основе надежности, и защищенный процесс (Protected Process) является частью этого механизма.

В приведенном выше материале кратко представлена ​​модель проверки разрешений Windows и размеры проверки разрешений; ниже представлены некоторые детали реализации.

0x02 токен

Структура ТОКЕНА

Структура токена — это основная структура данных, которая представляет личность субъекта при проверке прав доступа.Ниже показан состав для платформы Windows 10 x64.

Мы уделяем больше внимания битовой карте привилегий и трем массивам Sid, представляющим личность субъекта: UserAndGroups, RestrictedSids и Capabilities.

Растровое изображение привилегий

В пользовательском режиме привилегии представлены LUID, а в структуре ядра _TOKEN используются три растровых изображения для представления:

Они представляют собой набор привилегий (Present), открытый набор привилегий (Enabled) и набор привилегий по умолчанию (EnabledByDefault), которые может использовать текущий субъект, соответственно. Последние два набора должны быть подмножеством набора Present.

В отличие от массива Sid, который представляет личность субъекта, набор привилегий представлен просто и без какой-либо защиты. В пользовательском режиме вы можете только открыть или закрыть существующую привилегию через API, но не можете добавить дополнительные привилегии. Другими словами, пользовательский режим может изменять только набор привилегий Enabled, но не набор привилегий Present; из режима ядра вы можете Непосредственно измените набор привилегий Present, например добавив привилегии SeAssignPrimaryTokenPrivilege к обычным процессам, чтобы явно указать маркеры для дочернего процесса вместо наследования маркера текущего процесса, что может обеспечить эффект расширения разрешений дочернего процесса.

Массив Sid, представляющий личность субъекта

Три массива Sid, представляющих личность объекта:

UserAndGroups:

Идентификатор обычного пользователя и групповой идентификатор, представляющий субъект, являются незаменимыми членами;

RestrictedSids:

Необязательный член. Если он не пустой, это означает, что текущий токен является ограниченным токеном. Ограниченный токен преобразуется путем фильтрации некоторых более конфиденциальных идентификаторов из обычных токенов. UserAndGroups в ограниченном токене Члены такие же, как обычные токены, но член ResidriectedSids не является пустым, а отфильтрованное подмножество идентификаторов хранится внутри; поскольку три массива идентификаторов Sid должны проверяться одновременно во время проверки прав доступа, доступ разрешается только после передачи результатов. Таким образом, путем добавления членов RestrictedSids, представляющих ограниченный набор разрешений, достигается цель ограничения разрешений токена, и полная идентификационная информация исходного токена сохраняется в членах UserAndGroups.

Capabilities:

Необязательный член, используемый только для AppContainer, где Sid представляет идентификатор, связанный с приложением, например идентификатор, у которого есть разрешение на подключение к сети и доступ к текущему расположению.

Три массива Sid связаны с хэш-информацией для защиты их целостности. Поэтому, даже если они изменяются непосредственно из состояния ядра, они не будут работать, поскольку не смогут пройти проверку целостности. К счастью, алгоритм хеширования очень прост. Ниже показан демонстрационный код алгоритма на C ++ для платформы Windows 10 x64:

У этого алгоритма есть два очевидных ограничения: он вычисляет только младший значащий байт последнего Sub Authority каждого Sid, и только первые 64 Sid участвуют в вычислении.

UAC и связанный токен

UAC — относительно важный механизм безопасности, представленный версией Vista. Многие пользователи жалуются на неудобства, которые он доставляет. Однако, как и sudo в операционной системе Linux, UAC является важным барьером для защиты безопасности системы. Когда пользователь входит в Windows, операционная система сгенерирует пару начальных токенов для пользователя, которые представляют собой токен полной версии, представляющий все разрешения, которые есть у пользователя (т. Е. Токен разрешения администратора), и один после ограниченных разрешений администратора. Обычный токен, оба являются взаимно связанными токенами; после этого токены, используемые процессом, представляющим пользователя, наследуются от обычного токена для выполнения обычных, нечувствительных операций; когда пользователю нужно выполнить некоторые потребности При работе с полномочиями администратора, например при установке программного обеспечения и изменении важных системных настроек, всплывающее диалоговое окно будет всплывать, чтобы напомнить пользователям о рисках, с которыми они сталкиваются, и попросить их согласия. Как только пользователь согласится, он переключится на текущий общий токен. Связанный маркер разрешения администратора для выполнения конфиденциальных операций. Благодаря такому способу взаимодействия с пользователями некоторые вредоносные программы не могут выполнять конфиденциальные операции в фоновом режиме.

Маркер ассоциации реализуется через сеанс входа в систему. На следующем рисунке показан общий принцип:

Не все токены имеют связанные токены, например токены, работающие с более высокими полномочиями и не требующие повышения привилегий.

0x03 объект

Структура объекта

Объект представляет собой абстракцию ресурсов, которые необходимо защищать и централизованно управлять в операционной системе.Объект имеет унифицированный заголовок и содержит обобщенную информацию.

Заголовок объекта содержит указатель на дескриптор безопасности.

Дескриптор безопасности

Дескриптор безопасности содержит основную информацию об объекте, который является объектом проверки прав доступа. Он содержит 4 ключевых элемента. В зависимости от того, встроены ли эти 4 элемента в конец структуры или на них имеется ссылка из местоположения внешнего кэша, его можно разделить на две различные структурные формы:

Владелец и Группа представляют Sid владельца дескриптора безопасности. Sacl — это аббревиатура от System Access Control List (Список контроля доступа к системе), который может включать аудит (Audit), уровень целостности (Integrity Level) и надежность текущего объекта. Такая информация, как уровень доверия, имеет ту же структуру, что и вышеупомянутый Dacl.

Дополнительная голова

В дополнение к общему фиксированному заголовку, объекты также могут иметь дополнительные заголовки, в которых хранится дополнительная информация, например имена. Положение необязательной головки можно узнать, просмотрев таблицу члена InfoMask фиксированной головки, как показано на рисунке:

Каталог объектов

Только некоторые объекты имеют информацию об имени, и они называются именованными объектами. Основная функция именованных объектов состоит в том, чтобы облегчить совместное использование объектов в различных процессах. Они скомпилированы в каталоги объектов по категориям, поэтому объекты можно найти по информации о пути в каталоге объектов. Реализация каталога объектов показана на рисунке ниже:

Тип объекта

Тип объекта — очень важная информация в объекте. Windows абстрагирует информацию о типе объекта от того же типа объекта и сохраняет ее как объект отдельного типа. Все типы объектов в системе централизованно размещаются в таблице.Объект поддерживает индекс (TypeIndex), указывающий на таблицу, чтобы указать тип текущего объекта. Это значение индекса непосредственно хранится в заголовке объекта, а тело объекта непосредственно примыкает к заголовку объекта. Если тело объекта повреждено, это может привести к изменению значения индекса заголовка, что приводит к так называемой путанице типов (Type Confusion). может. Чтобы решить эту проблему, в Windows 10 предусмотрена специальная защита для значения индекса, как показано на следующем рисунке:

Этот метод защиты прост и эффективен. Новое значение индекса получается операцией исключающего ИЛИ трех частей: реального значения индекса объекта типа в таблице объектов типа и второго байта адреса заголовка объекта (то есть с 8-го по 15-й Bit), байты cookie, которые хранятся в глобальной переменной ObHeaderCookie и меняются при каждом запуске системы. Среди них введение ObHeaderCookie делает значения индекса одного и того же типа объектов на разных машинах или даже между двумя запусками на одной машине разными. Однако этого недостаточно, чтобы избежать путаницы и использования типов. Мы также можем использовать утечку информации (Info Leak ) Чтобы обойти защиту, поэтому также вводится адрес заголовка объекта, так что в одно и то же время и в одной системе значения индекса между двумя разными экземплярами одного и того же типа объекта не совпадают, тем самым эффективно устраняя путаницу типов. использовать.

0x04 проверка уровня целостности

Проверка уровня целостности (IL) — это самый простой способ реализации «песочницы». Благодаря отношениям наследования между уровнем целостности между объектом и уровнем процесса, это похоже на создание «наследственной системы» в операционной системе. Строго контролируя правила наследования уровня целостности и устанавливая строгую систему проверки уровня целостности, можно гарантировать, что субъекты с «низким уровнем фона» не смогут получить доступ к ресурсам объекта с «высоким уровнем фона».

Есть несколько уровней целостности:

Уровень целостности объекта по умолчанию — SeUntrustedMandatorySid, а уровень целостности объекта по умолчанию — SeMediumMandatorySid. Это различие еще больше усиливает эту «наследственную систему».

0x05 процесс защиты

Защищенный процесс (Protected Process) — это механизм безопасности, установленный операционной системой Windows для защиты определенных ключевых процессов от отладки, внедрения или даже чтения информации из памяти обычными процессами.

Разница между процессом защиты и другими обычными процессами состоит в том, что член Protection процесса защиты не равен 0.

Элемент Type процесса защиты может представлять два типа защиты: Protected Process (PP) и Protected Process Lite (PPL) .Разница между ними заключается в том, что процесс защиты PP имеет более высокие разрешения. Подписывающий член процесса защиты представляет категорию подписавшего процесса. Для процессов защиты, подписывающей стороной которых являются PsProtectedSignerWindows (5) и PsProtectedSignerTcb (6), информация о типе и подписывающей стороне будет извлечена и собрана в Sid, который представляет уровень надежности процесса и сохраняется в члене TrustLevelSid базового токена. . Когда в токене используется TrustLevelSid, ​​необходимо убедиться, что он синхронизирован с информацией о защите текущего процесса. В основном это связано с членом TrustLevelSid, ​​возникающим при передаче токена между различными процессами (например, дочерний процесс наследует токен родительского процесса) Устаревшая ситуация.

При отладке или создании процесса для проверки разрешений будет вызвана функция ядра PspCheckForInvalidAccessByProtection. Эта функция определяет, должна ли текущая операция соответствовать ограничениям разрешений, заданным процессом защиты, в соответствии с защитой текущего процесса и целевого процесса. Конкретные правила определения следующие:

  • Если операция происходит из кода режима ядра, нет необходимости соблюдать ограничения;
  • Если элемент защиты целевого процесса пуст, это означает, что целевой процесс не является процессом защиты и не должен соответствовать ограничениям;
  • Если текущий процесс является процессом с защитой типа PP, этот тип защищенного процесса имеет наивысшие права доступа и не требует соблюдения ограничений;
  • Если текущий процесс и целевой процесс являются процессами, защищенными PPL, необходимо определить, имеет ли подписывающий текущего процесса приоритет (доминировать) над подписывающим лицом целевого процесса в соответствии с таблицей RtlProtectedAccess. Если это так, нет необходимости соблюдать ограничения;
  • В остальных случаях необходимо соблюдать ограничения.

Таблица RtlProtectedAccess выглядит следующим образом:

Среди них ограничения процессов и ограничения потоков представляют собой ограничения разрешений для процессов и потоков, соответственно, как подробно показано на следующем рисунке:

Мы можем использовать демонстрационный код NtDebugActiveProcess и NtCreateUserProcess, чтобы понять логику защиты процесса и его ограничения:

0x06 Заключение

Механизм проверки разрешений и система безопасности в операционной системе Windows постоянно развиваются. Очень интересно и полезно изучить детали его реализации и поразмышлять над концепциями дизайна, лежащими в основе этого. Эта статья представляет собой лишь краткое изложение исследований автора. Упущения и даже ошибки неизбежны. Для получения более подробной информации обратитесь к следующим материалам или непосредственно проанализируйте и отладьте ядро ​​Windows, чтобы понять новейшую и наиболее достоверную версию Windows.

Как узнать есть ли права администратора в Windows

Как узнать есть ли права администратора в Windows

Для установки большинства программ и для использования некоторых из них, а также для возможности менять ряд системных настроек необходимы права администратора. Если в Windows несколько учетных записей пользователей и вы не знаете, имеются ли права администратора у вашей, вы можете легко это определить.

В этой простой инструкции для начинающих способы посмотреть, есть ли у вас права администратора. Всё описанное полностью подойдет для Windows 11 и Windows 10, а отдельные способы — и для предыдущих версий системы. На близкую тему: Как сделать пользователя администратором в Windows.

Просмотр наличия прав администратора в параметрах Windows 11 и Windows 10

В Windows 11 и Windows 10 вы можете использовать «Параметры», чтобы увидеть, имеет ли ваша учетная запись права администратора.

Шаги будут следующими:

  1. Откройте «Параметры».
  2. Перейдите в «Учетные записи».
  3. В результате вы сразу сможете увидеть, имеете ли права администратора. В Windows 11 это будет выглядеть следующим образом: Проверка прав администратора в параметрах Windows 11
  4. Информация о наличии прав администратора в Windows 10 отображается как на картинке ниже: Права администратора в параметрах Windows 10

Это не единственный метод, при желании или в случае, если на вашем компьютере установлена более старая версия Windows, можно использовать один далее описанных вариантов.

Как узнать, если ли права администратора в командной строке

В командной строке Windows предусмотрены команды для управления учетными записями, позволяющие определить и наличие прав администратора:

Проверка наличия прав администратора в командной строке

  1. Запустите командную строку, в Windows 11 и Windows 10 для этого можно использовать поиск на панели задач.
  2. Введите командуи нажмите Enter.
  3. Отобразится список свойств пользователя, обратите внимание на пункт «Членство в локальных группах». Если там указано «Администраторы», значит пользователь имеет права администратора.

В панели управления

Если зайти в Панель управления и открыть пункт «Учетные записи пользователей», откроется следующее окно:

Проверка прав администратора в панели управления

В нем можно увидеть тип текущей учетной записи: в моем случае это локальная учетная запись администратора.

Локальные пользователи и группы

Ещё один метод — использование оснастки «Локальные пользователи и группы»:

  1. Нажмите клавиши Win+R на клавиатуре, введите lusrmgr.msc и нажмите Enter.
  2. В открывшемся окне выберите раздел «Пользователи», а затем дважды нажмите по имени интересующего вас пользователя. Пользователи в управлении локальными пользователями и группами
  3. Перейдите на вкладку «Членство в группах». Если там присутствует пункт «Администраторы», это пользователь обладает правами администратора в системе. Членство пользователя в группах

Вторая возможность: раскрыть раздел «Группы» в этом же окне, дважды нажать по «Администраторы» и посмотреть список пользователей, все они имеют права администратора.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *