Найти:

- Взлом
- Приватность
- Трюки
- Кодинг
- Админ
- Geek
- Обучение
- Магазин

- Windows
- Linux
- Android
- Железо
- Мессенджеры
- Утечки
- Коронавирус
- Все выпуски «Хакера»

### Содержание статьи

- Дисклеймер
- Где взять?
- Песочницы
- Прозрачное проксирование через Tor
- Брандмауэр
- PaX/Grsecurity
- Нереализованные функции
- Выводы

Как создать защищенную ОС с нуля? Взять memory safe язык программирования, написать на нем высокоуровневые части ядра, поверх него положить концепцию замкнутых песочниц и единый канал связи между песочницами и ОС, а все сетевое взаимодействие наладить через некую разновидность VPN. Как сделать защищенной уже существующую ОС? Попробовать прилепить все это к ней и постараться ничего не сломать по пути.

## Дисклеймер

Честно говоря, изначально Subgraph OS не произвела на меня никакого впечатления. Очередной проект, ставящий своей целью разместить пользовательский софт в песочницах и таким образом достигнуть каких-то непонятных уровней защищенности ОС. Нет, ребята, в Qubes OS все это уже реализовано, причем на самом низком уровне, на уровне гипервизора Xen, да еще и с изоляцией сетевого стека и слоя работы с накопителями. Однако, следя за развитием проекта, я начал замечать движение в правильную сторону. Песочницы оказались далеко не так просты, как представлялось, а система обрела множество других правильных черт, в том числе ядро с включенными патчами PaX/Grsecurity и прокси-слой, который пропускает трафик приложений через Tor, анонимизируя его источник.

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

## Где взять?

Subgraph OS до сих пор находится в стадии активной разработки, поэтому для загрузки доступна только alpha-версия. Скачать ее можно с официальной страницы, размер ISO-образа 1,4 Гбайт, для установки пригоден практически любой комп с не менее чем 2 Гбайт оперативки, в том числе виртуальная машина на базе VirtualBox или VMware.

Устанавливается все это дело с помощью обычного инсталлятора Debian, а в качестве рабочего стола выступает немодифицированный GNOME 3. Конечно же, имеется набор предустановленных приложений: плеер VLC, офисный пакет LibreOffice, почтовый клиент IceDove и другие, плюс стандартные репозитории, из которых можно ставить любой софт с помощью apt-get.

Так что внешне и по уровню user experience операционка практически ничем не отличается от типичного дистрибутива Linux. Но в самой основе системы есть множество различий.

Стандартный инсталлятор Debian
Другие статьи в выпуске:

### Xakep #213. FUCK UAC

- Содержание выпуска
- Подписка на «Хакер»

## Песочницы

Ключевая идея Subgraph OS — запуск пользовательских приложений в изолированных песочницах. Для этого задействована подсистема Oz, состоящая из демона (системного сервиса), получающего запросы на создание sandbox’ов, X-сервера Xpra и набора специальных утилит.

В своей основе Oz очень сильно напоминает Firejail, о котором мы уже рассказывали в статье «Игры с песочницей». Для изоляции приложений Oz применяет пространства имен, дополнительно ограничивая доступные приложению системные вызовы с помощью механизма seccomp-bpf. Общение приложения с графической подсистемой осуществляется с помощью виртуального X-сервера Xpra, который запускается внутри каждой песочницы. X-сервер основной системы подключается к Xpra и выводит картинку приложения на экран. Это очень важный момент, так как стандартный метод запуска графических приложений в песочницах — это прокидывание сокета X-сервера /tmp/.X11-unix/X0 в саму песочницу, что открывает запущенному в песочнице приложению возможность не только выводить картинку на экран и обрабатывать события устройств ввода, но и получать доступ к любому окну любого другого приложения и перехватывать любые клавиши. Xpra решает эту проблему.

В целом запуск приложения в Subgraph OS выглядит примерно так:

1. Юзер кликает на иконку приложения или запускает его с помощью командной строки.
2. Управление получает Oz, так как настоящий исполняемый файл приложения находится в каталоге /usr/bin-oz/, а тот, что запускает юзер, — это всего лишь симлинк на /bin/oz.
3. Oz получает имя приложения, читая первый аргумент (он всегда содержит имя исполняемого файла), и через сокет отдает демону oz-daemon команду запустить приложение.
4. Демон читает профиль приложения, в котором указано, что ему разрешено/запрещено, какие файлы домашнего каталога доступны и так далее.
5. Демон создает каталог /srv/oz/rootfs/, подключает к нему каталоги /bin, /lib, /lib64, /usr и /etc основной системы, создает другие необходимые каталоги: /var, /tmp, /mnt и так далее, создает минимальный набор нужных для работы приложения файлов-устройств в /dev, подключает другие приложения файлы и каталоги, далее выполняет chroot в этот каталог и создает новые пространства имен, запирающие приложение в песочницу.
6. Демон выделяет для песочницы новый виртуальный сетевой интерфейс и подключает его к виртуальному свитчу, подсоединенному к внешнему сетевому интерфейсу машины.
7. Далее демон запускает внутри песочницы oz-init, который запускает Xpra и использует seccomp-bpf для настройки запрета/разрешения на выполнение системных вызовов.
8. Oz-init запускает приложение из каталога /usr/bin-oz/.

Все это очень похоже на то, что мы делали в статье про создание собственных песочниц, с тем исключением, что вместо создания окружения исполнения для приложения с нуля (то есть прямого копирования нужных для его работы файлов в песочницу) Oz просто «пробрасывает» все файлы основной системы в песочницу с помощью bind() (системный вызов, позволяющий подключить один каталог к другому). Плюс, конечно же, те самые seccomp-bpf и Xpra.

Запуск приложения

Если запущенное в песочнице приложение будет скомпрометировано, оно не сможет ни выбраться из песочницы, ни навредить основной системе — хоть каталоги системы и подключаются внутрь песочницы, они недоступны для записи. Информация также останется в сохранности, так как взломщик/малварь сможет добраться разве что до конфигов приложения и различных кешей. Более того, тот же просмотрщик PDF (Evince) не может открыть любой документ, вместо этого он получит доступ только к файлу, для просмотра которого был запущен (юзер кликнул на документ в проводнике).

Oz размещает апплет в трее, с помощью которого в песочницу можно закинуть нужные файлы

В общем, вполне очевидная и простая, но хорошая архитектура. Проблема только в том, что в данный момент Subgraph OS использует Oz для запуска всего восемнадцати приложений, в число которых входят защищенный мессенджер CoyIM, почтовый клиент IceDove (Mozilla Thunderbird), офисный пакет OpenOffice, IRC-клиент HexChat, VLC и Tor Browser (для сравнения: в том же Firejail есть настройки для запуска почти сотни различных приложений). Остальные работают без всяких песочниц.

Восемнадцать профилей Oz из коробки

## Прозрачное проксирование через Tor

Вторая важная особенность Subgraph OS — это проксирование всего исходящего трафика через Tor. По умолчанию Tor не поддерживает такую конфигурацию и представляет собой всего лишь SOCKS-прокси, то есть требует, чтобы приложение явно поддерживало SOCKS, а пользователь самостоятельно настроил проксирование приложения через Tor.

Разработчики Subgraph OS обошли эту проблему с помощью Metaproxy, перенаправляющего весь переданный на его порт трафик на адрес указанного SOCKS- или HTTP-прокси (в данном случае Tor), и простого правила брандмауэра, перенаправляющего весь исходящий трафик на порт Metaproxy (8675), делая исключение только для порталов аутентификации публичных сетей Wi-Fi.

Настройки брандмауэра Subgraph OS

В качестве браузера Subgraph OS использует стандартный, никак не модифицированный Tor Browser. Это единственное приложение, использующее Tor напрямую, весь остальной софт, включая Wget, отдает трафик Metaproxy. ICMP запрещены в любую сторону, так что операционка не только не отвечает на пинги, но и не позволяет пропинговать другой хост.

Tor Browser

## Брандмауэр

В Subgraph OS интегрирован собственный брандмауэр, точнее графическая надстройка над iptables с диалоговым интерфейсом: стучится приложение, куда не надо, — на экране появляется диалог с просьбой разрешить или запретить соединение.

## PaX/Grsecurity

Ядро Subgraph OS собрано с патчами PaX и Grsecurity, это значит, что оно из коробки включает в себя средства, затрудняющие выполнение атак, направленных на переполнение буфера. В первую очередь это пометка стека и области данных приложений как неисполняемых, а области кода как неперезаписываемой, а также технология ASLR (Address Space Layout Randomization), размещающая стек, область кода и данных приложений по случайным адресам в оперативной памяти.

Также Grsecurity включает в себя ряд средств, направленных на повышение безопасности ядра в целом. Это существенные ограничения для приложений, исполняемых в chroot (который используется для создания песочниц), запрет на исполнение бинарных файлов, не принадлежащих пользователю root, запрет на изменение текущего времени и даты, скрытие информации в файловой системе /proc, выводе dmesg, ограничения на использование FIFO-каналов и сокетов и другие.

Некоторые компоненты Subgraph OS напрямую завязаны на Grsecurity. Например, демон USBLockout использует функцию запрета на подключение любых устройств, чтобы не допустить подключения к компу любых USB-устройств, пока он заблокирован.

## Нереализованные функции

Зашифрованный диск. Разработчики заявляют о том, что операционка использует принудительное шифрование данных. На самом деле это не так, по крайней мере пока. Инсталлятор может поставить Subgraph OS, используя любую конфигурацию диска, в том числе на один раздел без применения шифрования. Но можно выбрать и установку на логический том LVM, зашифрованный с помощью dm-crypt. Иными словами, никаких отличий от других дистрибутивов Linux.

Subgraph Mail. Во всех документах о дизайне ОС авторы Subgraph OS заявляют об использовании написанного с нуля почтового клиента с поддержкой OpenPGP. Это тоже неправда, операционка использует стандартный почтовый клиент IceDove с плагином Enigmail, а разработка собственного клиента, судя по всему, уже давно заброшена.

Доверенная загрузка. Еще одно громкое заявление разработчиков. Subgraph OS якобы использует технологию доверенной загрузки (Chain of trust), предполагающую защиту от загрузки ОС в случае ее внешней модификации. Для этого обычно используются зашифрованный загрузочный раздел, подписанные цифровым ключом ядро и RAM-диск, контрольные суммы файловых систем. В данный момент ничего подобного в Subgraph OS нет, операционка грузится обычным загрузчиком Grub, который передает управление ядру без всяких сверок цифровых подписей.

Выбор вариантов разбивки диска

## Выводы

Subgraph OS — всего лишь альфа, но даже для альфы она выглядит очень бедно. Внимания заслуживает разве что система прозрачного проксирования трафика через Tor, но в этом нет ничего нового, та же система есть в ОС TAILS и Whonix.

Система запуска приложений в песочницах, несмотря на свою вторичность, неплоха, но в данный момент используется только для небольшого числа «избранных» приложений. Включенные в состав ядра патчи Grsecurity — правильная вещь, но опять же реализованная в десятках других систем, включая древний как мир Hardened Gentoo.

Остальные функции пока просто не реализованы, так что ничего лучше старой доброй Qubes OS у нас до сих пор нет.

#### Оцени статью:

###### Что тебе понравилось больше всего?

Статья легкая и понятная Статья глубокая и подробная Интересуюсь этой темой Данные новые и актуальные Приятный стиль изложения

###### Что тебе не понравилось больше всего?

Статья поверхностная Статья слишком сложная Тема мне не интересна Данные устарели Неприятный стиль изложения
← Ранее Компанию Valve обвиняют в содействии деятельности нелегальных игорных сайтов
Далее → В Чехии арестован российский хакер, ответственный за утечку 117 млн аккаунтов LinkedIn

- Далее по этой теме
- Ранее по этой теме

- ### Делаем шпионскую флешку с защищенной операционкой Tails

  Tor, безусловно, одно из самых нужных средств защиты личных данных. Но чтобы обезопасить с…
  01.11.2016
  4 мин на чтение

- ### Анонимная виртуалка. Устанавливаем VirtualBox в ОС Tails и пускаем трафик виртуалок через Tor

  Tails — лучшая операционка, если твоя задача — максимально анонимизировать свое присутстви…
  28.02.2017
  24 мин на чтение

