Вопрос, что есть в Android и практически нет в iOS? 🤓
На самом деле много чего :) Но самое интересное, на мой взгляд, это межпроцессное взаимодействие (IPC - Inter-process communication). В системе Android кажется бесшовным общение между приложениями через вызовы сервисов, запуск Activity, отправку Intent'ов и широковещательных сообщений. И это безумно удобно!
Но, как мы знаем, Android построен на базе ядра Linux и использует большое количество инструментов безопасности этой платформы. И на самом деле, вызовы из одного процесса в другой запрещены. Так как же тогда работает межпроцессное взаимодействие?
Ответ прост - в Android есть очень интересный механизм под названием Binder IPC, который представляет собой системный процесс для обмена данными между приложениями.
Есть несколько статей и документов, посвященных описанию этого механизма. Одна из этих статей как раз подойдет для тех, кто хочет разобраться, как устроен IPC процесс в Android и на чем в принципе основан Android и как он работает.
#Android #Security #IPC #Linux #binder
Часть 1 (в основном про общее строение безопасности Android и как он работает):
https://blog.hacktivesecurity.com/index.php?controller=post&action=view&id_post=46
Часть 2 (больше информации именно про устройство Binder IPC):
https://blog.hacktivesecurity.com/index.php?controller=post&action=view&id_post=48
На самом деле много чего :) Но самое интересное, на мой взгляд, это межпроцессное взаимодействие (IPC - Inter-process communication). В системе Android кажется бесшовным общение между приложениями через вызовы сервисов, запуск Activity, отправку Intent'ов и широковещательных сообщений. И это безумно удобно!
Но, как мы знаем, Android построен на базе ядра Linux и использует большое количество инструментов безопасности этой платформы. И на самом деле, вызовы из одного процесса в другой запрещены. Так как же тогда работает межпроцессное взаимодействие?
Ответ прост - в Android есть очень интересный механизм под названием Binder IPC, который представляет собой системный процесс для обмена данными между приложениями.
Есть несколько статей и документов, посвященных описанию этого механизма. Одна из этих статей как раз подойдет для тех, кто хочет разобраться, как устроен IPC процесс в Android и на чем в принципе основан Android и как он работает.
#Android #Security #IPC #Linux #binder
Часть 1 (в основном про общее строение безопасности Android и как он работает):
https://blog.hacktivesecurity.com/index.php?controller=post&action=view&id_post=46
Часть 2 (больше информации именно про устройство Binder IPC):
https://blog.hacktivesecurity.com/index.php?controller=post&action=view&id_post=48
Deep Dive into Android Binder IPC.pdf
3.1 MB
Для тех, кому интересно почитать более подробно про Binder, механизм его работы и внутренности, есть замечательный материал, который в подробнейших деталях описывает все нюансы :)
А также подробно описан механизм AIDL (Android Interface Definition Language). В буквальном переводе – язык описания интерфейсов Android. Используется для описания композиции и декомпозиции Java объектов в примитивы ОС для непосредственно передачи между процесами.
Информации много, но это того стоит, поверьте.
#Android #Binder #Security #IPC
А также подробно описан механизм AIDL (Android Interface Definition Language). В буквальном переводе – язык описания интерфейсов Android. Используется для описания композиции и декомпозиции Java объектов в примитивы ОС для непосредственно передачи между процесами.
Информации много, но это того стоит, поверьте.
#Android #Binder #Security #IPC
Перехват XPC сообщений в iOS
В Android существует известный всем механизм межпроцессного взаимодействия - binder (я давно писал про него тут и тут).
На iOS с межпроцессным взаимодействием сложнее и одним из возможных способов трансляции сообщений между приложениями является механизм XPC, основанный на передаче plist-структур при помощи libSystem и launchd. Вот тут кратко описан пример, как это работает, чуть повеселее, чем описание Apple таки. 😄
Достаточно интересно, что некоторые системные компоненты имеют XPC интерфейсы. Так, например, в далёком 2012 году на iOS 5 можно было отправлять сообщения без ведома пользователя, используя системный сервис com.apple.chatkit.
Для анализа таких взаимодействий существует несколько библиотек, причем одна из них, более новая и с большим количеством функционала, реализована с использованием frida.
Выглядит весьма интересно, попробую посмотреть, какие приложения общаются таким способом, раньше как-то не сильно обращал на него внимания. Может, что-то интересное и в системных компонентах найдется 😁
#iOS #IPC #XPC
В Android существует известный всем механизм межпроцессного взаимодействия - binder (я давно писал про него тут и тут).
На iOS с межпроцессным взаимодействием сложнее и одним из возможных способов трансляции сообщений между приложениями является механизм XPC, основанный на передаче plist-структур при помощи libSystem и launchd. Вот тут кратко описан пример, как это работает, чуть повеселее, чем описание Apple таки. 😄
Достаточно интересно, что некоторые системные компоненты имеют XPC интерфейсы. Так, например, в далёком 2012 году на iOS 5 можно было отправлять сообщения без ведома пользователя, используя системный сервис com.apple.chatkit.
Для анализа таких взаимодействий существует несколько библиотек, причем одна из них, более новая и с большим количеством функционала, реализована с использованием frida.
Выглядит весьма интересно, попробую посмотреть, какие приложения общаются таким способом, раньше как-то не сильно обращал на него внимания. Может, что-то интересное и в системных компонентах найдется 😁
#iOS #IPC #XPC
Уязвимость Race Condition в Binder IPC
Про Binder было несколько постов, которые объясняли что это, как работает и для чего нужен. Но если кратко - это системный компонент, через который реализовано межпроцессное взаимодействие в Android.
Недавно Google закрыли уязвимость CVE-2020-0423, которая позволяла получить root-доступ на устройстве через взаимодействие с Binder.
В статье подробно описано, почему это происходило, как эта уязвимость работает, с примерами кода, логов и большому количеству отсылок к разным другим интересным статьям. И более того есть PoC эксплойта 🔥
#Android #Binder #IPC #CVE
Про Binder было несколько постов, которые объясняли что это, как работает и для чего нужен. Но если кратко - это системный компонент, через который реализовано межпроцессное взаимодействие в Android.
Недавно Google закрыли уязвимость CVE-2020-0423, которая позволяла получить root-доступ на устройстве через взаимодействие с Binder.
В статье подробно описано, почему это происходило, как эта уязвимость работает, с примерами кода, логов и большому количеству отсылок к разным другим интересным статьям. И более того есть PoC эксплойта 🔥
#Android #Binder #IPC #CVE
cve.mitre.org
CVE -
CVE-2020-0423
CVE-2020-0423
Common Vulnerabilities and Exposures (CVE®) is a list of records — each containing an identification number, a description, and at least one public reference — for publicly known cybersecurity vulnerabilities. Assigned by CVE Numbering Authorities (CNAs)…