Узнайте о новейших методах защиты конфиденциальных данных на устройствах Android при сохранении авторизованного доступа. В этом передовом исследовании мы изучаем критические уязвимости в смартфонах LG, Samsung и Motorola и раскрываем, как можно легко и эффективно стереть зашифрованные данные

При покупке нового телефона каждый сталкивался с необходимостью переноса информации со старого устройства. Для передачи данных между Android-устройствами вы можете использовать несколько способов, о которых мы расскажем ниже.

02 сентября 2021 года
Гаджеты

4 минуты, 5 секунд читать

Как перенести данные с Андроида на Андроид

Содержание статьи

Сегодня в выпуске: обзор систем безопасности Android, объяснение атак типа Cloak & Dagger, гайд по извлечению данных с зашифрованной карты памяти, обход ограничений на загрузку нативных библиотек и доступ к скрытым Java-методам, уязвимость в Android Download Provider. А также: несколько инструментов пентестера и подборка библиотек для программистов.

Время на прочтение

Узнайте о новейших методах защиты конфиденциальных данных на устройствах Android при сохранении авторизованного доступа. В этом передовом исследовании мы изучаем критические уязвимости в смартфонах LG, Samsung и Motorola и раскрываем, как можно легко и эффективно стереть зашифрованные данные

Как говорится, ничего не предвещало беды. Мобильный клиент потихоньку пилился, кофе стыл, задачки закрывались одна за другой, пока вдруг внезапно не пришло письмо на корпоративную почту:

Срочно внедряем новый функционал. Все необходимые параметры для построения бизнес модели, в целях безопасности, будут передаваться в зашифрованном виде AES/CBC/PKCS5Padding с вектором инициализации AAACCCDDDYYUURRS и ключом шифрования ZZHHYYTTUUHHGGRR. Пример зашифрованных данных:

p+oJjsGEULNSptP5Sj1BM5w65hMjkqzahORd8ybIkqyJD0V/608c1tYuKIvDLUIa
RQ9jQ6+EwbyMFjlMa6xuEnxOx4sez001hd3NsLO7p00XoTqAvi9zwUBII+
nPphP6Zr0P4icvODpmhlmRILgSBsUf1H/3VN1lNXjo4LTa
GxLqW3VSg9iV9yFq4VMWqsRF

Попытки быстрого поиска решения

выдали кучу неработающих примеров

показали, что задача выходит за рамки привычной верстки layout’ов и написания Presenter’ов и требует изучения доков и чтения мануалов. Отличная возможность изучить что-то новое и обогатить свой опыт.

Но для начала, давайте разберемся, что же это такое — шифрование и зачем оно вообще нужно.

При переходе на новый телефон Вы переносите данные вручную или предпочитаете более эффективный способ? С помощью нашего программного обеспечения данные легко переносить. MobileTrans может передавать данные между двумя смартфонами всего за один щелчок мыши, независимо от платформы – Android, iOS или WinPhone.

Посмотрите наш видеоурок:

Давайте узнаем подробнее как использовать MobileTrans на компьютере:

Шаг 1. Откройте функцию передачи по телефону

mobiletrans

Шаг 2. Подключите оба телефона к компьютеру

Убедитесь, что оба телефона подключены к программе MobileTrans. Вы можете нажать кнопку «Поменять», чтобы переключить исходный и целевой телефоны. Данные будут перенесены с исходного телефона на целевой телефон. Вот пример переноса данных телефона на iOS и Android:

mobiletrans

Шаг 3. Выберите нужные типы файлов и начните передачу

  • Выберите типы файлов, которые Вы хотите перенести, и нажмите кнопку «Пуск». Начнется передача. Не отключайте телефон во время передачи данных.
  • Пожалуйста, отметьте галочкой опцию «Стереть данные перед копированием», если Вы хотите удалить существующие данные на целевом телефоне.
  • mobiletrans

    Перенос завершится через несколько минут. Просмотрите данные на целевом телефоне и проверьте, все ли выбранные файлы переданы на устройство.

    mobiletrans

    Содержание статьи

    Android — это система, которая при выполнении ряда условий и грамотном использовании могла бы стать достаточно безопасной. В реальном же мире все портят производители. Сегодня мы рассмотрим защитные механизмы Android, призванные обеспечивать доверенную загрузку и охранять твои данные от злоумышленников, — а также изучим ошибки и не совсем ошибки производителей LG, Motorola и Samsung, сводящие пользу от этих механизмов на нет.

    В предыдущем номере Евгений Зобнин опубликовал статью, продолжающую бесконечную дискуссию о безопасности мобильных операционных систем. По утверждению Евгения, «чистый» Android задумывался как достаточно безопасная система, а количество найденных в самой системе уязвимостей вполне сравнимо с числом уязвимостей ближайшего конкурента — Apple iOS.

    Сегодня мы разберемся, о каких именно механизмах безопасности идет речь, и попробуем натянуть «сферический Android в вакууме» на глобус реального мира, представленный устройствами таких производителей, как Samsung, LG и Motorola (Lenovo).

    Помимо технических, мы рассмотрим и политические аспекты защиты твоей информации в реальных устройствах. Если Apple не постеснялась судиться с государством за право не разрабатывать версию системы, которая могла бы использоваться спецслужбами для доступа к твоим данным, то как с этим обстоят дела у ближайшего конкурента — компании Samsung? (Спойлер: с точностью до наоборот.)

    Но начнем мы все же с технологий.

    Математическая основа

    вспоминания

    изучения математической основы, воспользуемся материалом из документации к алгоритму ADVANCED ENCRYPTION STANDARD, а также этим хорошим материалом на русском языке: Общее описание криптоалгоритма AES

    b_7 · x^7 + b_6 · x^6 + b_5 · x^5 + b_4 · x^4 + b_3 · x^3 + b_2 · x^2 + b_1 · x + b_0

    Операции в поле выполняются по модулю m(x). Всего в поле GF(2^8) насчитывается 2^8 = 256 многочленов.

    Основные математические операции в поле GF(2^8)

    1. Сложение байт можно выполнить любым из трех способов:
      • представить байты битовыми многочленами и сложить их по обычному правилу суммирования многочленов с последующим приведением коэффициентов суммы по модулю 2 (операция XOR над коэффициентами);
      • суммировать по модулю 2 соответствующие биты в байтах;
      • сложить байты в шестнадцатеричной системе исчисления.
    2. Умножение байт выполняется с помощью представления их
      многочленами и перемножения по обычным алгебраическим правилам.
      Полученное произведение необходимо привести по модулю многочлена m(x) = x^8 + x^4 + x^3 + x + 1 (результат приведения равен остатку от деления произведения на m(x))
    3. Для любого ненулевого битового многочлена b(x) в поле GF(2^8)
      существует многочлен b^-1(x), обратный к нему по
      умножению, т.е. b(x) · b^-1(x) = 1 mod m(x)

    Многочлены с коэффициентами, принадлежащими полю GF(2^8)
    Многочлены третьей степени с коэффициентами из конечного
    поля a_i ∈ GF(2^8) имеют вид: a(x) = a_3 · x^3 + a_2 · x^2 + a_1 · x + a_0 (1)

    Для изучения арифметики рассматриваемых многочленов введем дополнительно многочлен b(x) = b_3 · x^3 + b_2 · x^2 + b_1 · x + b_0, где b_i ∈ GF(2^8). Тогда

    1. Сложение
      a(x) + b(x) = (a_3 ⊕ b_3) x^3 + (a_2 ⊕ b_2) x^2 + (a_1 ⊕ b_1) x + (a_0 ⊕ b_0)
    2. Умножение
      Для представления результата четырехбайтовым словом, берется результат по модулю многочлена степени не более 4. Авторы шифра выбрали для этой цели многочлен x^4+1, для которого справедливо x_i mod(x^4 + 1) ≡ x_i mod 4. Дальнейшее приведение по модулю x^4+1 позволяет получить результат в виде:

      d(x) = a(x) · b(x) = d_3 · x^3 + d_2 · x^2 + d_1 · x + d_0

    Google Аккаунт

    Для того чтобы все заработало, вам категорически необходимо иметь Google аккаунт подключенный в настройках Android!

    На старом телефоне посмотрите есть ли такой:

    На новом телефоне Android при первом запуске введите этот же аккаунт!

    Перенос данных через Google

    Сервис без проблем перенесет ваши заметки, журнал звонков, контакты, музыку, фото и видео, историю поиска на новый телефон.

    Как перекинуть данные через Google-аккаунт:

    1. В «Настройках» старого устройства выберите раздел «Аккаунты»
    2. Введите ваш гугл-аккаунт и щелкните «Синхронизация». Рядом с материалами должны стоять галочки, чтобы они загрузились на новое устройство
    3. Добавьте Google-аккаунт на новый телефон.
    4. Выберите «Еще» и далее кликните «Синхронизировать».

    Теперь желаемые файлы и информация отобразятся на новом Android-устройстве. Длительность операции в среднем занимает в среднем от 5 до 10 минут.

    У пользователя обязательно должна быть учетная запись Google. Если она отсутствует, зарегистрируйте аккаунт на сервисе Google:

    • Укажите ваше ФИО;
    • Придумайте наименование почты и пароль;

    После регистрации можно в несколько кликов скопировать всю информацию с одного смартфона на другой.

    Как перенести данные на Samsung с Android-смартфона

    Если ваш новый телефон от Samsung, значит на нем поддерживается специальное приложение Smart Smitch, доступное для загрузки из Google Play. 

    При открытии Smart Smitch на телефоне, пользователю предлагается 3 варианта передачи данных: беспроводная связь, USB-кабель и внешнее хранилище. Разберем наиболее простой – первый.

    Для подключения беспроводным способом необходимо:

    ·         Запустить программу на новом Samsung. 

    ·         Далее выбрать «Беспроводная связь»> «Получить»> «Android»;

    ·         Установить и открыть Smart Switch на старом устройстве;

    ·         Выбрать «Беспроводную связь», указать необходимые данные и нажать «Отправить». 

    С телефона Huawei на Android-смартфон

    Подобно Samsung, китайский производитель Huawei создал специальную программу «Phone Clone», чтобы быстро переносить материалы между смартфонами.

    2.    Откройте «Phone Clone» на новом телефоне;

    3.    Нажмите «Это новый телефон (отправка)», чтобы активировать WiFi-соединение;

    4.    Откройте приложение со старого телефона;

    5.    Кликните «Это старый телефон». В открывшемся окошке обнаружения нового устройства введите пароль от WiFi-сети и подсоединитесь к новому телефону.

    6.    Укажите информацию для переноса на новый телефон и дождитесь завершения операции.

    Перенос данных вручную

    Для загрузки материалов со старых моделей Android-телефонов, вышеперечисленные варианты могут не подойти. У аппарата не будет возможности для их установки.

    В таком случае данные можно перекинуть устаревшими, но не менее надежными способами:

    Через USB-кабель

    Подходящий вариант для тех, кто боится, что персональные данные могут попасть в Сеть.

    • Подключите старый телефон к компьютеру
    • Выберите на телефоне раздел «Передача файлов»
    • Скопируйте на компьютер необходимую информацию (контакты, фото и видео, файлы)
    • Отсоедините старое устройство, чтобы подключить новое
    • Перенесите скопированные материалы

    Через карту памяти Micro SD

    • Откройте на старом смартфоне «Проводник»;
    • Выберите файлы для переноса
    • Кликните «Копирование на карту памяти»
    • Извлеките Micro SD и вставьте в новый телефон.

    Через Bluetooth/ NFC

    • На обоих гаджетах включите Bluetooth или NFC в разделе «Беспроводные сети»
    • Активируйте Android Beam
    • Поставьте устройства на коротком расстоянии друг от друга
    • На старом телефоне укажите необходимые для переноса файлы и нажмите «Передать».

    Этот вариант подходит для передачи фотографий, видеозаписей, музыки и много другого.

    Обратите внимание, что Bluetooth не может передавать текстовые сообщения, контакты, историю вызовов или приложения.

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

    Android и доступ к данным

    Как я уже описывал в одной из статей, у безопасности мобильных устройств множество аспектов. Здесь и безопасность хранения данных, и устойчивость к взлому с помощью физических атак, и защита от кражи, и разнообразные песочницы для приложений, ограничивающие их возможность незаметно следить за тобой, собирать и передавать информацию, и многое другое. Сегодня мы остановимся только на одном аспекте, а именно — устойчивости устройств к физическим атакам, с помощью которых злоумышленник, спецслужбы или органы охраны правопорядка могут попытаться извлечь из него твои данные.

    С каждым поколением устройств и с каждой новой версией мобильных ОС смартфоны становятся все более безопасными. И это не иллюзия: и Apple, и Google прикладывают все усилия, чтобы свести к минимуму возможности неавторизованного доступа к информации. Разумеется, все их действия совершаются в рамках ограничений, заданных как самой платформой, так и конкретными устройствами на ее основе.

    Давай рассмотрим некоторые из этих механизмов и то, как они способствуют защите от несанкционированного доступа.

    Перенос приложений

    Для того чтобы перенести приложения, то если вы не успели уйти со страницы «Приветствия» где происходит первоначальная настройка телефона, то после ввода аккаунта, вам будет предложено выбрать ваш старый телефон и восстановить приложения.

    Если вы уже попали на рабочий стол, то найти ранее установленные приложения вы сможете найти в магазине Google Play в разделе «Мои приложения и игры», вкладка «Библиотека».

    Перенос СМС сообщений и журнала звонков

    Для переноса СМС сообщений и списка вызовов воспользуйтесь приложением sms backup & restore, которое нужно установить из PlayMarket на оба смартфона. После установки запустите приложение на старом телефоне и нажмите на кнопку «Создать бэкап». Далее потребуется выбрать место сохранения файла архива. Можно сохранить его на карту памяти, затем переставить саму карту в новый телефон или сохранить файл на телефоне и отправить его с помощью электронной почты.

    :/>  50 часто используемых FTP-команд Linux для новичков

    Запустите приложение sms backup & restore на новом телефоне и нажмите на кнопку «Восстановить». В большинстве случаев приложение автоматически находит файл с архивом. Если этого не произошло, то придется указать его местоположение вручную.

    Инструменты

    • SPURV — изолированное окружение для запуска Android-приложений в дистрибутивах Linux;
    • AZM — онлайн ARM-дизассемблер, поддерживающий большинство 32-битных инструкций ARM и 16-битных инструкций Thumb;
    • frida-android-helper — скрипт для автоматического скачивания, установки и запуска последней версии Frida на рутованном устройстве;
    • frida-android-libbinder — скрипт Frida для сниффинга данных, проходящих через IPC Binder (подробная статья о скрипте);
    • pure-python-adb — реализация клиента ADB на Python;
    • generate.py — скрипт для автоматического создания новой активности и всех необходимых для нее файлов;
    • Vulnode-DB — очередная база уязвимостей.

    Оставшиеся данные

    Документы, архивы и другие данные находящиеся на карте памяти или внутренней памяти можно перенести по кабелю USB с помощью компьютера.

    У вас еще остались дополнительные вопросы? Задавайте их в комментариях, рассказывайте о том, что у вас получилось или наоборот!

    Вот и все! Оставайтесь вместе с сайтом Android +1, дальше будет еще интересней! Больше статей и инструкций читайте в разделе Статьи и Хаки Android.

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

    Уберегаем Android

    Android посредством функции «Зашифровать телефон» позволяет полностью зашифровать устройство ценой снижения быстродействия
    Android посредством функции «Зашифровать телефон» позволяет полностью зашифровать устройство ценой снижения быстродействия

    Если забыть о полном шифровании, защитить свои данные на Android сложнее, чем под iOS. В любом случае следует соблюдать главное правило: не доверяйте резервную копию Google.

    Как зашифровать данные на мобильных устройствах и предотвратить кражу данныхУтилита сделает резервные копии почти с любого устройства на базе Android. Архивирование удобно провести даже по Wi-Fi.

    Параметры шифрования

    Ну что есть AES и вектор инициализации стало понятно. Теперь попытаемся понять и остальные слова в строке AES/CBC/PKCS5Padding

    Другой параметр PKCS5Padding, указывает на то, каким образом должны обрабатываться неполные блоки. При использовании одного из общих алгоритмов заполнения, нужно включить размер блока в зашифрованные данные, гарантируя то, что когда вы попытаетесь расшифровать зашифрованное сообщение, вы получите нужное количество байт.

    Для работоспособности всех параметров шифрования AES, каждая реализация платформы Java должна поддерживать следующие стандартные алгоритмы шифрования с ключевыми размерами (в скобках):

    Standard Cipher transformations

    • AES/CBC/NoPadding (128)
    • AES/CBC/PKCS5Padding (128)
    • AES/ECB/NoPadding (128)
    • AES/ECB/PKCS5Padding (128)
    • DES/CBC/NoPadding (56)
    • DES/CBC/PKCS5Padding (56)
    • DES/ECB/NoPadding (56)
    • DES/ECB/PKCS5Padding (56)
    • DESede/CBC/NoPadding (168)
    • DESede/CBC/PKCS5Padding (168)
    • DESede/ECB/NoPadding (168)
    • DESede/ECB/PKCS5Padding (168)
    • RSA/ECB/PKCS1Padding (1024, 2048)
    • RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
    • RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)

    Библиотеки

    • DiscreteSlider — анимированный слайдер, показывающий текущее значение;
    • Pager — библиотека для интерактивного переключения между фрагментами;
    • StreamingAndroidLogger — логгер со встроенным веб-сервером и возможностью создать несколько независимых каналов логов;
    • Scarlet — Retrofit-подобный клиент WebSockets, разработанный командой Tinder;
    • osslib-android — экран, показывающий используемые приложением библиотеки;
    • ThreeTenABP — бэкпорт пакета java.time из Java 8 для Android;
    • Needs — диалог, наглядно показывающий, какие разрешения и для чего нужны приложению;
    • MaterialBanner — баннер в верхней части экрана приложения в стиле Material Design;
    • Pulkovo — библиотека для измерения времени исполнения методов, блоков кода и цепочек RxJava;
    • Calc — простая библиотека для вычисления математических выражений.

    Вектор инициализации

    Initialization vector (IV) — вектор инициализации, представляет собой произвольное число, которое может быть использовано вместе с секретным ключом для шифрования данных.

    Использование IV предотвращает повторение шифрования данных, что делает процесс взлома более трудным для хакера с помощью атаки по словарю, в попытках найти шаблоны и сломать шифр. Например, последовательность может появиться два раза и более в теле сообщения. Если повторяются последовательности в зашифрованных данных, злоумышленник может предположить, что соответствующие последовательности в сообщении также были идентичны. IV предотвращает появление соответствующих повторяющихся последовательностей символов в зашифрованном тексте.

    Насколько опасны хакерские телефоны

    В таких сериалах, как «Мистер Робот», главный герой пользуется особым смартфоном и утилитой для копирования SIM-карты собеседника. Такие приемы постоянно показывают по телевизору, но возможно ли реализовать это в реальности?

    Для Йоланды Смит, ведущего разработчика в компании Pwnie Express, копирование SIM-карты телефона — сценарий отнюдь не фантастический. Pwnie, среди прочего, занимается производством смартфона Pentesting (pwnieexpress.com), который может прослушивать мобильные сети. Подобное устройство использует и главный герой в «Мистере Роботе».

    Как зашифровать данные на мобильных устройствах и предотвратить кражу данныхМежду прочим, этот хакерский телефон можно приобрести абсолютно легально, чтобы, к примеру, отслеживать сетевой трафик. Цена вопроса —
    примерно 65 000 рублей. Для взлома шифрования, однако, потребуется
    физический доступ к SIM-карте или специальное устройство Stingray Box. Оно входит в инвентарь органов власти и секретных служб для наблюдения за мобильными телефонами.

    Смит поясняет, как с его помощью в теории можно клонировать SIM-карту: через обнаруженную уязвимость в системе мобильных сетей SS7 оно переводит все звонки через прокси. Это позво­ляет прослушать любые разговоры. Чтобы защитить себя, пользователи должны перейти на комплексное шифрование.

    Перенос музыки, фотографий и прочих файлов

    Вот мы и добрались до переноса медиаконтента и персональных файлов. Если в новый телефон будет установлена карта памяти со старого, что часто бывает, то достаточно скопировать нужные файлы из памяти телефона на карту памяти.

    В качестве альтернативы можно воспользоваться Google диском или скопировать файлы со старого телефона на компьютер, а затем на новый телефон. В этом вам поможет руководство как передать файл с телефона на компьютер.

    Блокировка загрузчика

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

    В Android загрузчик (bootloader) — это первый код, который загружается со встроенного в телефон накопителя. Именно загрузчик содержит механизмы, с помощью которых устройство может проверить цифровую подпись и целостность загрузочного раздела, и именно загрузчик несет ответственность за загрузку телефона в систему или один из вспомогательных режимов fastboot или recovery.

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

    Итак, загрузчик запускается прежде всех остальных компонентов операционной системы. Он проверяет целостность ядра, а также — если загрузчик заблокирован — аутентичность его цифровой подписи. (Разблокированный загрузчик все равно проверяет целостность и цифровую подпись ядра; просто подписать ядро можно будет не только производителю, но и сторонним разработчикам.) Если следующий компонент загрузки не проходит проверку целостности или безопасности, загрузка прервется, а пользователю будет выведено соответствующее уведомление (особенно жестко этот момент контролируется в версиях Android начиная с 7.0).

    Если загрузчик заблокирован, пользователь не сможет вносить изменения в системные и загрузочные разделы, а также не сможет загрузить устройство командой fastboot boot xxx.img с помощью неподписанного образа (например, в стороннее recovery — TWRP и подобные).

    Если же загрузчик разблокирован, то тебе будет доступно большинство команд из арсенала fastboot. В частности, ты сможешь загрузить устройство с использованием стороннего образа, модифицировать ядро системы или системный раздел. Именно поэтому разблокирование загрузчика — первое, что проделывают со своими устройствами разработчики и хакеры.

    Казалось бы, разблокировка загрузчика — очевидный шаг для полицейского, который хочет покопаться в твоем телефоне. Но так может показаться только на первый взгляд. Во-первых, далеко не все производители позволяют разблокировать загрузчик, а те, которые позволяют, разрешают разблокировку не для каждой модели и не для каждой операторской версии. Некоторые производители предоставляют возможность официально разблокировать загрузчик только после запроса специального кода с их сайта, а некоторые (например, на устройствах линеек Nexus и Pixel, Nextbit Robin) — одной командой в fastboot.

    Тем не менее использовать эту процедуру для извлечения информации не удастся: при разблокировании загрузчика уничтожаются криптографические ключи, с помощью которых зашифрован раздел пользовательских данных, и происходит сброс до заводских настроек. Не хочешь сбрасывать? Зашифрованный раздел данных ты сможешь скопировать, но расшифровать его не удастся никакими средствами.

    Блокировка загрузчика в iOS

    К слову, штатной разблокировки загрузчика для устройств Apple не предусмотрено вовсе, а немногочисленные эксплоиты зорко стерегутся разработчиками: их поиск может длиться годами, а закрыть обнаруженную уязвимость для Apple — дело одной-двух недель.

    Немного теории об AES шифровании

    Advanced Encryption Standard (AES) — симметричный алгоритм блочного шифрования, принятый правительством США на основе результатов проведенного конкурса в качестве стандарта шифрования и заменивший собой менее надежный алгоритм Data Encryption Standard (DES). Утвержденный алгоритм в качестве единого стандарта шифрования стал повсеместно применяться для защиты электронных данных.

    Основу алгоритма составляют замены, подстановки и линейные преобразования, каждое из которых выполняется блоками по 128 бит (цифры со значениями от 0 или 1), являющихся основой структуры входных и выходных данных, поэтому он и носит называние блочного шифра. Повторение операций происходит неоднократно и в процессе каждой итерации (раунда) вычисляется уникальный ключ на основе ключа шифрования и встраивается в дальнейшие вычисления.

    Криптографический ключ для алгоритма AES представляет собой последовательность из 128, 192 или 256 бит. Другие параметры входных и выходных данных и криптографического ключа не допускается стандартом AES.

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

    Данный подход обеспечивает высокую надежность алгоритма, в которой можно убедиться, рассмотрев следующий несложный пример:

    Пример расчета времени на взлом шифротекста

    Таблица 1: Зависимость количества комбинаций от длины ключа

    Самый быстрый суперкомпьютер: 10,51 ПетаФлопс = 10,51 х 10^15 Флопс (операций с плавающей точкой в секунду)

    Пусть примерное количество операций в секунду, необходимых для проверки комбинации оптимистично будет: 1000

    Количество проверок комбинации в секунду = (10,51 х 10^15) / 1000 = 10,51 х 10^12

    Количество секунд в течение одного года = 365 х 24 х 60 х 60 = 31536000

    По материалам: How secure is AES against brute force attacks?

    Подробное описание алгоритма на английском языке: ADVANCED ENCRYPTION STANDARD
    Также можно почитать эту замечательную статью: Как устроен AES

    Защищаем iOS вашего мобильного от злоумышленников

    Клиенты Apple могут не шифровать самостоятельно систему на своем устройстве. Более того, они и не должны этим заниматься, поскольку обо всем уже позаботилась корпорация.

    Защита данных. Для безопасности вашей iOS необходимо задать собственный буквенно-цифровой код. Только он защитит систему от хакеров на 100 процентов
    Защита данных. Для безопасности вашей iOS необходимо задать собственный буквенно-цифровой код. Только он защитит систему от хакеров на 100 процентов

    Несмотря на то, что так ваши данные окажутся в безопасности, у этого метода есть своя загвоздка: файлы, сохраненные на серверах Apple посредством резервного копирования iCloud, могут быть просмотрены правительством по соответствующему решению суда — даже без ввода кода.

    В iOS отключите резервное копирование и удалите копии с серверов Apple. В противном случае их смогут прочитать государственные органы
    В iOS отключите резервное копирование и удалите копии с серверов Apple. В противном случае их смогут прочитать государственные органы

    Выберите здесь нужную копию и нажмите на «Удалить копию». В создании локальной резервной копии поможет iTunes. Не забудьте защитить ее паролем. После этого к ней не будет доступа даже у Apple.

    :/>  Где поиск на компьютере и в [ Working ] 4 способа найти пустые папки Windows 10, 11

    Ларчик просто открывался

    Узнайте о новейших методах защиты конфиденциальных данных на устройствах Android при сохранении авторизованного доступа. В этом передовом исследовании мы изучаем критические уязвимости в смартфонах LG, Samsung и Motorola и раскрываем, как можно легко и эффективно стереть зашифрованные данные
    Разобравшись с теорией, можно приступать к реализации самого алгоритма расшифровки серверного сообщения.

    В отличии от стандартного набора JDK, для работы нам потребуется android.util.Base64  для преобразования строки:

    import android.util.Base64;
    import java.security.GeneralSecurityException;
    import javax.crypto.Cipher;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;
    public static String decrypt(String key, String iv, String encrypted) throws GeneralSecurityException { //Преобразование входных данных в массивы байт final byte[] keyBytes = key.getBytes(); final byte[] ivBytes = iv.getBytes(); final byte[] encryptedBytes = Base64.decode(encrypted, Base64.DEFAULT); //Инициализация и задание параметров расшифровки SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(ivBytes)); //Расшифровка final byte[] resultBytes = cipher.doFinal(encryptedBytes); return new String(resultBytes);
    }

    Стоит также принимать во внимание, что размер вектора инициализации должен быть 16 байт (128 — бит). Это связано с тем, что стандарт шифрования AES включает в себя три типа блочных шифров: AES — 128, AES — 192 и AES — 256. Каждый из этих шифров имеет 128 — битный размер блока, с размерами ключа 128, 192 и 256 бит соответственно и принимая во внимание то, что для всех типов блочного шифра, вектор инициализации такого же размера, как и размер блока шифра мы получаем, что вектор инициализации всегда имеет 128 — битный размер.

    В противном случае, даже если мы попытаемся использовать вектор другого размера, то шифротекст не будет расшифрован и мы получим следующее исключение:

    java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long

    Присоединяйся к сообществу «Xakep. ru»!

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку!
    Подробнее

    Переносим на новый телефон Контакты, Звонки, SMS, Фото / Видео

    Для того чтобы у вас были самые актуальные данные на вашем новом телефоне Android вам необходимо сделать вот что:

    На СТАРОМ телефоне перейдите в Google Play и убедитесь что у вас стоит новая версия приложения «Google Play Service»

    На СТАРОМ телефоне зайдите в настройки Andro />

    Нажмите кнопку «Начать копирование», после чего вам остается лишь немного подождать окончания создания резервной копии данных на Android!

    Теперь при после того как вы введете Google аккаунт на НОВОМ телефоне у вас перенестись все основные данные.

    Почитать

    Как Android обеспечивает безопасность

    The Android Platform Security Model — написанный сотрудниками Google вайтпейпер, посвященный теории и практике реализации подсистем безопасности в Android. В документе много воды, но есть и хоть и не новая, но полезная новичкам информация. Наиболее интересные моменты:

    • Android использует три вида аутентификации (проще говоря: метода разблокировки экрана) с разным уровнем надежности и, соответственно, уровнем доступа: 1) пароль или пин-код — считается наиболее надежным и поэтому дает полный контроль над устройством без всяких ограничений; 2) отпечаток пальца или снимок лица — менее надежный, поэтому система запрашивает пароль после каждой перезагрузки телефона, а также через каждые 72 часа; 3) аутентификация по местоположению или близости определенного Bluetooth-устройства — наименее надежный метод, поэтому на него накладываются те же ограничения, что и на биометрический метод, плюс он не позволяет получить доступ к аутентификационным ключам Keymaster (например, тем, что используются для платежей), а принудительный запрос пароля происходит не через 72 часа, а уже через четыре.
    • Песочницы (изолированная среда исполнения) для приложений в Android реализованы с помощью запуска каждого приложения от имени созданного специально для него Linux-пользователя. Приложение имеет полный контроль над файлами своей песочницы (/data/data/имя_пакета), но не может получить доступ к файлам других приложений и многим системным файлам. Система также использует UID (идентификатор пользователя) для контроля полномочий приложения.
    • Контроль доступа на основе UID не распространяется на карты памяти и USB-накопители, так как зачастую они используют файловую систему FAT, которая не позволяет назначить права доступа к файлам. Чтобы решить эту проблему, Android использует виртуальную файловую систему (sdcardfs), которая подключается к каталогу /sdcard/Android. Приложения могут хранить данные внутри нее без опасения, что другие приложения получат к ним доступ. Также Android позволяет подключить карту памяти в режиме Adoptable Storage, когда SD-карта форматируется в зашифрованную ФС ext4 и становится частью внутреннего хранилища данных.
    • Единственный способ покинуть песочницу — получить права root. В Linux пользователь root имеет неограниченный доступ к файловой системе (ядро отключает любые проверки доступа для этого пользователя).
    • Для защиты ключей шифрования/аутентификации Android и приложения могут использовать Keymaster. Это подсистема, позволяющая хранить данные в TEE (Trusted Execution Environment), специальном микрокомпьютере внутри SoC, к которому имеет доступ только система. TEE позволяет защитить данные даже в том случае, если злоумышленник получил права root. Начиная с девятой версии Android также поддерживает StrongBox, выделенный чип TEE, разработанный самой Google. Он позволяет защититься от атак класса Rowhammer.
    • Для защиты от эксплуатации уязвимостей в системных компонентах Android использует SELinux, подсистему ядра Linux, позволяющую более тонко управлять правами доступа, а также контролировать доступ процессов к системным вызовам. К примеру, обнаружив в одном из системных компонентов уязвимость, взломщик может попытаться принудить этот компонент выполнить системный вызов exec для запуска root shell, но, если правила SELinux запрещают это делать данному компоненту, вызов будет отклонен.
    • Начиная с седьмой версии Android способен гарантировать, что ни операционная система, ни загрузчик не были скомпрометированы. Такая проверка называется Verified Boot и выполняется на этапе загрузки: сначала загрузчик сверяет контрольную сумму раздела boot, затем один из следующих компонентов загрузки сверяет контрольные суммы файлов в разделе system. Тот же механизм используется для защиты от отката на предыдущую версию прошивки, которая может содержать уязвимости. Производители вольны сами выбирать, как должна повести себя система в случае обнаружения нарушения: вывести на экран предупреждающее сообщение или прекратить загрузку.

    Как работают атаки класса Cloak & Dagger

    Атака использует разрешение SYSTEM_ALERT_WINDOW, которое приложения из Google Play получают автоматически. SYSTEM_ALERT_WINDOW позволяет выводить элементы интерфейса поверх других приложений, то есть реализовать такие вещи, как плавающие окна, меню, панели управления. Создатели вирусов быстро смекнули, что эту возможность можно использовать для перекрытия текущего окна на экране и обмана пользователя, поэтому с версией Android 5 Google выкатила защиту, которая проверяет, не был ли перекрыт какой-либо опасный для включения элемент интерфейса оверлеем, и отказывается его включить, если это так. Поэтому Cloak & Dagger вместо одного оверлея на весь экран создает несколько небольших и выкладывает их вокруг элемента управления, так что в результате защита не срабатывает.

    Обход защиты на включение AccessibilityService с помощью трех-четырех оверлеев
    Обход защиты на включение AccessibilityService с помощью трех-четырех оверлеев

    Атака работает на Android версий 4.4.4–7.1.2, исходный код доступен.

    В дополнение можно отметить еще одну статью на смежную тему: Android Toast Overlay Attack: “Cloak and Dagger” with No Permissions. Ее авторы пошли еще дальше и реализовали ту же атаку вообще без использования разрешения SYSTEM_ALERT_WINDOW. Вместо него они засунули все оверлеи в toast-сообщение, то самое, которое позволяет выводить в нижней части экрана информационные сообщения. Как оказалось, такие сообщения тоже представляют собой полноценные полноэкранные окна, большая часть которых прозрачна. И у приложения есть доступ к этому окну и возможность его изменять.

    Как получить доступ к зашифрованной карте памяти

    Recovering data from a failing Android adoptable storage — статья о том, как восстановить данные с карты памяти, отформатированной с помощью механизма Adoptable Storage. В отличие от обычного подключения SD-карты, Adoptable Storage создает на карте памяти зашифрованный том, форматирует его в файловую систему ext4, а затем подключает ее к основному хранилищу данных так, что на нее можно сохранять не только фотки с пляжа, но и приложения, их данные и любую другую информацию, которая обычно хранится только во внутренней памяти устройства. Другими словами, Adoptable Storage позволяет расширить встроенную память устройства.

    Но есть одна, а точнее две смежные проблемы: 1) если вставить карту памяти в другой телефон — он ее не увидит из-за отсутствия ключа для расшифровки данных; 2) если что-то пойдет не так (например, карта памяти начнет сбоить), восстановить данные с нее не получится, точнее получится, но через одно место. Как через это место восстанавливать данные, описано в статье.

    Для начала на телефоне необходимо получить права root. Затем подключить карту памяти к Linux-машине (macOS тоже должна подойти, но действия описаны именно для Linux) и снять ее образ. Обычный dd в этом случае не подойдет, так как, если карта памяти начала сбоить, он, скорее всего, вывалится с ошибкой Input/output error. Выручит ddrescue, который предназначен как раз для таких случаев:

    $ sudo ddrescue -f -n /dev/mmcblk0 herolte_sd_recovery_fulldisk.img herolte_sd_recovery_fulldisk.log

    Далее необходимо извлечь из памяти устройства ключ шифрования (на устройствах с активным модулем TEE такой трюк, скорее всего, не пройдет):

    $ adb root
    > adb pull /data/misc/vold
    /data/misc/vold/: 1 file pulled. 0.0 MB/s (16 bytes in 0.013s)
    > ls vold
    bench expand_ffffffffffffffffffffffffffffffff.key
    > hexdump -e '16/1 "%02x" "\n"' vold/expand_ffffffffffffffffffffffffffffffff.key
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%

    Используем полученный ключ, чтобы смонтировать файловую систему:

    $ sudo losetup --show --find -P herolte_sd_recovery_fulldisk.img
    $ sudo dmsetup create crypt1 --table "0 `blockdev --getsize /dev/loop0p2` crypt aes-cbc-essiv:sha256 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 0 /dev/loop0p2 0"
    $ mkdir mnt
    $ sudo mount /dev/mapper/crypt1 mnt
    $ ls mnt
    app local lost+found media misc user user_de

    Это все. Далее автор рассказывает, как залить файлы на другую карту памяти и изменить размер файловой системы. Про это можно прочитать в оригинальной статье. Также стоит отметить, что если карты памяти одинакового объема, то можно вообще не заморачиваться с подключением файловой системы на компе и копированием ключа, а просто залить полученный на первом шаге образ на новую карту памяти с помощью того же ddrescue:

    $ sudo ddrescue -f -n herolte_sd_recovery_fulldisk.img /dev/mmcblk0 herolte_sd_recovery_fulldisk.log

    Как обойти ограничения на доступ к внутренним библиотекам и методам

    Android Runtime Restrictions Bypass — статья о том, как обойти ограничения на доступ к внутренним библиотекам и методам Android.

    Начиная с Android 7 Google ввела ограничения на прямую загрузку нативных системных библиотек (например, /system/lib/libart.so). Позже, уже в релизе Android 9, появилось ограничение на доступ к определенным скрытым методам, которые раньше можно было вызывать с помощью рефлексии. Как оказалось, эти механизмы достаточно просто обойти.

    Принцип работы механизма, ограничивающего загрузку библиотек, построен на пространствах имен. Если JNI-библиотека приложения попытается загрузить библиотеку, которая расположена за пределами каталогов /data, /mnt/expand или в песочнице самого приложения, оно будет завершено с такой ошибкой:

    library "/system/lib64/libart.so" ("/system/lib64/libart.so") needed or dlopened by
    /data/app/re.android.restrictions-yALrH==/lib/arm64/librestrictions-bypass.so
    is not accessible for the namespace: [name="classloader-namespace", ld_library_paths="",
    default_library_paths="/data/app/re.android.restrictions/...,
    permitted_paths="/data:/mnt/expand:/data/data/re.android.restrictions"]

    Проверка осуществляется в лоадере библиотек (/system/bin/linker). Он создает для каждой JNI-библиотеки приложения структуру soinfo, хранящую информацию о ней и пространствах имен, к которым она может получить доступ:

    struct soinfo { ... android_namespace_t* primary_namespace_; android_namespace_list_t secondary_namespaces_; ...
    };

    Все структуры soinfo размещены в мэпе g_soinfo_handles_map.

    Интересно здесь то, что g_soinfo_handles_map — это экспортированная статическая переменная. Поэтому с помощью символьной таблицы ELF можно найти базовый адрес /system/bin/linker, рассчитать адрес g_soinfo_handles_map JNI-библиотеки и изменить структуру soinfo, добавив нужные пути в доступное ей пространство имен:

    android_namespace_t* ns = get_primary_namespace(soinfo_ptr);
    ns->set_ld_library_paths({"/system/lib64", "/sytem/lib"});
    ns->set_isolated(false);

    После этого попытка загрузить библиотеку будет успешной:

    void Java_re_android_restrictions_MainActivity_openRestrict(...) { void* art_handle = dlopen("/system/lib64/libart.so", RTLD_NOW);
    }

    Ограничение доступа к внутренним методам Java API, предназначенным только для использования системными компонентами, реализовано иначе, а именно с помощью прямых проверок на доступ. Например, функция GetStaticMethodID, используемая для доступа к Java-методам из JNI-библиотеки, вызывает функцию FindMethodID, которая в том числе проверяет, доступен ли данный метод:

    static jmethodID FindMethodID(...) { ... if (... && ShouldBlockAccessToMember(method, soa.Self())) { ... }
    }

    Чтобы отключить проверку, мы должны перевести рантайм в режим «пропускать без вопросов» (EnforcementPolicy::kNoChecks), но для этого нам нужен доступ к самому рантайму:

    #include <runtime/runtime.h>
    art::Runtime* current = art::Runtime::Current();

    Однако в этом случае компилятор (а точнее, линковщик) будет вынужден импортировать символ art::Runtime::instance_ в JNI-библиотеку, то есть слинковать ее с libart.so. И здесь мы столкнемся с ограничением пространства имен, а предложенный ранее метод его обхода не сработает, так как мы не сможем изменить пространство имен раньше, чем в память загрузится libart.so.

    :/>  Power shell и selenium проще чем кажется

    Но есть другой способ получить доступ к рантайму. Дело в том, что метод JNI_OnLoad, который запускается при загрузке JNI-библиотеки, в качестве первого аргумента получает указатель на art::JavaVMExt, который имеет метод GetRuntime(). Так что все, что нам остается, — это получить доступ к рантайму и отключить проверку:

    static art::Runtime* my_runtime = nullptr
    jint JNI_OnLoad(JavaVM *vm, void *reserved) { my_runtime = reinterpret_cast<art::JavaVMExt*>(vm)->GetRuntime(); my_runtime->SetHiddenApiEnforcementPolicy(hiddenapi::EnforcementPolicy::kNoChecks); return JNI_VERSION_1_4;
    }

    Примечательно, что команда Android security team не считает описанные методы обхода нарушением безопасности (мол, не для безопасности они были придуманы), поэтому быстро дала согласие на обнародование информации и публикацию исходного кода PoC.

    Описание уязвимостей в Android Download Provider

    Multiple Vulnerabilities in Android’s Download Provider — статья исследователя, нашедшего три уязвимости в Android: CVE-2018-9468, CVE-2018-9493 и CVE-2018-9546. Все они затрагивают Download Content Provider, компонент, позволяющий любому приложению запустить загрузку файла из интернета так, чтобы пользователь видел уведомление с прогрессом загрузки.

    • CVE-2018-9468. Первая уязвимость заключается в том, что Download Content Provider позволяет увидеть любые другие загрузки, происходящие на устройстве, а не только свои собственные. Используя URL вида content://downloads/public_downloads/#, зловредное приложение может подобрать загрузку по номеру и, например, прочитать загруженный файл или подменить его сразу после загрузки. Причем это относится как к обновлениям ПО, так и к загрузкам из Google Play. Исходный код примера.
    • CVE-2018-9493. Вторая уязвимость — SQL-инъекция, позволяющая получить доступ к закрытым столбцам таблицы (например, CookieData). Исходный код примера.
    • CVE-2018-9546. Третья уязвимость позволяет извлечь HTTP-заголовки (могут включать аутентификационные данные и кукисы) для любой загрузки. Уязвимость использует тот же трюк, что и первая. Исходный код примера.

    Данные уязвимости были исправлены в сентябрьском и ноябрьском security-патчах.

    Перенос данных с IPhone на IPhone

    Для пользователей яблочных технологий доступно резервное копирование с помощью ICloud. Первым делом нужно авторизоваться в одном ICloud на обеих устройствах. Описанным ниже способом можно выполнить перенос следующих данных:

    • Контакты;
    • Почта;
    • Календарь;
    • Напоминания;
    • Пароли и закладки браузера;
    • Фотографии;

    Откройте настройки на IPhone, с которого будете переносить данные. В разделе ICloud активируйте переключатели напротив тех пунктов, которые хотите переносить. Здесь же нужно открыть пункт «Резервная копия» и нажать на кнопку «Создать резервную копию».

    На втором IPhone входим в тот же аккаунт и в настройках ICloud активируем нужные пункты.

    Перенос закладок и паролей, сохраненных в браузере

    Без сохраненных сайтов и паролей использовать новый смартфон будет не очень комфортно. Вся прелесть в том, что достаточно перейти в «Настройки» — «Аккаунты» нового телефона и войти в тот же Google аккаунт, что и на старом. В этом же разделе настроек нужно включить синхронизацию у обеих устройств. Все сохраненные пароли и закладки будут доступны на новом устройстве.

    Перенос контактов

    Начнем наш переезд с импорта контактов, поскольку эту процедуру придется проделать практически каждому пользователю.

    Синхронизация с помощью Google аккаунта

    Узнайте о новейших методах защиты конфиденциальных данных на устройствах Android при сохранении авторизованного доступа. В этом передовом исследовании мы изучаем критические уязвимости в смартфонах LG, Samsung и Motorola и раскрываем, как можно легко и эффективно стереть зашифрованные данные

    После подключения единого аккаунта нужно зайти в настройки и включить синхронизацию контактов. Оба телефона должны быть подключены к интернету. При таком переносе контакты привязываются к вашему google аккаунту, что имеет свои плюсы и минусы. Контакты останутся в телефоне при замене сим карты, но если вы отключите Google аккаунт, то потеряете все сохраненные номера, поэтому после успешной синхронизации рекомендуем скопировать контакты на сим карту или в память телефона.

    Перенос контактов через Bluetooth

    Сегодня практически невозможно встретить смартфон без Bluetooth модуля, и конечно его можно использовать для импорта контактов. Перед переносом можно просмотреть контакты и снять выделение с тех, которые вам явно не нужны.

    1. Включите Bluetooth на новом и старом телефоне.
    2. Убедитесь, что новый телефон обнаружил старый.
    3. Откройте «Контакты» старого телефона.
    4. Выделите все контакты.
    5. Найдите и откройте пункт «Импорт/экспорт» (Обмен, Поделиться).
    6. Выберите пункт, в котором встречается слово Bluetooth, название и описание отличается для разных моделей.
    7. Откроется список найденных устройств, выберите новый телефон.
    8. Подтвердите синхронизацию на втором устройстве.

    Копирование на сим карту или карту памяти

    В большинстве случаев сим карта и карта памяти мигрируют в новый телефон, этим можно воспользоваться для переноса контактов. Для переноса через сим карту просто скопируйте на неё все контакты.

    Для переноса с помощью карты памяти откройте контакты телефона «донора», и найдите пункт «Импорт / экспорт», иногда он может называться «Обмен» или «Поделится». Выберите все контакты и способ переноса — sd карта. Вставьте карту памяти в новое устройство и с помощью того же пункта выполните экспорт контактов.

    Перенос контактов с Android на IPhone

    Выполнить перенос контактов с Android на IOS так же просто, достаточно знать несколько нюансов.

    Способ 1: первый запуск

    Если у вас в руках новый IPhone, то выполнить перенос очень просто. На Android телефон установите и запустите приложение Move to iOS из PlayMarket. После включения IPphone выберите пункт «Перенести данные с Android». В результате вы увидите десятизначный код. Этот код нужно ввести в Move to iOS, затем следуйте инструкциям приложения.

    Это приложение позволит перенести не только контакты, но и другую информацию, вплоть до закладок браузера.

    Способ 2: Сервисы Google

    В случае с IPhone также можно выполнить экспорт контактов через Google аккаунт. На Android телефоне включаем синхронизацию контактов для нужного аккаунта как описано в начале этой статьи. На IPhone откройте настройки и в разделе «Почта, адреса, календари» выберите «Добавить учетную запись». Здесь нас интересует пункт «Учетная запись CardDAV», где и нужно указать данные Google аккаунта для синхронизации.

    Копирование контактов с IPhone на Android

    Пожалуй это самая сложная ситуация из рассмотренных сегодня, но всё же мы нашли простой способ. Воспользуемся приложением My Contacts Backup, которое нужно установить из App Store.

    1. Запустите приложение My Contacts Backup на IPhone и нажмите на кнопку Backup.
    2. Приложение создаст файл vCard, который нужно отправить на Andro >Перенос приложений

    На старом смартфоне уже установлены все необходимые приложения, и естественно искать и устанавливать каждое из них на новый телефон желания нет. На самом деле достаточно подключить к новому телефону тот же Google аккаунт, что используется в PlayMarket старого устройства.

    Откройте PlayMarket, на вкладке «Библиотека» перейдите к разделу «Мои приложения». В результате вы увидите список всех установленных на старом смартфоне приложений. Просто нажмите «Установить» напротив каждого из них.

    Защита от сброса к заводским настройкам

    Допустим, тебе каким-то образом удалось обойти блокировку загрузчика (что само по себе маловероятно) или в твои руки попал телефон с уже разблокированным загрузчиком. Теперь-то можно запустить TWRP и скопировать раздел данных? Скорее да, чем нет, но не всегда и не на всех устройствах. В Android предусмотрен дополнительный механизм защиты — как раз для таких случаев.

    Независимо от того, заблокирован или разблокирован загрузчик устройства, в большинстве моделей Samsung и Motorola есть еще одно неочевидное препятствие на пути доступа к информации.

    С выходом Android 5.1 разработчики Google добавили механизм, направленный на предотвращение доступа к данным и сброса устройства к заводским настройкам в случае его кражи. Основное предназначение защиты от сброса к заводским настройкам (Factory Reset Protection, FRP) не в том, чтобы защитить устройство от сброса как такового, а в том, чтобы сделать его бесполезным для злоумышленников, предотвратив возможность его активации и использования после сброса.

    При активированной защите FRP злоумышленник может удалить данные и сбросить устройство, но (по крайней мере в теории — на самом деле способов обойти эту защиту существует порядочно) воспользоваться им не сможет: система начальной настройки потребует ввести учетные данные того Google Account, который использовался перед сбросом устройства.

    FRP активируется автоматически во время настройки устройства при выполнении двух условий: 1) используется безопасный экран блокировки: устройство защищено PIN-кодом, паролем, паттерном или другим способом; 2) пользователь добавляет хотя бы одну учетную запись Google Account. Соответственно, при выключении безопасного экрана блокировки или при удалении учетной записи Google из настроек устройства защита FRP так же автоматически отключается.

    Итак, защита от сброса к заводским настройкам — отлично задуманная (но плохо реализованная) система. Но при чем тут она? Дело в том, что ряд производителей (в частности, Samsung и Motorola) пошли чуть дальше, реализовав дополнительный защитный механизм именно через систему FRP.

    Что произойдет, если злоумышленник загрузит устройство в стороннее recovery и попросту обнулит раздел frp? Или же установит прошивку без приложений Google, обойдя таким образом защиту от кражи? С разблокированным загрузчиком это вполне возможно.

    Именно для защиты от подобных сценариев используется дополнительная проверка. При активированной защите от сброса к заводским настройкам FRP устройство всегда будет вести себя так, будто его загрузчик заблокирован, — даже если была произведена процедура разблокировки. Загрузить неподписанный код (стороннее recovery или прошивку) не получится.

    Таким образом, даже если загрузчик смартфона разблокирован (напомним, большинство пользователей этого не делает), его все равно не удастся загрузить в стороннее recovery, если:

    • в устройстве до сброса была настроена учетная запись Google Account;
    • был настроен безопасный экран блокировки (пароль, паттерн и подобное).

    Совместно с защитой, предоставляемой блокировкой загрузчика, FRP способен вполне эффективно воспрепятствовать загрузке стороннего кода и извлечению данных.

    Извлекаем данные из устройств с заблокированным загрузчиком

    Итак, способ с официальной разблокировкой загрузчика нам не подходит: при разблокировании как криптографические ключи, так и сами данные уничтожаются. Даже в том маловероятном случае, если бы удалось разблокировать устройство без потери данных, механизм защиты от сброса к заводским настройкам может помешать запуску неподписанного загрузочного образа.

    Результат

    Как видно из реализации, решение оказалось достаточно простым и тривиальным в контексте задач подобного рода. Но тем не менее, иногда бывает очень полезно покопаться в доках и реализовать то, что встречается не так уж и часто в трудовых буднях Android разработчика.

    Для самых любознательных — под спойлером то, что было зашифровано в сообщении:

    ответ к задачке

    { "items": [ { "name": "star", "color": "green", "id": 21 }, { "name": "dog", "color": "brown", "id": 43 } ], "lucky_item_id": 43
    }