- ### Песочница, из которой не выбраться: используем Cappsule для запуска малвари и софта в виртуальной среде

  Казалось бы, мы рассказали о песочницах уже всё. И про Docker написали во всех подробностя…
  21.11.2016
  5 мин на чтение

- ### Безопасный смартфон Tor на CopperheadOS: что это, как он устроен и почему это важно

  Мир знает множество попыток создать защищенный смартфон. Это и Blackphone с функцией шифро…
  26.01.2017
  7 мин на чтение

- ### Знакомимся с Endless OS: дистрибутив Linux, в котором нет понятия пакетов

  Как выглядит среднестатистический дистрибутив Linux? Обычно это некая система, как констру…
  07.06.2017
  5 мин на чтение

- ### Безопасность превыше всего. 9 простых трюков, которые сделают жизнь линуксоида секьюрнее

  Жизнь обычных людей складывается из мелочей. Жизнь линуксоида складывается из множества ма…
  16.10.2017
  9 мин на чтение

- ### Бекдор для macOS использует сервисы Tor и похищает пароли Keychain

  Ранее на этой неделе мы рассказывали о малвари Backdoor.MAC.Eleanor, которая атакует польз…
  08.07.2016
  4 мин на чтение

- ### Whonix: операционная система для анонимуса

  Когда мы говорим об анонимности в интернете, то чаще всего подразумеваем такие проекты, ка…
  23.06.2016
  6 мин на чтение

- ### Мобильные новости августа. «Убийца Android» от Google, Android 7.0, CyanogenMod ZNH5Y и нейронная сеть внутри процессора Galaxy S7

  Сегодня в выпуске: «Фуксия» — новая операционка от Google, способная работать на всем, нач…
  05.09.2016
  8 мин на чтение

- ### Тур по BSD, часть 1. Рождение Berkeley Software Distribution

  В «Юниксоиде» мы постоянно пишем про Linux и FreeBSD, но совсем забываем о других BSD-сист…
  02.03.2016
  11 мин на чтение

- ### Android N и борьба за безопасность. Колонка Евгения Зобнина

  Одним из самых интересных на Google I/O было выступление Адриана Людвига, отвечающего за б…
  01.07.2016
  4 мин на чтение

- ### Seedboxes. Как раздавать и скачивать торренты, не оставляя следов

  Торренты и файлообменные сети пытаются запретить с момента их создания. Десятки трекеров у…
  13.04.2016
  13 мин на чтение

Открыть комментарии

#### Последние взломы

### HTB Driver. Эксплуатируем PrintNightmare и делаем вредоносный SCF

### Routing nightmare. Как пентестить протоколы динамической маршрутизации OSPF и EIGRP

### HTB Bolt. Эксплуатируем шаблоны в Python и разбираемся с PGP

### Краденые миллиарды и плохой рэп. Как арестовали супругов, которые отмывали деньги Bitfinex и снимали тиктоки

#### Компьютерные трюки

### Поездка в Sonerezh. Поднимаем сервер для стриминга музыки

### Терминальное счастье. Колонка главреда

### Анатомия терминала. Осваиваем текстуальную графику

### Змей-стражник. Сигнализация для велосипеда из старого смартфона на Android

#### Свежие новости

- 14 часов назад

  ### Внутренние чаты хак-группы Conti слили в открытый доступ

- 16 часов назад

  ### Toyota закрыла производство в Японии после взлома одного из поставщиков

- 17 часов назад

  ### Microsoft: малварь FoxBlade атаковала Украину до начала военных действий

- 19 часов назад

  ### Хакеры, взломавшие Nvidia, выставили на продажу инструмент для обхода занижения хэшрейта

- 2 дня назад

  ### Вымогатели выбирают стороны: одни поддерживают Россию, другие Украину

Вопросы по материалам и подписке: support@glc.ru
Отдел рекламы и спецпроектов: yakovleva.a@glc.ru
Контент 18+
Сайт защищен Qrator —
самой забойной защитой от DDoS в мире
Подписка для физлиц
Подписка для юрлиц
Реклама на «Хакере»
Контакты
Posting....
wpDiscuz