Android: извлекаем данные с зашифрованной SD-карты и получаем доступ к скрытым методам
Содержание статьи
Сегодня в выпуске: обзор систем безопасности Android, объяснение атак типа Cloak & Dagger, гайд по извлечению данных с зашифрованной карты памяти, обход ограничений на загрузку нативных библиотек и доступ к скрытым Java-методам, уязвимость в Android Download Provider. А также: несколько инструментов пентестера и подборка библиотек для программистов.
Почитать
Как Android обеспечивает безопасность
The Android Platform Security Model — написанный сотрудниками Google вайтпейпер, посвященный теории и практике реализации подсистем безопасности в Android. В документе много воды, но есть и хоть и не новая, но полезная новичкам информация. Наиболее интересные моменты:
Как работают атаки класса Cloak & Dagger
Cloak and Dagger — Mobile Malware Techniques Demystified — небольшая заметка о том, как работают атаки класса Cloak & Dagger. Мы писали об этом типе атак еще в 2017 году, но тогда рассмотрели только одну из них: кейлоггер, не требующий дополнительных прав в системе. Эта статья посвящена другой атаке, позволяющей заставить пользователя включить настройку доступа к AccessibilityService (позволяет перехватывать любые нажатия пользователя и нажимать кнопки интерфейса за него), замаскировав переключатель под нечто безобидное.
Атака использует разрешение SYSTEM_ALERT_WINDOW, которое приложения из Google Play получают автоматически. SYSTEM_ALERT_WINDOW позволяет выводить элементы интерфейса поверх других приложений, то есть реализовать такие вещи, как плавающие окна, меню, панели управления. Создатели вирусов быстро смекнули, что эту возможность можно использовать для перекрытия текущего окна на экране и обмана пользователя, поэтому с версией Android 5 Google выкатила защиту, которая проверяет, не был ли перекрыт какой-либо опасный для включения элемент интерфейса оверлеем, и отказывается его включить, если это так. Поэтому Cloak & Dagger вместо одного оверлея на весь экран создает несколько небольших и выкладывает их вокруг элемента управления, так что в результате защита не срабатывает.

