Защита андроид от утечки данных.

SalatO

Сын Геббельса.
Регистрация
19 Июн 2017
Сообщения
136
Репутация
32
Реакции
116
Баллы
0
Андроид
Все мы пользуемся мобильными устройсвами ,смартфонами , планшетами и как положено Мы все храним на них личные данные , начиная контактами и заканчиваяфотографиями.. При этом текущий дизайн OS мобильных устройств создаёт впечатление, что одна из их основных задач — как можно сильнее упростить доступ третьим лицам (в основном — корпорациям и государству, но и мелким разработчикам мобильных приложений тоже обламывается от этого пирога) к вашим личным данным.
Частичная открытость Android немного улучшает ситуацию, но полноценного решения проблемы утечки приватных данных пока не существует. Основная проблема в том, что пока на устройствеиспользуются блобы нет никаких гарантий, что в них нет закладок (вроде обнаруженных в прошивках Samsung Galaxy). Аналогичная проблема с проприетарными приложениями без открытых исходников (вроде всего пакета GApps, начиная с самого Google Play Маркет). По сути всё как раз наоборот — крайне высока вероятность, что закладки там есть. Нередко их даже не пытаются скрывать, выдавая за удобные «фичи» для синхронизации и/или бэкапа ваших данных, обеспечивания вас полезной рекламой, и «защиту» от вредоносного софта или на случай утери устройства.Но, несмотря на невозможность полноценно защитить личные данные на телефоне, я считаю что стоит сделать максимум возможного: прикрыть столько каналов утечек, сколько получится — ведь мало кто может позволить себе не использовать мобильный телефон или не держать на нём личные данные (хотя бы контакты и историю звонков).
Сразу уточню, что об анонимности речь вообще идти не будет. Это отдельная большая и сложная тема, которая, в частности, потребует использования Tor, полного отказа от GSM и перевода всей телефонии на шифрованный VoIP, etc. Описанные ниже приёмы защиты отидентификации/отслеживания не дают анонимности, они просто прикрывают некоторые дополнительные каналы утечки личных данных (к которым относится и то, где и когда вы бываете).
Ещё одна проблема — сложность и не лучшее юзабилити описанных решений делает их малодоступными для среднего пользователя.

Что будем рассматривать в статье .
Ингредиенты
  1. GApps
  2. Замена прошивки и аккаунты
  3. Разделы
  4. Backup
  5. IMEI
  6. Типы бэкапов
  7. Что и как бэкапить
  8. Резюмируя
  9. Upgrade
  10. OTA-обновления OS
  11. Обновление Xposed framework и его модулей (включая XPrivacy)
  12. Защита данных на телефоне на случай потери/кражи
  13. Анти-вор
  14. Настройка XPrivacy
  15. Установка и настройка защищённой системы

Ингредиенты .
Безопасность формируется разными элементами, и пренебрежение любым из них может свести на нет все усилия:

  • OS и ключевые приложения (работающие с вашими личными данными) должны быть open source, иначе ни о каком доверии к ним речи быть не может в принципе.
  • У вас должен быть root-доступ (как говорится, если вы не root на своём компьютере — значит на нём root кто-то другой… да и некоторые из описанных ниже приложений требуют root-доступ).
  • OS и приложения необходимо регулярно обновлять, чтобы уменьшить шанс что их взломают.
  • Вместо «синхронизации» личных данных нужно использовать обычные бэкапы, причём обязательно надёжно зашифрованные.
  • Доступ всех приложений к личным данным должен быть ограничен реально необходимым минимумом, доступ к камере/микрофону так же должен контролироваться.
  • Доступ всех приложений в интернет должен быть ограничен реально необходимым минимумом.
  • Передача данных «по воздуху» должна осуществляться безопасным образом:
    • всё, что передаётся «по воздуху» должно быть зашифровано (вам потребуется доступ к VPN);

    • подключение к Wi-Fi требует дополнительных предосторожностей, чтобы гарантировать что мы подключаемся к нужной точке доступа;

    • работа с Wi-Fi требует дополнительной защиты от утечки данных, позволяющих вас отслеживать.
  • Защита данных на телефоне на случай потери/кражи.
    Требование к открытости исходников OS сразу исключают iOS и Windows Phone, да и из вариантов на базе Android подойдут далеко не все. Я буду использовать CyanogenMod, но это не единственный вариант (если ваш телефон поддерживается Replicant то он может быть предпочтительнее, плюс есть ещё Firefox OS, Ubuntu Touch, Tizen).Что касается использования самых последних версий OS — к сожалению, мне пришлось поставить CyanogenMod 11 на базе Android 4.4.4 (KitKat). Причин две: во-первых CyanogenMod на Android 5.x для моего телефона просто ещё нет, и во-вторых ещё нет стабильной версии Xposed framework для Android 5.x.
    Для надёжного шифрования бэкапов понадобится платная версия Titanium Backup.
    Для полноценного контроля доступа приложений к личным данным понадобится платная версия XPrivacy. В принципе, можно обойтись и бесплатной, но это будет значительно сложнее (информация о параметрах функций и чёрные/белые списки позволяют более тонко управлять доступом, да и пакетные операции экономят много времени).
 

