• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Храним данные в разделах смартфона (на MTK)

deu5n

floppy-диск
Пользователь
Регистрация
20.09.2025
Сообщения
9
Реакции
9
Доброго времени суток, мои маленькие любители анонизма. Сегодня мы разберём один из способов спрятать что-то на самом видном месте - в системных разделах вашего смартфона.

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

Наш подопытный - смартфон неназванной модели на Mediatek, 2GB RAM, 16GB ROM. Из разряда тех, что выкидывают после одного звонка. Работает на AOSP, версия Android 11. Впрочем, система нам и не понадобится.
1.png

mtkclient (Github: bkerler/mtkclient) - это тулза, которая позволит творить с вашим телефоном на MTK всё, что душе угодно, благодаря эксплоитам в BootROM. Прославилась на первых порах, благодаря чудо-оживлению кирпичей без сервисного аккаунта. С помощью неё мы и будем манипулировать разметкой, как захотим.

Перейдём к установке. Для начала, нужно установить зависимости:
Bash:
sudo apt install python3 git libusb-1.0-0 python3-pip libfuse2 # Debian/Ubuntu
sudo pacman -S python python-pip python-pipenv git libusb fuse2 # Arch
sudo dnf install python3 git libusb1 fuse # Fedora

Затем клонируем репозиторий и ставим уже питоновские зависимости:
Bash:
git clone https://github.com/bkerler/mtkclient
cd mtkclient
pip3 install -r requirements.txt
pip3 install . # Если желаете, чтобы mtkclient был доступен откуда угодно в системе
Поздравляю, вы великолепны! Приступайте к следующему разделу.

P.S. Если mtkclient при запуске падает с Segmentation fault, то используйте Python версии 3.11, не 3.12 и выше. mtkclient (как минимум последний релиз) не совместим с ним.
Теперь переходим к главному - создание раздела под хранение всякого. Для начала прощупаем почву: прочитаем GPT таблицу через команду mtk printgpt. После ввода команды необходимо подключить телефон в режиме BROM. Выключаем мобилу, зажимаем кнопку громкости вверх и подключаем к компьютеру. Если пробежала куча строк, то вы сделали всё верно. Если вместо этого ваш телефон начал загружаться в Fastboot, систему или куда-либо ещё, то попробуйте кнопку громкости вниз или сразу две кнопки. По итогу, вы должны увидеть нечто такое:

2.jpg

Отлично, мы получили таблицу, но она нам ничего не даёт, кроме подтверждения факта наличия (в чём мы и так не сомневались). mtkclient не позволит как-то играться с разметкой, поэтому ручками дампим всю флеш память телефона при помощи команды mtk rf dump.bin:

3.jpg

Запаситесь терпения и места на диске =)

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

4.jpg


Бинго, у нас на руках вся файловая система мобилы. Теперь давайте определимся с разделом, от которого будем отщипывать под наш будущий "секретный раздел". Логичнее всего выбрать userdata, это самое безопасное, что тут стоит трогать. На скриншоте этого не видно, но он находится под 39 номером. Давайте узнаем информацию о нём:

5.jpg



Нам важны два значения: First sector (где первый сектор) и Partition size (размер раздела в секторах). Теперь введём следующую команду:
Bash:
sudo losetup -f --show -o $((FIRST_SECTOR * SECTOR_SIZE)) --sizelimit $((PARTITION_SIZE * SECTOR_SIZE)) dump.bin

FIRST_SECTOR - значение из First sector, PARTITION_SIZE - значение из Partition size, SECTOR_SIZE - размер сектора в байтах (обычно 512 байт, но можете перепроверить в gdisk при помощи команды p).

Мы поднимаем loop-устройство, чтобы работать с файлом, как с отдельным устройством. Поскольку нас интересует конкретный раздел, то задаются оффсет и размер через флаги -o и --sizelimit соответственно. После ввода команды, в терминал будет выведена строчка формата /dev/loopX, это будет путь до нашего loop-устройства.

Теперь проверим наш раздел при помощи команды sudo e2fsck -f /dev/loopX. Можно смело соглашаться на все исправления, с вероятностью 99% это ничего не сломает.

6.jpg


Теперь, перепроверьте данные вашего раздела через sudo tune2fs -l /dev/loopX, а именно нужно обратить внимание на Block count и Block size, они отличаются от тех, что мы использовали ранее.

7.jpg


Именно эти значения мы и будем использовать в resize2fs, для уменьшения размера файла:
Bash:
sudo resize2fs /dev/loop0 $((BLOCK_COUNT - PARTITION_SIZE - 1))
BLOCK_COUNT - значение из Block count, PARTITION_SIZE - желаемый размер будущего раздела, вычисляемый как PARTITION_SIZE = SIZE_IN_BYTES / BLOCK_SIZE, где SIZE_IN_BYTES - желаемый размер в байтах, BLOCK_SIZE - размер блока, взятый из значения 'Block size' в выводе tune2fs.
(В моём случае, 8 Мбайт = 8192 Кбайт = 8388608 Байт, 8388608 Байт / 4096 Байт/блок = 2048 блоков), "-1" добавлен для подстраховки, если хотите =)

