Skip to content

Latest commit

 

History

History
146 lines (125 loc) · 16.6 KB

Part_1.md

File metadata and controls

146 lines (125 loc) · 16.6 KB

Содержание ОС ANDROID

  • 1.1: ‟Особенности ОС Android”
  • 1.2: ‟Модель безопасности ОС Android”

gif

Заметки | Дополнительно

✏️ Заметки

1.1 Особенности ОС Android

🧱 [ Архитектура ОС Android ]

5 уровней ОС Android [🔗]:

  1. Ядро Linux (драйвера + управление)
    • Нижний уровень;
    • Поддерживает аппаратные драйвера (камера, микрофон, ...);
    • Управляет процессами, памятью, питанием, ...;
  2. C/C++ Библиотеки (WebKit, libc, SSL, ...)
    • Библиотеки для поддержки различных типов данных;
    • Surface Manager → управление дисплеем;
    • SGL / openGL → управление 3D / 2D графикой;
    • Media Libraries → управление / хранение видео / аудио файлов;
    • WebKit → поддержка веб-браузеров;
    • FreeType → поддержка шрифтов;
    • libc → поддержка библиотек C;
  3. Android Runtime: – среда выполнения Android-приложений [🔗];
  4. Фреймворки приложений (менеджеры, система представлений, контент-провайдеры)
    • Activity Manager (Менеджер действий): – управляет жизненным циклом приложений;
    • Notification Manager (Менеджер уведомлений): – позволяет приложениям отображать уведомления;
    • Resource Manager (Менеджер ресурсов): – управляет доступом к строковым, графическим, ... ресурсам;
    • Telephony Manager (Менеджер телефонии): –  управляет всей функциональностью касаемо телефонии;
    • Location Manager (Менеджер локации): – получает информацию о географической позиции устройства;
    • Content Providers (Контент-провайдеры): – управляют передачей данных между приложениями;
    • View System (Система представлений): – набор представлений с расширяемой функциональностью для составления внешнего вида приложений из компонентов;
  5. Приложения

    Компоненты Android приложений [🔗]:

    • Activities (Действия): – предоставляют интерфейс для взаимодействия пользователя с приложением;
    • Services (Сервисы): – занимаются фоновыми операциями (прим: загрузка / скачивание данных, ...);
    • Broadcast Receivers (Широковещательный приемник): – компонент, ответственный за внешние события (прим: перезагрузка, SMS, звонок, ...);
    • Content Provider (Контент-провайдер): – предоставляет интерфейс для доступа к данным между приложениями;

Архитектура ОС Android
[ Архитектура ОС Android 🔗 ]


🛠 [ Разработка под Android ]

Флоу создания приложений:
[Исходный код на Java] → Компилятор Java → [Байт-код Java .class] → [.dex] → Android Runtime → [.apk]


Инструменты для разработки / отладки / анализа приложений:

  • Java Runtime Environment (JRE): – виртуальная машина для исполнения Java-приложений;
  • Android Software Development Kit (SDK): – инструменты для создания / компиляции / упаковки приложений;
  • Android Debug Brigde (ADB): – утилита для работы над данными на устройстве под управлением ОС Android;
  • Android Developer Tools (ADT) / Android Studio: – IDE с дополнительной функциональностью для разработки под ОС Android;

1.2 Модель безопасности ОС Android

🔗HackTricks про модель безопасности Android

🛡 [ Принципы безопасности ]

Два уровня модели безопасности:
 • Уровень операционной системы = изолирует приложения друг от друга;
 • Уровень приложения = позволяет разработчикам настраивать возможности приложений + открывать доступ к определённой функциональности;

  1. Изоляция приложений + Сокращение площади атаки
    • Сепарация с помощью UID: – каждому приложению назначается определённый User ID, чтобы приложения могли взаимодействовать лишь с теми файлами, которыми владеет тот же User ID (помимо общих файлов);
    • SELinux (Android 4.3+) [🔗]: – модуль ядра Linux для настройки политик контроля доступа для разных частей системы;
    • Scoped storage (Android 10+): – хранилище с заданной областью; механизм, позволяющий приложениям хранить чувствительные данные во внешнем хранилище;
    • Package visibility (Android 11+): – видимость пакетов; позволяла приложениям получать информацию о других установленных приложениях, была ограничена;
    • Secure computing mode (Seccomp, Android 8.0+): – технология Linux, файрволл между процессами пользовательского пространства и пространства ядра;
  2. Митигации
    • Address Space Layout Randomization (ASLR)
    • Аппаратный No eXecute (NX)
  3. Целостность устройства
    • Verified Boot (Android 4.4+) [🔗]: – контролирует целостность бутлоадера и уведомляет пользователя об изменениях в процессе бута;
    • Полное шифрование диска (Android 5.0+) + пофайловое шифрование (Android 7.0+) [🔗]: – защита от попыток чтения данных при условии физического доступа к устройству;
  4. Дополнительные услуги по обеспечению безопасности
    • Специальные обновления механизмов безопасности;
    • Google Play Protect: – защита пользователей от вредоносных приложений;
    • Safe Browsing / SafetyNet: – API для защиты пользователей от вредоносных веб-сайтов в Chrome;
    • Запрет на установку приложений из сторонних источников;