SalatO

Сын Геббельса.
Регистрация
19 Июн 2017
Сообщения
136
Репутация
32
Реакции
116
Баллы
0
Замена прошивки и аккаунты

Если только вы уже не приняли все необходимые меры предосторожности с самого начала использования своего телефона, то ваши личные данные уже давно «протекли» и доступны множеству чужих людей. В этом случае я бы рекомендовал сначала просто установить описанные приложения и поэкспериментировать с ними, а когда почувствуете себя с ними достаточно уверенно — удалить с телефона абсолютно все данные (включая содержимое внутренней/внешней SD card) и установить всё с нуля — это не заберёт ваши данные обратно, но хотя бы разорвёт связь между этими данными и вашим телефоном.
Что касается аккаунтов, то в идеале после замены прошивки нужно специально для телефона создать отдельные аккаунты в гугле, фейсбуке, etc. Это обычно не мешает вам использовать свои обычные аккаунты в нужных приложениях, а для всех остальных это сильно ограничит объём доступных им данных (например, «моим» фейсбуком пользуются только несколько игр, которым я дал к нему доступ ради каких-то бонусов).
ВНИМАНИЕ: Если вы покупали приложения в Play Маркет, то если после замены прошивки вы будете использовать тот же самый гугл-аккаунт связь между уже протёкшими данными и вашим телефоном сохранится (по крайней мере для гугла), а если аккаунт будет новый — вы потеряете ранее купленные приложения.
Если для вас замена прошивки и/или создание отдельных аккаунтов для телефона это перебор, то ничего страшного — как я уже писал в начале, способа полноценной и надёжной защиты личных данных на телефоне пока не существует, речь идёт исключительно о том, чтобы прикрыть столько каналов утечки данных, сколько получится. И в вашем случае будет просто прикрыто чуть меньше каналов, чем возможно на данный момент.
Дальше я буду исходить из того, что вы решили заменить текущую прошивку - если это не так, просто пропустите некоторые из описанных операций.

РРАЗДЕЛЫ
Для понимания описанных далее операций необходимо минимальное представление об основных разделах Android. Вкратце, основные разделы это:
    • /system
      • содержит основную систему/прошивку (напр. CyanogenMod) плюс опционально дополнительные пакеты (вроде GApps) прошитые через recovery после основной прошивки
      • по умолчанию доступен только на чтение, не изменяется в процессе работы — т.е. его содержимое всегда соответствует установленной прошивке
      • имея root-доступ его можно изменять
    • /data
      • содержит приложения установленные пользователем и данные всех приложений (в т.ч. системных приложений из /system)
      • именно этот раздел шифруется если активировать шифрование системы
      • если в телефоне есть «встроенная» SD card, то она может быть реализована не как отдельный раздел, а как каталог /data/media или /data/media/0 (в этом случае wipe или factory reset раздела /data из recovery это не полноценное форматирование раздела, а просто удаление всех файлов кроме /data/media)
    • SD card
      • содержит файлы пользователя (закачки, музыка, видео, etc.)
      • содержит часть данных приложений, которые либо не помещаются в /data, либо должны быть доступны всем приложениям (раздел /data отформатирован в ext4, полноценно поддерживает права файлов, поэтому обычно к файлам в /data имеют доступ только их собственные приложения, а SD card либо отформатирован в FAT либо на нём через fuse эмулируется почти полное отсутствие ограничений прав доступа)
      • их может быть несколько, как встроенных так и внешних, доступных через разные каталоги (дальше в примерах я буду использовать каталог /sdcard), и находящихся физически на отдельных разделах или внутри /data
 

SalatO

Сын Геббельса.
Регистрация
19 Июн 2017
Сообщения
136
Репутация
32
Реакции
116
Баллы
0
Backup

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

Некоторые из описанных операций можно сделать только если у вас есть root или нормальный recovery (обычно ClockworkMod или TWRP). Если их ещё нет - возможно, сейчас самое время ими обзавестись.

IMEI
Судя по всему, в некоторых случаях при перепрошивке есть небольшая вероятность что будет повреждён другой раздел. Один из этих разделов используется для хранения, в частности, IMEI телефона. Потеряв, его будет довольно сложно восстановить, поэтому крайне рекомендуется перед первой прошивкой сохранить (куда-то вне телефона) раздел с IMEI. Для некоторых телефонов это специфичная процедура с использованием утилит производителя, для других достаточно сохранить утилитой dd нужные разделы в файлы (впрочем, скорее всего и в остальных случаях можно воспользоваться dd вместо утилит производителя).

Если не уверены — проще всего сохранить все разделы кроме /system, /data и /cache. Обычно они все достаточно небольшого размера. Посмотреть список и размеры доступных разделов можно в /proc/partitions или через parted, пример (подключаемся через adb как root, не важно загружена обычная система или recovery):


Система.
# cat /proc/partitions
major minor #blocks name

179 0 15388672 mmcblk0
179 1 4096 mmcblk0p1
179 2 4096 mmcblk0p2
179 3 20480 mmcblk0p3
179 4 4096 mmcblk0p4
179 5 4096 mmcblk0p5
179 6 4096 mmcblk0p6
179 7 8192 mmcblk0p7
179 8 8192 mmcblk0p8
179 9 8192 mmcblk0p9
179 10 90112 mmcblk0p10
179 11 262144 mmcblk0p11
179 12 1048576 mmcblk0p12
179 13 1572864 mmcblk0p13
179 14 573440 mmcblk0p14
179 15 8192 mmcblk0p15
259 0 11759616 mmcblk0p16

# parted /dev/block/mmcblk0
(parted) p

Model: MMC MAG2GC (sd/mmc)
Disk /dev/block/mmcblk0: 15.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start End Size File system Name
1 4194kB 8389kB 4194kB BOTA0
2 8389kB 12.6MB 4194kB BOTA1
3 12.6MB 33.6MB 21.0MB ext4 EFS
4 33.6MB 37.7MB 4194kB m9kefs1
5 37.7MB 41.9MB 4194kB m9kefs2
6 41.9MB 46.1MB 4194kB m9kefs3
7 46.1MB 54.5MB 8389kB PARAM
8 54.5MB 62.9MB 8389kB BOOT
9 62.9MB 71.3MB 8389kB RECOVERY
10 71.3MB 164MB 92.3MB fat16 RADIO
11 164MB 432MB 268MB ext4 TOMBSTONES
12 432MB 1506MB 1074MB ext4 CACHE
13 1506MB 3116MB 1611MB ext4 SYSTEM
14 3116MB 3704MB 587MB ext4 HIDDEN
15 3704MB 3712MB 8389kB OTA
16 3712MB 15.8GB 12.0GB ext4 USERDATA
 

SalatO

Сын Геббельса.
Регистрация
19 Июн 2017
Сообщения
136
Репутация
32
Реакции
116
Баллы
0
Например, для Nexus 4 достаточносохранить/dev/block/mmcblk0p{8,9}:

Как сохранить .
# dd if=/dev/block/mmcblk0p8 of=/sdcard/mmcblk0p8.img
# dd if=/dev/block/mmcblk0p9 of=/sdcard/mmcblk0p9.img

