AppContainer
Процессы AppContainers
Мобильные приложения обычно распространяются из магазина приложений. Например, для системы Android есть магазин Play Маркет. Обычно после того, как пользователь выбирает и устанавливает какое-нибудь приложение, то ему показывают разрешения которые требуются этому приложению. Примерно тоже самое сделали в Windows, так появились UWP-приложения из магазина «Microsoft Store».

Это не обычные приложения, процессы которые они запускают отличаются от обычных процессов. И называются такие процессы AppContainers. А отличаются они от обычных процессов следующим:
- уровень целостности их равен Low, что ограничивает доступ ко многим объектам;
- процесс всегда создается внутри задания (Job). Одно задание на каждое UWP-приложение. Задания позволяют быстро приостанавливать и возобновлять работу приложения;
- маркер доступа содержит особый SID AppContainer, представляющий собой хеш имени пакета UWP. В строковом формате он начинается с S-1-15-2;
- маркер доступа содержит набор возможностей (Capability), с которыми вы согласились при установки приложения из магазина:

AppContainer в Process Explorer
Увидеть такие процессы можно с помощью Process Explorer . Для лучшего поиска можно отобразить столбец с информацией Integrity:

Примеры таких приложений, установленных по умолчанию:
- Calculator;
- Cortana;
- Edge.
Если посмотреть маркер доступа одного из таких процессов (на вкладке Security), то можно заметить SID контейнера:

Также выше на рисунке можно заметить флаги Capability — возможности этого приложения. Одна из возможностей содержит такой-же sid контейнера, это возможность быть контейнером, она есть у всех приложений UWP.
Алгоритм проверки прав доступа для контейнеров изменен. Для доступа к объектам проверяется не SID владельца, а SID контейнера и возможности контейнера. При этом SID владельца может проверятся только для запрещенных правил в DACL объекта. То-есть, если «Калькулятор» будет запущен пользователем, то он не будет иметь все права этого пользователя. Для того чтобы «Калькулятор» получил доступ к объекту, объект должен явно разрешить доступ к себе для SID контейнера или для его возможностей (Capability).
Среда безопасности AppContainer
Как вообще может функционировать приложение, не имеющее доступа даже к базовой файловой системе, реестру и ресурсам диспетчера объектов? Для таких ситуаций Windows создает отдельную среду исполнения (jail), для каждого контейнера. Пакеты UWP могут содержать несколько исполняемых файлов, которые все относятся к одному контейнеру и работают в одном контейнере. Это позволяет им совместно использовать один SID и обмениваться данными друг с другом.
Диспетчер объектов используя SID контейнера создает подкаталог, который становится приватным для контейнера. То есть приложение думает что на компьютере есть только этот каталог и работает в нем. В этом каталоге будут различные подкаталоги необходимые для приложения. А также в этом каталоге будет находиться файл реестра settings.dat, который выполняет функции локального реестра приложения. Этот подкаталог и создает jail.
Некоторые важные объекты в системе разрешают доступ к себе контейнерам на чтение или на чтение и выполнение, например:
%SystemRoot%\System32;HKLM\Software\Microsoft\Windows\CurrentVersion;- некоторые com-объекты.
В Windows 10 версии 1607 появились ограниченные контейнеры. Они имеют меньше доступа к другим частям системы, но и функционал у них меньше.
Если понравилась статья, подпишись на мой канал в VK или Telegram .