Атака работает на 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, который предназначен как раз для таких случаев:
Далее необходимо извлечь из памяти устройства ключ шифрования (на устройствах с активным модулем TEE такой трюк, скорее всего, не пройдет):
Используем полученный ключ, чтобы смонтировать файловую систему:
Это все. Далее автор рассказывает, как залить файлы на другую карту памяти и изменить размер файловой системы. Про это можно прочитать в оригинальной статье. Также стоит отметить, что если карты памяти одинакового объема, то можно вообще не заморачиваться с подключением файловой системы на компе и копированием ключа, а просто залить полученный на первом шаге образ на новую карту памяти с помощью того же ddrescue:
Как обойти ограничения на доступ к внутренним библиотекам и методам
Android Runtime Restrictions Bypass — статья о том, как обойти ограничения на доступ к внутренним библиотекам и методам Android.
Начиная с Android 7 Google ввела ограничения на прямую загрузку нативных системных библиотек (например, /system/lib/libart.so ). Позже, уже в релизе Android 9, появилось ограничение на доступ к определенным скрытым методам, которые раньше можно было вызывать с помощью рефлексии. Как оказалось, эти механизмы достаточно просто обойти.
Проверка осуществляется в лоадере библиотек ( /system/bin/linker ), который создает для каждой JNI-библиотеки приложения структуру soinfo, которая хранит информацию о ней и пространствах имен, к которым она может получить доступ:
Все структуры soinfo размещены в мэпе g_soinfo_handles_map.
После этого попытка загрузить библиотеку будет успешной:
Ограничение доступа к внутренним методам Java API, предназначенным только для использования системными компонентами, реализовано иначе, а именно с помощью прямых проверок на доступ. Например, функция GetStaticMethodID, используемая для доступа к Java-методам из JNI-библиотеки, вызывает функцию FindMethodID, которая в том числе проверяет, доступен ли данный метод:
ShouldBlockAccessToMember() в конечном итоге вызывает метод Runtime::GetHiddenApiEnforcement(), который сообщает, стоит ли отклонить вызов или нет. При этом система может либо пропустить его без вопросов, либо вывести предупреждение, либо использовать черный и серый списки, которые содержат имена запрещенных к использованию методов.
Чтобы отключить проверку, мы должны перевести рантайм в режим «пропускать без вопросов» (EnforcementPolicy::kNoChecks), но для этого нам нужен доступ к самому рантайму:
Однако в этом случае компилятор (а точнее, линковщик) будет вынужден импортировать символ art::Runtime::instance_ в JNI-библиотеку, то есть слинковать ее с libart.so. И здесь мы столкнемся с ограничением пространства имен, а предложенный ранее метод его обхода не сработает, так как мы не сможем изменить пространство имен раньше, чем в память загрузится libart.so.
Но есть другой способ получить доступ к рантайму. Дело в том, что метод JNI_OnLoad, который запускается при загрузке JNI-библиотеки, в качестве первого аргумента получает указатель на art::JavaVMExt, который имеет метод GetRuntime(). Так что все, что нам остается, — это получить доступ к рантайму и отключить проверку:
Примечательно, что команда 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, компонент, позволяющий любому приложению запустить загрузку файла из интернета так, чтобы пользователь видел уведомление с прогрессом загрузки.
Данные уязвимости были исправлены в сентябрьском и ноябрьском security-патчах.
Как мне расшифровать мою SD-карту на другое устройство?
SD-карту, зашифрованную на устройстве Android, можно расшифровать на том же устройстве. Этим легко управлять, и вам просто нужно: Зайдите в Настройки> Экран блокировки и безопасность> Расшифровать SD-карту. Введите пароль, PIN-код или графический ключ.
Как мне расшифровать SD-карту, которая была зашифрована на другом телефоне?
Как расшифровать зашифрованную SD-карту
Как снять шифрование с SD-карты?
Устройство можно расшифровать, только выполнив сброс настроек до заводских.
Как расшифровать карту microSD после сброса настроек устройства, которое использовалось для ее шифрования?
Как разблокировать заблокированную карту памяти?
Решение 2. Разблокируйте SD-карту с помощью пароля
Как расшифровать устройство?
расшифровка на android
Просто введите 6-значный пароль, который вы недавно установили в разделе блокировки экрана >> ваше устройство / extsd должно быть расшифровано.
Что произойдет, если я расшифрую свою SD-карту?
После того, как карта Micro SD зашифрована, ее необходимо расшифровать на том же устройстве, прежде чем использовать ее с другим устройством. В противном случае сохраненные данные на карте будут потеряны. … С учетом сказанного, если вы правильно расшифруете с помощью того же устройства, данные не будут потеряны.
Как восстановить фотографии с зашифрованной SD-карты?
Действия по восстановлению данных с зашифрованной SD-карты после восстановления заводских настроек Android
Как узнать, зашифрована ли моя SD-карта?
Как проверить, зашифрована ли моя Android SD?
Что делает шифрование вашей SD-карты?
Шифрование — это средство получения данных и их упаковки на уровне, который невозможно открыть без надлежащих учетных данных.
Как я могу расшифровать свой телефон без потери данных?
Нашел способ расшифровать без потери всего
Сброс заводских настроек удаляет шифрование?
Шифрование не приводит к полному удалению файлов, но процесс восстановления заводских настроек избавляется от ключа шифрования. В результате устройство не может расшифровать файлы и, следовательно, чрезвычайно затрудняет восстановление данных. Когда устройство зашифровано, ключ дешифрования известен только текущей ОС.
Можно ли восстановить удаленные зашифрованные файлы?
Вы можете безопасно восстановить удаленные файлы из внутренней памяти телефона Android. Это связано с тем, что, когда файлы удаляются из внутреннего хранилища, они не удаляются навсегда. Но восстановить потерянные данные с телефона невозможно, если данные были перезаписаны по какой-либо причине.
Как разблокировать SD-карту в телефоне?
Шаги по разблокировке SD-карты на Android (шаги могут отличаться в зависимости от модели Android)
Как разблокировать SD-карту Sandisk?
РЕШЕНИЕ 1 — Разблокируйте карту памяти. На левой стороне SD-карты есть переключатель блокировки. Убедитесь, что переключатель блокировки сдвинут вверх (положение разблокировки). Вы не сможете изменить или удалить содержимое карты памяти, если она заблокирована.
Как починить заблокированную карту памяти камеры?
Когда эта вкладка находится в положении LOCK, сенсорный переключатель в камере сообщает камере, что запись на карту не должна производиться, т. Е. Карта заблокирована. Выньте SD-карту из камеры. Проверьте положение фиксатора и убедитесь, что он не находится в положении LOCK. Снова вставьте карту и попробуйте еще раз.
Как снять защиту записи с карты памяти?