Теперь пришла пора прощаться с нашим loop-устройством, выключаем его при помощи sudo losetup -d /dev/loopX.

8.jpg

Теперь, когда мы освободили место под наш секретный раздел, нужно поставить его на своё место, переразметив таблицу. Удаляем старый раздел userdata и создаём новый с уменьшенным размером. Перемещаем Last sector на столько, на сколько мы сжимали раздел. Тип указываем такой, какой был ранее, в моём случае это 0700. Тут же создаём и наш раздел secret, в который мы будем писать и читать всякое.

9.jpg

Дело было утром, я походу ещё не проснулся, один лишний сектор добавил к разделу secret, никаких ровных 8мб =(
Перед уходом не забываем назвать наши разделы:
10.jpg


Теперь смело прописываем команду w, выходим из gdisk и идём шить наш изменённый дамп при помощи команды mtk wf dump.bin. Если после прошива система запустилась, то поздравляю, вы великолепны x2! Можете закрепить успех, перепроверив таблицу при помощи mtk printgpt (напомню: выключаем мобилу, вводим команду, переводим в BROM и подключаем к ПК):

11.jpg
Возьмём некий secret.jpg, который мы хотим записать в раздел. Для начала приравняем его размер к размеру раздела при помощи команды truncate -s BYTES_COUNT secret.jpg, где BYTES_COUNT - размер раздела в байтах. Затем прошиваем при помощи команды mtk w secret secret.jpg. Можно включить телефон и посидеть в системе, ради чистоты эксперимента. Возвращаемся в BROM и читаем наш раздел при помощи mtk r secret secret.bin

12.jpg

Поздравляю, вы великолепны x3!
Конечно, это не самый удобный способ, но и вам никто не мешает написать свой VeraCrypt, хранящийся на умирающем бабушкином Huawei.
Я бы рассмотрел другие платформы на практике, но увы, ассортимент у меня небольшой. Однако...

У Snapdragon есть EDL, аналог BROM (или наоборот). Я даже больше скажу, есть софт от автора mtkclient (Github: bkerler/edl), судя по описанию позволяющий также делать дамп и шить его. Единственное, что вас может сбить с толку - lun0, lun1 и т.д. LUN - это логический диск, в котором хранятся свои разделы. Просто не путайте цифры и не зашейте что-то туда, куда не надо =) Процесс изменения таблиц должен быть тем же.

Unisoc/Spreadtrum по объективным причинам не пользуются популярностью, поэтому готовых решений для работы с цельным дампом нет, либо есть с кучей "но". Попробуйте поискать по ключевым словам "unisoc dump github".

Exynos проклят, там очевидно такие богохульства не прокатят.

На Pixel с их Tensor такое никогда и не было нужно.

На этом, вроде как, платформы заканчиваются.
Логично, что раз телефон позволяет такое, то это говорит не об его "открытости", а об его дырявости. Кто угодно ещё может взять и прочитать скрытый раздел, если о нём знает. По сути, это флешка со скрытым разделом, только более хитрая. Следовательно, если у вас возникнет желание воспользоваться таким методом, то не забывайте про шифрование. Назовите раздел как-нибудь неприметно, чтобы он походил на системный. Не храните ничего ценного непосредственно в системе телефона.

Также, раздел не абсолютно недектируемый с непосредственно мобилы. Система видит этот раздел, (в моём случае, по пути /dev/block/mmcblk0p42), хоть его и можно прочитать только имея Root (в отличие от mtkclient, которому никакой Root и разблокированный загрузчик не нужен)

Также есть риск потери данных из-за банального износа памяти в телефоне, если выбран повидавший жизнь аппарат. Пару мегабайт чтения и записи его не убьют, а вот гигабайты, или те же многократные записи дампа (если у вас не вышло с первой попытки, например ¯\(ツ)/¯) вполне могут.
Метод не без компромиссов, как и всё в этом мире. Скорее гайд по тому, как можно применить ваши 4-летние устройства (например, как тайная "надёжная" флешка для сид фраз =)). Идеальным развитием идеи было бы нахождение уже существующего системного раздела, в который можно записываться, не влияя на работу системы. Также не помешает написание софта для более удобного чтения/записи. Но это я уже оставлю вам.
 

Вложения

  • 12.jpg
    12.jpg
    70 КБ · Просмотры: 73
Последнее редактирование модератором:
тебя не имеют право даже заставить компьютер включить. Сейчас не 90е, все на видео пишется
честно говоря,очень сомневаюсь касательного такого заявления, если им нужно, то они найдут способ включить его)
 
терпоректальный криптоанализ, к сожалению, до сих пор остается наиболее эффективным методом получения доступа к чему угодно.
А с технической точки зрения очень полезная статья. Спасибо. Было интересно для себя новое почерпнуть
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх