Хотите изучить управление доступом Windows за два часа? И знать эту тему как никакой другой ваш учитель? Хотите знать, как использовать функцию Windows API с самым длинным именем — AccessCheckByTypeResultListAndAuditAlarmByHandle? Как насчет просмотра кода, создающего недокументированные структуры Windows? Тогда это место для вас! В статье представлено описание библиотеки и набор тестов, которые позволят любому пользователю изучить подсистему контроля доступа Windows в максимально полном объеме при достаточно небольших начальных знаниях.
Рассмотрены вопросы работы с DACL, SACL, Conditional ACE, обязательной проверкой целостности и многие другие.
Тесты позволяют пользователю произвольно изменять входные данные и самостоятельно модифицировать их для более детального изучения нужных конкретному пользователю тем.
Представленная библиотека позволит вам разобрать и создать все внутренние структуры подсистемы безопасности Windows, а также позволяет создавать «токены доступа» с произвольными исходными данными.
Давным-давно я начал изучать подсистему безопасности Windows. Я читаю отличные книги, но каждая книга должна быть подкреплена, прежде всего, практикой.
Так я начал свои практические эксперименты.
Прежде всего, я начал со стандартной методики: создания своеобразной файловой структуры с несколькими вложенными уровнями (каталогами).
На начальных этапах изучения такой «экспериментальной площадки» было вполне достаточно.
Однако, когда я перешел к изучению DAC (Dynamic Access Control), тестовая площадка значительно усложнилась: мне уже пришлось развернуть несколько виртуальных машин, на одной из которых стоял Windows Server, а на другой — обычная клиентская ОС.
Это уже требовало изучения процесса настройки многих подсистем Windows Server, что несколько отвлекало от исходной задачи: изучения подсистемы безопасности.
В итоге я написал довольно развитую библиотеку, которая позволяла мне получать в удобном для меня виде все значения различных структур, относящихся к подсистеме безопасности Windows, а для большинства из них еще и создавать их из ранее сохраненных значений.
Но однажды мне в голову пришла идея, которая радикально изменила (и значительно упростила) весь мой подход к изучению этой темы.
Как я уже говорил, у меня была развитая библиотека, которая позволяла сохранять на диск значения структур, относящихся к подсистеме безопасности, а также создавать их заново из ранее сохраненных данных.
Я уже реализовал все, что было официально задокументировано Microsoft. Я понял, что по сути вся подсистема безопасности Windows — это всего лишь два понятия: «токен» (токен доступа) и «дескриптор безопасности» (дескриптор безопасности он же SD).
Если представить аналогию с обычной дверью, то токен — это ключ, а дескриптор безопасности — замок.
Все остальные концепции/сущности, существующие в подсистеме безопасности Windows, являются вторичными и основаны только на использовании токенов и дескрипторов безопасности.
А для изучения подсистемы безопасности нужно всего три этапа: 1) умение создать свой токен из ранее сохраненных значений; 2) возможность создания дескриптора безопасности из ранее сохраненных значений; 3) вызвать правильную системную функцию, чтобы проверить доступ полученного токена к полученному дескриптору.
Нет необходимости создавать сложную файловую структуру, нет необходимости в каком-либо сервере — все создается прямо на локальной машине с помощью всего одной программы.
Конечно, для корректного выполнения такой программы необходимо соблюдение ряда условий, но реализовать их чрезвычайно легко.
Программу необходимо запускать от имени администратора.
То есть достаточно войти в систему как обычный пользователь, но сам программный код необходимо запустить с помощью «Запуск от имени Администратора».
В своих тестах я использовал Visual Studio. Для пользователя, под которым выполняются тесты, также необходимо настроить определенные привилегии: SeCreateTokenPrivilege (создать объект-токен), SeTcbPrivilege (действовать как часть операционной системы), SeImpersonatePrivilege (олицетворять клиента после аутентификации).
Сам проект представляет собой стандартный тестовый проект для C++.
То есть у него нет «выходного файла», и все, что он выдает, — это результаты тестов.
Описания всех тестов представлены в этот файл .
Но сам проект здесь .
Все в исходном коде, без внешних зависимостей, с лицензией «делай что хочешь, только оставь авторские права».
Кстати, если у кого-то есть хорошие тесты, связанные с темой контроля доступа Windows, то предложите их и я их все учту и, возможно, реализую в этом проекте.
В конце несколько ответов на вопросы, которые я задал в начале статьи: 1. Теги: #информационная безопасность #Windows #C++ #безопасность #токен доступа #Контроль доступа
-
Экономика Облачных Вычислений
19 Oct, 24 -
Какова Роль Бизнес-Архитектора В Компании?
19 Oct, 24 -
Iphone Черный = Iphone 3G?
19 Oct, 24 -
Log4Php Или Что-То Еще?
19 Oct, 24