Причин подобных неполадок может быть много, равно как и способов борьбы с ними. Иногда приходится перепробовать несколько вариантов, и в результате хотя бы один из них таки сработает.
Как установить защиту от записи на карту памяти
Предотвратить возможность осуществления записи на съемный накопитель, не оборудованный механической защитой, можно стандартными средствами Windows либо при помощи специальных утилит. Поскольку эффективнее всего выполнять подобные процедуры на компьютере, прежде всего необходимо подключить карту памяти к ПК через картридер.
Способ 1: изменение групповой политики
Для начала придется отформатировать флешку, сменив файловую систему на NTFS. Этот сотрет все данные, но позволит оперировать настройками безопасности. Далее нужно отыскать съемный накопитель в разделе «Мой компьютер», щелкнуть по нему правой кнопкой мыши и выбрать пункт «Свойства».
Перейдя на вкладку «Безопасность», следует выбрать «Все» в разделе «Группы и пользователи» и щелкнуть «Изменить». Теперь осталось снять все галочки, кроме пунктов «Чтение» и «Список содержимого папки», и нажать «Применить».
Такая настройка устанавливает запрет на запись, однако защита будет работать только при подключении накопителя к ПК на ОС Windows. Опытный пользователь сможет обойти подобную защиту, зато это поможет предотвратить попадание вирусов на флешку.
Способ 2: использование специализированных утилит
Существуют программы-обманки, имитирующие отсутствие свободного места на карте путем записи на носитель файлов с нулевым размером. При этом фактический размер таких программ составляет несколько килобайт. Работает способ максимально просто: пользователь скачивает крохотную утилиту USBDummyProtect или Flash Defender, копирует файл программы на флешку и запускает двойным щелчком мыши. В результате утилита создаст файл, занимающий абсолютно все свободное место на флешке, что и послужит защитой от записи.
Как снять защиту с зашифрованной карты microSD
Некоторые пользователи Android используют возможность расширения объема встроенного в смартфон хранилища за счет присоединения внешнего накопителя. При этом происходит форматирование и надежное шифрование microSD карты. В результате она становится неотъемлемой частью смартфона, но при этом абсолютно непригодной для использования на других устройствах.
Иногда, из-за программных сбоев карта с зашифрованным содержимым переключается в режим «Только чтение». В результате, при копировании файлов на флешку процесс прерывается с ошибкой «Файл не читается». Или смартфон выдает уведомление о том, что возникла ошибка расшифровки карты памяти. В некоторых случаях устройство не отображает файлы на зашифрованном носителе, либо вовсе перестает читать карту памяти.
Существует как минимум 2 способа решения всех вышеперечисленных проблем. Однако, чтобы вернуть работоспособность накопителя без потери зашифрованной информации, придется выполнить несколько последовательных действий.
По завершению процесса с флешки будет снято шифрование, и все пользовательские файлы будут вновь доступны для чтения и записи.
Но что делать, если был произведен сброс до заводских настроек (что приводит к потере ключа шифрования), либо смартфон неисправен, но при этом требуется извлечь зашифрованные файлы? При отсутствии доступа к телефону или к полному бекапу прошивки, изъять зашифрованные данные не получится. Увы, но в таком случае никакая мастерская не поможет.
Как убрать пароль с microSD
Информация относится исключительно к тем случаям, когда пароль на доступ к microSD карте был установлен через телефон Nokia. Если владелец не помнит пароль, для решения проблемы потребуется устройство на операционной системе Symbian, как бы странно это не звучало. С помощью большинства смартфонов Nokia можно снять пароль путем форматирования карты. Но есть пара нюансов:
Для форматирования необходимо открыть «Настройки» и перейти в раздел «Память». Появится всплывающее сообщение «Карта блокирована», после чего следует нажать «Функции» и выбрать пункт «Форматировать карту». В некоторых прошивках необходимо открыть «Файлы», вызвать контекстное меню карты памяти с помощью долгого тапа и нажать «Форматировать».
К сожалению, в некоторых моделях все же отсутствует возможность отформатировать карту без ввода пароля. К тому же, не у всех имеется доступ к старым смартфонам Nokia. Как вариант, можно подключить microSD к компьютеру и отформатировать карту памяти в ОС Windows. Но и тут есть нюанс: при подключении заблокированного накопителя к ПК или ноутбуку, карта не распознается системой, поскольку Symbian записывает пароль непосредственно в загрузочную область. Распознать и форматировать такой носитель сможет программа HP USB Disk Storage Format Tool.
Как снять защиту на запись с карты памяти
Иногда во время работы с накопителем (например, при попытке копирования или удаления данных) процесс прерывается с уведомлением «MicroSD Memory Card is Write Protected». Аналогичные ошибки могут появляться как на компьютере, так и при работе с другой техникой (смартфоны, цифровые камеры), а также с любыми форматами съемных накопителей.
Также бывает, что при попытке получить доступ к содержимому на внешнем носителе, система оповещает о том, что для продолжения использования диск следует отформатировать. А при попытке выполнить форматирование стандартными средствами выскакивает ошибка «Диск защищен от записи».
Если содержимое карты памяти представляет для пользователя ценность, не нужно торопиться: лучше поступательно испробовать простые варианты, а уж потом приступать к более кардинальным решениям.
Убираем механическую защиту
Прежде всего, владельцам SD-карт стоит исключить вариант с физической блокировкой (защитой от записи). Сбоку на корпусе накопителя может быть переключатель. Если он установлен в положение блокировки (напротив надписи Lock), достаточно передвинуть ползунок, и механическая защита будет снята. То же самое относится и к microSD-картам, подключаемым к ПК или ноутбуку через картридер формата «microSD на SD».
Программный ремонт флешки
Вирусы. Если ошибка «Диск защищен от записи» появляется исключительно на устройстве под Windows, возможно, на флешке вирус. Необходимо просканировать накопитель антивирусной программой на наличие вредителей и устранить найденные угрозы.
Инструмент Diskpart. Если вирусы не были обнаружены, можно попробовать исправить ошибку «Хранилище защищено от записи» через командную строку. Для ее запуска нажимаем Пуск, вбиваем в поисковую строку cmd и запускаем от имени администратора.
В открывшейся консоли нужно последовательно ввести команды, каждый раз нажимая Enter:
Теперь остается скопировать на флешку любой файл, чтобы проверить результат работы инструмента.
Поверхностное форматирование. Рекомендуется применять, если предыдущие методы не принесли положительного результата. Как показывает практика, стандартные средства ОС не способны выполнить форматирование накопителей, которые в результате программных сбоев стали недоступны для записи. Для форматирования проблемных microSD рекомендуется использовать специализированное ПО.
Многие известные производители карт памяти выпускают собственные утилиты для исправления ошибок в работе носителей. Например, у Kingston имеется бесплатная программа Kingston Format Utility, у Transcend – JetFlash Online Recovery, и т.д. Следует определить производителя своей карты и скачать соответствующее ПО с официального сайта.
Если же не получается определить производителя, или есть основания полагать, что карта памяти не оригинальная, стоит воспользоваться универсальным решением. Программа SD Memory Card Formatter совместима почти со всеми внешними накопителями и позволяет отформатировать даже китайские «ноунейм» microSD.
В процессе форматирования содержимое карты памяти будет стерто. При этом, если выполнять форматирование с активной галочкой Quick format и не менять тип файловой системы, определенный шанс на восстановление файлов все еще будет (об этом чуть позже).
Низкоуровневое форматирование. Кардинальный, но весьма эффективный метод. Выполняется при помощи универсальных утилит HDD Low Level Format Tool либо HP USB Disk Storage Format Tool.
В процессе этой процедуры выполняется полное удаление всех данных с последующим заполнением физических секторов нулями. Стоит учитывать, что это крайняя мера, к которой нужно прибегать только в том случае, если не помогают другие варианты. Информация с накопителя будут утеряна безвозвратно!
Если же в приоритете сохранение информации – единственным верным решением в таком случае будет обращение к квалифицированному специалисту, который сможет считать данные напрямую с чипа.
Восстановление данных, удаленных с карты памяти
Удаленные файлы можно попытаться восстановить при помощи специального софта. Нет гарантии, что удастся вернуть все, но если информация важная, попытаться стоит. Главное правило – после удаления не сохранять на флешку никаких новых данных и не перемещать каталоги с файлами.
Совет: не стоит восстанавливать данные на тот же накопитель, где выполняется поиск удаленных файлов, для избежания повторной перезаписи и потери информации.
File Scavenger. Для восстановления утраченных данных часто рекомендуют именно эту программу. Спасает при случайном удалении или даже поверхностном форматировании! Пробную бесплатную версию можно скачать на официальном сайте.
Puran File Recovery. Еще одна бесплатная программа для восстановления данных. Хорошо справляется со своей задачей: восстанавливает файлы после удаления и быстрого форматирования.
Как стереть данные без возможности восстановления
В связи с особенностями строения накопителей, файлы, удаленные обычным способом, можно восстановить. Даже стандартное (поверхностное форматирование) носителя не гарантирует полное уничтожение информации, а лишь очищает таблицу, содержащую адреса хранения данных. Сами же данные никуда не деваются – они в последствии просто перезаписываются новыми.
Соответственно, для безвозвратного уничтожения информации предусмотрены утилиты, которые перезаписывают содержимое ячеек случайными данными. Одна из таких программ – CCleaner. Можно воспользоваться бесплатной версией.























