Источник: https://github.com/AnaktaCTF/CTF/blob/main — Misc/Организация управляемого доступа в ОС Windows.md

Права и привилегии

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

Для управления такими действиями, не связанными с доступом к конкретным объектам, система использует два механизма:

[!tip] Право учетной записи (account right)
Разрешение или запрет на определенный вид входа в систему. Их бывает несколько: локальный, сетевой, пакетный, вход в качестве службы и другие

[!tip] Привилегия (privilege)
Разрешение или запрет определенных действий в системе, например, включение/выключение компьютера или загрузка драйверов

Список всех привилегий в системе можно посмотреть в оснастке MMC "Локальная политика безопасности" (Local Security Policy), раздел "Локальные политики" – "Назначение прав пользователей" (Local Policies – User Rights Assignment).

В UNIX управление привилегиями выглядит несколько иначе. В файловой системе существует разделение привилегий на RWX – read (чтение), write (запись), execute (исполнение). Сам доступ также разделяется на три блока:

  • владелец;
  • пользователи из группы владельца;
  • остальные.

Pasted image 20240108151050

Организация управляемого доступа к объектам Windows

В Windows учётная запись задаётся в виде SID. В целях удобства, каждому SID соответствует псевдоним (alias), который мы как раз и видим как пользователи.

[!tip] [[SID]] (Security Identifier)
Структура данных переменной длины, которая идентифицирует учётную запись пользователя.

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

С другой стороны, все объекты в системе имеют структуру данных, которая называется дескриптор защиты (security descriptor). В эту структуру входит список SID пользователей, которые могут (или не могут) получить доступ к объекту, а также вид доступа (например, только чтение, чтение и запись или полный доступ и т.д.). Структура данных, соответствующая дескриптору защиты, включает следующие основные поля:

  • Owner – SID владельца;
  • Dacl – список управления избирательным доступом (Разрешения);
  • Sacl – системный список управления доступом.

Список управления избирательным доступом (DACL, Discretionary Access-Control List) определяет пользователей, которые могут получать доступ к объекту, а также указывает тип доступа. В системном списке управления доступом (SACL, System Access-control List) перечислены пользователи и операции, которые должны учитываться в журнале аудита безопасности (security audit log).

При попытке доступа процесса к объекту идентификатор из маркера доступа процесса сравнивается с идентификаторами, содержащимися в дескрипторе защиты объекта, и на основании результатов сравнения доступ разрешается или запрещается.

Pasted image 20240109130724
Схема доступа к объекту Windows