Типы бэкапов

  • Android Backup: файлы .ab (по сути немного модифицированный tar-архив), зашифрованные если это задано в настройках телефона, обычно делаются через adb backup.
    • Единственное достоинство — эти бэкапы можно делать без root.
  • Nandroid Backup: файлы .img и .tar*, обычные полные образы разделов или tar-архивы (по сути тоже полные образы, только компактнее), не зашифрованные, обычно делаются через recovery.
    • Теоретически TWRP умеет делать шифрованный Nandroid Backup, но во-первых только для /data, и во-вторых у меня эта фича не заработала.
  • Titanium Backup: свой формат, поддержка шифрования в платной версии, сохраняет приложения, их данные и общесистемные настройки.

  • ВНИМАНИЕ: Поскольку Nandroid Backup не зашифрованы и сохраняются на доступную всем приложениям SD card, то я рекомендую после создания сразу (не перегружаясь из recovery в основную систему) переносить их с телефона на компьютер через adb pull, а на телефоне удалять. Если их понадобится восстановить, то сначала загрузить recovery, а потом залить их обратно через adb push и удалить после восстановления бэкапа.
 

SalatO

Сын Геббельса.
Регистрация
19 Июн 2017
Сообщения
136
Репутация
32
Реакции
116
Баллы
0
Что и как бэкапить

Как вы видели выше, разделов в системе очень много. Но большинство из них либо никогда не меняются, либо меняются только при прошивке новой системы или recovery, так что бэкапить их смысла нет.

Возможное исключение — раздел /system. Обычно он меняется только при обновлении прошивки, но имея root вы можете его изменять (делать приложения «системными» через Titanium Backup чтобы сэкономить место на /data, устанавливать новые системные приложения вроде BusyBox, модифицировать загрузочные скрипты, etc.) — в этом случае его тоже может иметь смысл бэкапить.
Таким образом, бэкапить обычно нужно только раздел /data и внутренние/внешние SD card.
Поскольку бэкап нужно куда-то сохранять, и обычно это SD card, то содержимое самой(их) SD card в бэкапы как правило не входит. Titanium Backup умеет частично включать в бэкапы данные приложений находящиеся на SD card, но только файлы из /sdcard/Android/data/*/ (если приложение хранит свои файлы в других каталогах то в бэкап они не попадут).
Итак, ваши данные, которые может потребоваться бэкапить, это:

  • описанные выше возможные изменения /system
    • включаются в Nandroid Backup /system
    • если это несколько известных файлов, то их можно скопировать вручную через adb pull
  • установленные вами дополнительные приложения
    • .apk-файлы, находятся в /data
    • бэкапить не обязательно, их обычно можно повторно скачать
    • может иметь смысл бэкапить чтобы можно было их установить не выкачивая заново, либо если нужно иметь возможность установить старую версию приложения из Play Маркет
    • включаются в Android Backup через adb backup -apk -all -nosystem
    • включаются в Nandroid Backup /data
    • включаются в бэкапы Titanium Backup (опционально)
  • данные практически всех приложений
    • находятся в /data, иногда частично на SD card
    • это самое важное, что стоит бэкапить
    • включаются в Android Backup через adb backup -all (кроме тех данных, которые на SD card)
    • включаются в Nandroid Backup /data (кроме тех данных, которые на SD card)
    • включаются в бэкапы Titanium Backup (опционально, данные на SD card при некоторых условиях тоже включаются)
  • данные некоторых особых приложений
    • XPrivacy держит свои данные в /system, поэтому для бэкапа приходится «экспортировать» их на SD card (это можно автоматизировать)
    • Контакты желательно периодически экспортировать на SD card, т.к. это единственный способ сохранить их в портабельном формате .vcf, который можно загрузить куда угодно (включая приложение Контакты другой прошивки)
  • ваши файлы и данные приложений сохранённые вне стандартных мест
    • находятся на SD card
    • можно просто скопировать их вручную любым способом (например через adb pull /sdcard sdcard)
ВНИМАНИЕ: После экспорта контактов любое приложение может получить к ним доступ, поэтому желательно сразу их перенести с SD card на компьютер. Чтобы никакое приложение не успело украсть контакты сразу после экспорта настоящий параноик может попробовать следующий подход:
  1. экспортировать текущие настройки XPrivacy
  2. через XPrivacy заблокировать всем приложениям доступ к SD card
  3. перезагрузить телефон
  4. экспортировать Контакты (разрешив только им доступ к SD card)
  5. перенести .vcf-файл с контактами с SD card на компьютер
  6. импортировать предыдущие настройки XPrivacy
  7. перезагрузить телефон
 
Сверху Снизу