⛱ [ Песочница ]

ОС Android изолирует приложения / процессы [🔗]:

  • Каждому приложению присваивается уникальный Linux User ID
  • Каждое приложение запускается в собственном процессе
  • Каждое приложение запускается в собственной среде выполнения DVM / ART
  • У приложений нет доступа к приватным данным / памяти процесса других приложений
  • Приложения общаются посредством Binder'ов – систем межпроцессной коммуникации / удаленного вызова методов; Для общения с другими процессами приложение отправляет сообщения Binder'у, который проверяет, имеет ли приложение нужные для общения права

🔑 [ Права ]

uses-permission внутри AndroidManifest.xml

5 уровней защиты, на которые делятся права Android:

  1. normal → предоставляются по умолчанию во время установки приложения;
  2. dangerous → запрашиваются у пользователя, обеспечивают доступ к чувствительным данным / важным частям устройства;
  3. signature → предоставляются только тем приложениям, что подписаны таким же сертификатом разработчика, что и приложение, в котором объявлено право доступа;
  4. knownSigner → предоставляются только тем приложениям, что подписаны ранее разрешённым сертификатом разработчика;
  5. signatureOrSystem → предоставляются только тем приложениям, что подписаны таким же сертификатом разработчика, что и приложение, в котором объявлено право доступа, ЛИБО в том случае, если приложение подписано тем же сертификатом, что и образ системы Android / приложение расположено в специальной папке в системе;

📝 [ Подпись приложений ]

Введена для обеспечения целостности приложений – валидная подпись теряется при декомпиляции + возможна лишь с использованием сертификата разработчика.

Схемы генерации подписи [🔗]:

  • APK Signature Scheme v1: – основана на подписи JAR, защищает только некоторые части приложения;
  • APK Signature Scheme v2 (Android 7.0+)
  • APK Signature Scheme v3 (Android 9+): – схожа с v2, но поддерживает ротацию ключа и добавляет информацию о поддерживаемых версиях SDK;
  • APK Signature Scheme v4 (Android 11+): – основана на дереве Меркла, вычисляемом по всем байтам APK;

📑 Дополнительно

  • [ 📗 ] Гайд: Официальный гайд Android об архитектуре ОС Android 🔗
  • [ 📗 ] Гайд: Официальный гайд Android об архитектуре приложений для ОС Android 🔗
  • [ 📘 ] Документация: Официальная документация Android об Android Runtime 🔗
  • [ 📘 ] Документация: Официальная документация Android о компонентах Android приложений 🔗
  • [ 📗 ] Гайд: Модель безопасности Android от HackTricks 🔗
  • [ 📗 ] Гайд: Компоненты Android приложений от HackTricks 🔗

  • [ 📄 ] Статья: ‟Безопасность Android. От первой до одиннадцатой версии” от Евгения Зобнина в ][akep 🔗
  • [ 📄 ] Статья: ‟Криптостойкие андроиды. Как работает полнодисковое и пофайловое шифрование в Android” от 84ckf1r3 в ][akep 🔗
  • [ 📄 ] Статья: ‟Эволюция системы безопасности Android или как защищается система сегодня” от Анастасии Худояровой на Habr 🔗
  • [ 📄 ] Статья: ‟Permissions в Android: как не допустить ошибок при разработке” от Mr_R1p (Swordfish Security) на Habr🔗
  • [ 📘 ] Документация: Официальная документация о безопасности Android 🔗
    • [ 📘 ] Документация: Официальные бюллетени о безопасности Android 🔗
    • [ 📘 ] Документация: Официальная документация о песочнице Android 🔗
    • [ 📘 ] Документация: Официальная документация о подписи Android приложений 🔗
    • [ 📘 ] Документация: Официальная документация о шифровании в Android 🔗
    • [ 📘 ] Документация: Официальная документация о SELinux в Android 🔗
    • [ 📘 ] Документация: Официальная документация о Verified Boot в Android 🔗