Copperhead OS- анонимная ОС для смартфонов
Обзор Copperhead OS
Главная особенность прошивки Copperhead OS - существенно расширенные инструменты предотвращения взлома. Copperhead OS включает в себя улучшенную реализацию аллокатора памяти (malloc) из OpenBSD, который рандомизирует выделяемые приложению страницы и заполняет мусором возвращаемые страницы памяти. Этот процесс делает атаки класса «Use-after-free» очень сложными в реализации. OpenBSD malloc тоже размещает метки в конце выделяемых областей памяти, которые проверяются при ее освобождении. Это позволяет бороться с атаками типа «Heap overflow».
При сборке Copperhead OS используются средства компилятора для предотвращения срыва стека. В частности, механизмы _FORTIFY_SOURCE в GCC (Android < 7.0), -fsanitize=bounds, -fsanitize=object-size в Clang (Android 7.0), механизм -fsanitize=integer для защиты от целочисленного переполнения (integer overflow). Данные средства использует Google в AOSP, но авторы CopperheadOS расширили их применение для гораздо большего количества функций стандартной библиотеки языка СИ (и, что не менее важно, закоммитили в апстрим).
Для защиты от модификации кода CopperheadOS использует механизм доверенной загрузки, впервые появившийся в версиях Android 4.4, и кроме того не полагается на заблаговременно оптимизированный код приложений из каталога /data/dalvik-cache. Последний нужен для быстрого запуска приложений и генерируется во время первой загрузки смартфона (сообщение «Оптимизация приложений…»). Однако он же может быть использован для внедрения в систему зловредного кода: нет смысла подменять само приложение в разделе /system — механизм доверенной загрузки откажется загружать смартфон после модификации системного раздела, а вот оптимизированный код в /data/dalvik/cache ни у кого подозрений не вызовет.
Ядро Copperhead OS собрано с патчем PaX, включающим в себя несколько механизмов предотвращения атак:
- PAX_RANDMMAP — более продвинутая, в сравнении с применяемой в стандартном ядре Android, реализация механизма рандомизации адресного пространства (ASLR), затрудняющая атаки, направленные на переполнение буфера и хипа;
- PAX_PAGEEXEC — механизм защиты страниц данных от исполнения, который убивает приложение, как только оно попытается исполнить код в области данных (в ядре Android есть такой механизм, но он действует более мягко);
- PAX_MPROTECT — препятствует модификации кода приложения во время исполнения;
- PAX_MEMORY_SANITIZE — обнуляет страницу памяти при ее освобождении (только для пространства ядра);
- PAX_REFCOUNT — система автоматического освобождения неиспользуемых объектов в памяти, позволяет предотвратить атаки типа «Use-after-free (только для пространства ядра);
- PAX_USERCOPY — защита от переполнения буфера путем сверки размера объекта (только для пространства ядра);
- PAX_KERNEXEC — защита страниц памяти от исполнения (только для пространства ядра).
В Copperhead OS более строгие правила SELinux — системы разграничения прав доступа к файлам, системным вызовам и железу. К примеру, здесь нельзя выполнить код из временных каталогов (подключенных с помощью псевдоФС tmpfs), невозможно получить доступ к важным системным данным и информации о других процессах с помощью чтения файлов каталога /proc.
CopperheadOS включает в себя большое количество других ограничений. По умолчанию дефолтное приложение камеры не указывает в метаданных снимка место проведения съемки, а экран не отображает уведомления, которые могут раскрыть важную конфиденциальную информацию (В Андроид и iOS позволяют показ таких push-уведомлений, с опцией отключения).
Работающие в фоне приложения не могут получить доступ к буферу обмена (что влияет на функциональность некоторых нужных приложений из GooglePlay).
MAC-адрес всех сетевых интерфейсов рандомизируется по умолчанию.
Системный компонент WebView, отвечающий за отрисовку веб-страниц в сторонних приложениях, и в большинстве браузеров, применяет функцию «IsolatedProcess», позволяющую закрыть каждый инстанс WebView в свою отдельную песочницу.
Сам Chromium, на котором основывается WebView, включает в себя ряд ограничений и настроек, нацеленных на защиту от утечек информации: отключены исправление ошибок в адресной строке, предзагрузка веб-страниц, контекстный поиск, метрики и аудит гиперссылок. В качестве поисковой системы по умолчанию используется анонимный поиск DuckDuckGo.
Инструменты от Tor
Copperhead OS — это всего лишь базовая часть прошивки. Поверх нее работают еще несколько инструментов: Orbot, orWall, F-Droid, My App List и Google Play, включенный в базовую поставку не столько по причине доступа к маркету приложений (его функции здесь выполняет магазин F-Droid), сколько по причине Signal, который использует сервисы Google для получения push-уведомлений.
Два основных и важных компонента здесь — это конечно же orWall и Orbot. Первый- сборка Tor для Android, способная работать либо как локальный SOCKS-прокси, перенаправляющий весь трафик в Tor, либо в режиме root, когда трафик заворачивается в Tor фаерволом Iptables, что позволяет избежать каких-либо утечек.
Однако по умолчанию прошивка не использует ни тот, ни другой метод, а полагается на orWall, своего рода обертку для фаервола, которая дает возможность заворачивать трафик в Orbot выборочно, для каждого отдельного приложения. С помощью этого вы сможете запросто контролировать, кто будет ходить с помощью Tor, кто напрямую, а кому доступ в интернет будет запрещен вообще.
Инструмент OrWall полностью блокирует все интернет-соединения до тех пор, пока прошивка не будет окончательно загружена. Это позволяет избежать любых утечек данных в случаях, если вы намерены выходить в интернет исключительно через Tor или полностью заблокировать доступ в интернет не вызывающему доверия приложению.
My App List- это еще одно довольно интересное приложение в этой прошивке. Изначально оно создано как удобный способ сохранить список всех установленных через F-Droid маркет приложений, но разрабы Tor задействовали её для быстрой установки рекомендуемых программ. Они заранее подготовили список приложений, который может пригодиться среднестатистическому пользователю, и загрузили его в My App List.
В списке My App List есть:
- Менеджер файлов Amaze
- XMPP-клиенты Сonversations и Xabber
- Читалка книг Cool Reader
- VoIP-клиенты CSipSimple и Linphone
- Браузер Mozilla Firefox
- Почтовый клиент K-9 Mail
- Twitter-клиент Twidere
- Онлайн-карты OsmAnd
- Медиапроигрыватель VLC
Установка Copperhead OS
На данный момент прошивка Copperhead OS доступна только для Nexus 5X и 6P, но ее установка существенно отличается от установки того же CyanogenMod или любой другой кастомной прошивки. На самом деле это просто набор скpиптов для Linux, который выкачивает последнюю версию CopperheadOS с официального сайта, скачивает дополнительное ПО, интегрирует его в прошивку, подписывает ее и устанавливает на устройство с помощью утилиты Fastboot.
По этой причине для установки прошивки вам понадобятся:
- Дистрибутив Linux
- Java JDK
- OpenSSL
- Утилиты Cpio, Git, g++, GCC
- Установленные ADB и Fastboot
Установка Copperhead OS с помощью Ubuntu
$ sudo apt-get install android-tools-adb android-tools-fastboot
$ sudo apt-get install openjdk-7-jdk
$ sudo apt-get install build-essential git
$ sudo apt-get install libssl-dev
Теперь нужно активировать на смартфоне отладку по USB. Сделать это можно в настройках:
Settings —> About Phone, 5 тапов по Build Number.
Далее:
Settings —> Developer Options —> Allow USB Debugging, а также Enable OEM unlock.
После этого подключаем устройство по USB и выполняем эту команду:
$ sudo adb devices
В ответ телефон должен вывести диалоговое окно с вопросом о доверии ПК, с ним конечно же надо согласиться.
Теперь необходимо скачать скрипты и запустить процесс прошивки:
Имейте ввиду! После этой операции все данные на устройстве будут удаленны!
$ git clone https://github.com/mikeperry-tor/mission-improbable/
$ cd mission-improbable
$ ./run_all.sh
Скрипт проведет вас через все этапы установки.
Заключение
Прошивка от создателей Tor- несомненно интересная идея. Используя ее правильным образом, вы сможете получить реально не отслеживаемый при помощи интернет-сети телефон.
Но стоит иметь в виду, что ваше мобильное устройство останется не защищенным от отслеживания с помощью мобильных сетей и атак «Side channel», к примеру возможности перехватить пароли с помощью анализа изменений Wi-Fi в сигнале.