Содержание статьи
Почитать
Android Q: privacy
Privacy in Android Q — документация Google об изменениях в механизмах доступа к информации в недавно выпущенном Android Q Beta 1. Основные нововведения:
- Запрет фонового доступа к местоположению. Раньше, если пользователь разрешал приложению использовать местоположение, оно могло сделать это в любой момент, даже если находилось в фоне. В новой версии у пользователя есть возможность выбрать, в каких ситуациях отдавать приложению свои координаты: в любое время или только пока приложение находится на экране.
- Запрет фонового доступа к буферу обмена. В Android нет отдельного разрешения на доступ к буферу обмена, любое приложение может прочитать или записать его содержимое (так получилось из-за технических особенностей этого механизма). Теперь доступ к буферу обмена могут получить только приложения, которые в данный момент находятся на экране либо являются клавиатурами и другими системами ввода. Нововведение убивает целый класс приложений — менеджеры буфера обмена.
- Запрет фонового запуска активностей. Текущие версии Android позволяют приложениям запускать другие приложения (а точнее, их активности) в любое время, независимо от того, находятся они на экране или нет. Это может запутать пользователя и открывает возможности для фишинга и других зловредных действий. Android Q запрещает фоновым приложениям запускать активности. В качестве альтернативы предлагается использовать уведомления, которые, в свою очередь, запустят нужную активность с помощью PendingIntent.
- Запрет на прямой доступ к карте памяти. С Android Q приложения больше не смогут получить прямой доступ к карте памяти (внутренней или внешней) с помощью разрешений
READ_EXTERNAL_STORAGE
иWRITE_EXTERNAL_STORAGE
. Вместо этого следует использовать либо личный каталог приложения внутри/sdcard/Android
(он создается автоматически и не требует разрешений), либо одно из разрешений, допускающих доступ к каталогам с фотографиями, видео и загрузками. - Возможность отзыва разрешений у старых приложений. Система подтверждения разрешений приложений пользователем появилась еще в Android 6.0. Но работала она только в отношении софта, собранного для Android 6.0 и выше. Весь старый софт продолжал получать все нужные ему разрешения автоматически. В Android Q ситуация не изменилась, но теперь при запуске старого приложения пользователь будет видеть экран, с помощью которого сможет отозвать уже выданные системой разрешения.
- Запрет на включение/выключение Wi-Fi. В Android Q приложения больше не смогут включать и выключать Wi-Fi, вместо этого они должны использовать новую функцию settings-panels, которая показывает всплывающий диалог с переключателем выбранной настройки.
- Ограничение на доступ к IMEI и серийному номеру устройства. Чтобы прочитать эту информацию, теперь требуется разрешение
READ_PRIVILEGED_PHONE_STATE
. - Запрет на доступ к информации о частоте использования контактов. Приложения, получающие доступ к базе контактов телефона, больше не смогут также получить информацию о том, как часто пользователь контактировал с теми или иными людьми.
- Рандомизация MAC-адреса. При скане сетей Android Q будет использовать рандомизированный MAC-адрес вместо настоящего. Это изменение должно защитить от отслеживания пользователя: некоторые магазины используют MAC-адрес для отслеживания посетителей, а торговые центры — для трекинга их перемещения.
- Другие изменения: запрет на доступ к файловой системе
/proc/net
, запрет на чтение серийных номеров подключенных USB-устройств до получения соответствующего разрешения, запрет на чтение параметров камеры без получения разрешения на использование камеры, необходимость иметь разрешениеACCESS_FINE_LOCATION
, чтобы получить доступ ко многим функциям телефонии, Wi-Fi и Bluetooth, запрет на скрытое получение содержимого экрана устройства обходными путями.
Извлекаем SSL-сертификат приложения из KeyStore
Extracting Android KeyStores from apps — статья об извлечении SSL-сертификатов из приложения с помощью Frida.
Многие приложения хранят приватные данные в KeyStore — специальном хранилище, позволяющем зашифровать и надежно защитить данные с помощью хардварного TEE-модуля смартфона (если такой присутствует). Напрямую извлечь эти данные в большинстве случаев не удастся. Но вместо извлечения данные можно перехватить.
KeyStore имеет методы load(KeyStore.LoadStoreParameter param)
и load(InputStream stream, char[] password)
для извлечения данных из хранилища. Мы можем переписать код этих функций с помощью Frida и сохранить данные на своей машине.
Код скрипта для Frida выглядит так:
setTimeout(function() {
Java.perform(function () {
keyStoreLoadStream = Java.use('java.security.KeyStore')['load'].overload('java.io.InputStream', '[C');
/* Переписываем функцию Keystore.load */
keyStoreLoadStream.implementation = function(stream, charArray) {
/* Если первый параметр null — запускаем оригинал */
if (stream == null) {
this.load(stream, charArray);
return;
}
/* Отправляем сообщение, что функция найдена */
send({event: '+found'});
/* Читаем InputStream в буфер */
var hexString = readStreamToHex (stream);
/* Отправляем тип KeyStore */
send({event: '+type', certType: this.getType()});
/* Отправляем пароль */
send({event: '+pass', password: charArray});
/* Отправляем сертификат в текстовой форме */
send({event: '+write', cert: hexString});
/* Запускаем оригинальную функцию */
this.load(stream, charArray);
}
});
},0);
/* Функция для чтения InputStream и его конвертации в ASCII */
function readStreamToHex (stream) {
var data = [];
var byteRead = stream.read();
while (byteRead != -1)
{
data.push( ('0' + (byteRead & 0xFF).toString(16)).slice(-2) );
/* <------------ binary to hex -----------> */
byteRead = stream.read();
}
stream.close();
return data.join('');
}
Кроме этого скрипта, также понадобится скрипт, работающий на компе (именно ему приведенный выше скрипт отправляет данные с помощью функции send). Как работать с Frida и запустить скрипт, мы уже рассказывали в статье «Инъекция для андроида».
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»