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

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

  • автор:

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

расшифровать данные на sd карте

galaxy s7
ОС и прошивка: 8.0

Описание проблемы:
господа, форумчане, добрый день!
подскажите, что можно сделать, чтобы просмотреть мне мои фотографии сделанные на этом же телефоне.
суть проблемы следующая: сделал на galaxy s7 фотографии (стоит шифрование sd-карты), вытащил карту и поместил ее в galaxy s4. С телефона galaxy s4 вырезал и вставил их на комп-файлы не открываются. По пробовал вставить их обратно на карту памяти и открыть на galaxy s7 (на устройстве котором они были зашифрованы)-не получается, файлы закрыты для просмотра. Что можно сейчас сделать, чтобы их восстановить. Речь идет о видео и фото
может хотя бы подскажите, рут права мне активирует кнопку «расшифровать sd-карту» ? в данный момент она не активна, пишет мол политика безопасности не разрешает мне расшифровать карту

02.08.18, 23:40 | #2


Почётный форумчанин
Реп: ( 5443 )
cool men @ 02.08.2018, 23:02
подскажите, рут права мне активирует кнопку «расшифровать sd-карту» ?
03.08.18, 13:33 | #3


Начинающий
Реп: ( 2 )

Через муки, нервы и психи проблема в итоге решена! напишу подробно что и как делал дабы уберечь от ошибок, которые сделал я и в итоге помочь тем, кто столкнулся с аналогичной проблемой.
ДАНО: sd-карта зашифрована, файлы с нее в зашифрованном виде вырезаны на компьютер (на PC не читаются), скопированы обратно на на SD-карту (на тел, котором они шифровались уже тоже не читаются)
Проблема: не возможно их расшифровать по причине не активной кнопки «расшифровать SD-карту»
РЕШЕНИЕ(не делайте так): кнопка «расшифровать SD-карту» была не активной с подписью «запрещено политикой безопасности». Это после полторашки пива привело к идее обойти систему безопасности самсунг. Поиски решения в интернете не увенчались успехом и бесполезным тыканием в телефон наткнулся на администраторов устройства (найдете их в поиске по устройству). Тут я вспомнил, что когда подключал рабочую почту к телефону, у меня были проблемы как раз с тем, что для ее работы необходимо в обязательном порядке шифровать карту. Я тут же отключаю всех администраторов и вуаля: расшифровать карту становиться возможным. я тут же начинаю ее расшифровку. 40 минут мучений, я на радостях и т.д. НО на последнем проценте выдает ошибку расшифровки карты, пишет что расшифровать можно только на том устройстве, на котором я их зашифровал, карта отключается, через кардридер PC ее тоже не видит, тел предлагает ее форматнуть. Больше делать уже ни чего не оставалось, форматирую. Процесс форматирования обрывается через 15 сек и все, приехали.
ИТОГ: ошибка файловой системы, карта не читается ни где, не форматируется и вообще ни чего с ней не сделать, китайская карта с «алишки» оранжевого цвета EWO 32 GB на выброс!-кстати, буду благодарен, если в ответ вы мне пришлете ссылку на пост, как ее еще можно попробовать восстановить.
что делаю дальше я:
ДАНО: имею скопированные на PC мои зашифрованные файлы и запасную SD-карту
ПРОБЛЕМА: по прежнему файлы не расшифровать
РЕШЕНИЕ: подключаю администратора устройства Find My Device (кто это и его возможности доподлинно я не знаю, да Х.. с ним, главное прокатило. Копирую имеющиеся у меня файлы на запасную SD-карту, провожу повторное ее шифрование, далее сразу же расшифровываю ее и копирую их на PC и вуаля, файлы открыты! Читаются везде, и на тел и на PC.
P.S.: телефон украден не был, телефон мой и поэтому проблем с вводом сопутствующих паролей и т.п. у меня не возникло. Расшифровка проводилась на том устройстве, на котором эти файлы изначально были зашифрованы, OC обновленная по воздуху до android 8.0
Надеюсь этот пост когда-нибудь кому-нибудь будет полезен! Всем удачи!

03.08.18, 18:37 | #4


Почётный форумчанин
Реп: ( 5443 )

cool men,
было бы полезно всё это продублировать в тему Решение проблем с файлами на карте памяти. (и не забыть при этом упомянуть, что речь про шифрование встроенное в аппаратах Samsung).

Как расшифровать файлы SD карты без телефона, на котором она была зашифрована?

Зашифровал карту памяти на андройде, телефон сломался, теперь файлы на карте не открываются. Как расшифровать файлы без телефона?

  • Вопрос задан 24 июл. 2023
  • 737 просмотров

2 комментария

Средний 2 комментария

mayton2019

mayton2019 @mayton2019
Покажи заголовок файла в hex-представлении.
Reyn1984 @Reyn1984 Автор вопроса

64bedf41d7508692273815.jpeg

Решения вопроса 0
Ответы на вопрос 2
Восстановить данные из бэкапа
Ответ написан 25 июл. 2023
Нравится 1 2 комментария
Reyn1984 @Reyn1984 Автор вопроса
Drno Что имеете ввиду?
Есть только sd карта с зашифрованными файлами

Reyn1984, в общем случае, скорее всего, ничего не получится. Ключом может выступать, например, серийник устройства или комбинация серийника и вон тех 10 байт по смещению в неочевидном месте недоступной части EEPROM плюс XOR с секретной строкой. Поэтому без устройства ключ не получишь, да и механизм его получения загрузчиком устройства может быть эзотерический.

BloodyAstra

Константин @BloodyAstra
Ответ написан 24 июл. 2023
Reyn1984 @Reyn1984 Автор вопроса
Попробовал, но там не подходят решения.

Константин, как-то не внушает доверия рецепт, в котором написано переименовать на телефоне директорию mmcstore в mcstore.txt , а потом открыть этот mcstore.txt (напомню — директорию) в текстовом редакторе Notepad. И подсмотреть в Notepad пароль шифрования SD-карты, ага. То есть нашлись неразумные программисты-школоло, которые хранят пароль шифрования просто на устройстве, в открытом виде?
Или всему этому рецепту — грош цена?

Ваш ответ на вопрос

Войдите, чтобы написать ответ

android

  • Android
  • +1 ещё

Как сделать авто переключение фрагментов?

  • 1 подписчик
  • 10 часов назад
  • 26 просмотров

Как расшифровать sd карту со всеми данными?

Я случайно зашифровал sd карту на 16гб на устройстве samsung galaxi J2 prime. Он у меня сломался я купил новый samsung galaxy J6 plus. И когда вставил флешку в этот телефон то понял что она зашифрованная, и восстановить можно только в том устртйстве в котором шифровалась. Скажите есть ли какие программы что бы можно было вытащить все фотки с sd карты? Может можно ее как то расшифровать со всеми данными? Если для расшифровки нужен J2 prime, то любой тел. такой модели? Или именно тот на котором происходило шифрование?

Лучший ответ
Отформатируй и забудь
ВасилийУченик (157) 2 года назад
не форматируется она пишет зашишена
ВасилийУченик (157) 2 года назад
schegol™Оракул (70008) 2 года назад
Если форматирование невозможно — карта мертва.
Остальные ответы
В словосочетании «Расшифровка возможна только на том устройстве» и далее по тексту что-то непонятно?

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

с фотками как то проще дела обстоят.
lek.tor.05@bk.ru пишите — скажу как и что

естественно нужен комп.

Android: извлекаем данные с зашифрованной SD-карты и получаем доступ к скрытым методам

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

Почитать

Как 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

Cloak and Dagger — Mobile Malware Techniques Demystified — небольшая заметка о том, как работают атаки класса Cloak & Dagger. Мы писали об этом типе атак еще в 2017 году, но тогда рассмотрели только одну из них: кейлоггер, не требующий дополнительных прав в системе. Эта статья посвящена другой атаке, позволяющей заставить пользователя включить настройку доступа к AccessibilityService (позволяет перехватывать любые нажатия пользователя и нажимать кнопки интерфейса за него), замаскировав переключатель под нечто безобидное.

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

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

Другие статьи в выпуске:

Xakep #241. Взлом игр

  • Содержание выпуска
  • Подписка на «Хакер» -60%

Атака работает на 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(); 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())) < . >> 

ShouldBlockAccessToMember() в конечном итоге вызывает метод Runtime::GetHiddenApiEnforcement(), который сообщает, стоит ли отклонить вызов или нет. При этом система может либо пропустить его без вопросов, либо вывести предупреждение, либо использовать черный и серый списки, которые содержат имена запрещенных к использованию методов.

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

#include art::Runtime* current = art::Runtime::Current(); 

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

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

static art::Runtime* my_runtime = nullptr jint JNI_OnLoad(JavaVM *vm, void *reserved) < my_runtime = reinterpret_cast(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-патчах.

Инструменты

  • 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 — очередная база уязвимостей.

Библиотеки

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

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *