Android под колпаком. Как раскрывают кейсы взлома мобильных устройств

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

Предыдущие статьи цикла

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

Немного об особенностях платформы Android

Android представляет собой модифицированную версию ядра Linux, адаптированную под мобильные гаджеты и носимые девайсы. За работу приложений (application) отвечает встроенная виртуальная машина Dalvik, преобразующая байт-код приложений в инструкции для исполнения начинкой устройства. Однако с версии Android 4.4 Dalvik был заменен на более шуструю Android Runtime, хотя сути работы это не поменяло. Рабочее окружение, так же как и в традиционном Linux, дополняют нативные и сторонние библиотеки, обеспечивающие различные профильные функции девайса.

Архитектура Android во многом совпадает с Linux

Наследие Linux в Android проявляется в управлении процессами, в организации файловой системы, подсистемы доступа и разрешений (user-based permission model, SELinux и root mode), ну и, конечно же, в поддержке терминала и некоторых команд из стандартного core utilities. Это во многом роднит Android и Linux, несмотря на то что различий между системами тоже много. Но эти знания помогут тебе в решении некоторых задач в наших кейсах.

Готовим лабораторию для исследований

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

  • Android SDK — стандартный пакет SDK для Android-разработчика;
  • Mobile drivers — пак драйверов для подключения исследуемого девайса к хостовой машине, с которой сидит эксперт-криминалист.

WARNING

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

Итак, самым первым и обязательным шагом подготовки нашей лаборатории будет установка на наш компьютер Android SDK и пакета драйверов. Последний часто идет универсальным паком, то есть содержит драйверы для большинства современных девайсов, и они автоматически определят подключенную модель. В редких случаях приходится доустанавливать необходимый драйвер вручную, либо тоже паком, как Android Device Driver Pack, либо ручками, найдя нужный в каталогах типа Android Find Driver.

Установка Android SDK на Windows 10
Выбор компонентов Android SDK

Особо ленивые могут установить ADB вместе со всеми драйверами и аддонами «одним кликом» с помощью ADB Installer.

«Тихий установщик» ADB Installer для Windows

Очень важная составляющая SDK — Android Virtual Device, компонент, позволяющий создавать виртуальные образы системы и после запускать их на своей машине. По сути, это эмулятор системы, созданный для разработчиков, пишущих приложения под эту платформу.

Конфигуратор образа для запуска в Android Virtual Device
Запущенный в эмуляторе AVD образ системы Nexus 5

Первое подключение

После установки SDK и пакета драйверов можно смело линковать наш девайс к компьютеру при помощи USB-кабеля. Предварительно в опциях девайса нужно активировать режим USB mass storage, то есть режим внешнего USB-накопителя. Это поможет нам в дальнейшем выполнять команды с ADB-консоли. Также обязательно активировать режим отладки Android Debug Bridge (ADB) в секции «Для разработчиков».

Включение режима отладки по USB в настройках Android

Основные подготовительные операции на этом завершены. Теперь запускаем командный интерпретатор CMD.EXE и через него шелл, который предоставит нам доступ к девайсу:

C:\ADB_folder>adb.exe devices

List of devices attached:
4df155сс115e4f21 device
Окно cmd.exe с выводом подключенного девайса

Так, мы законнектили наш девайс к компьютеру. Теперь можно получить внутренний шелл Android-устройства и проверить вывод, к примеру набрав команду whoami:

C:\ADB_folder>adb.exe shell

shell@android:/ $ whoami
Окно cmd.exe с выполненной в ADB командой shell

Приглашение $ в командной строке говорит о том, что мы находимся в непривилегированном пользовательском режиме. Символ # — приглашение с правами суперпользователя.

Более подробно о работе ADB и том, что с ее помощью можно сделать, читай в одной из наших статей.

Мини-шпаргалка по самым востребованным командам ADB

  • adb start-server — запуск службы ADB на локальном компьютере;
  • adb kill-server — остановить службу ADB (завершить процесс и выгрузить из памяти);
  • adb devices — получить список подключенных устройств;
  • adb get-state — получить статус текущих подключений;
  • adb logcat — просмотр логов в режиме реального времени в консоли;
  • adb logcat *:E — выводить на экран только ошибки (system error);
  • adb backup -option -packets — выполнить резервное копирование;
  • adb reboot — перезагрузить устройство;
  • adb reboot recovery — загрузиться в режим recovery;
  • adb reboot bootloader — перейти в режим настройки загрузчика.

Создаем копию внутренней памяти Android-устройства. Для этого в CLI девайса пишем:

> dd if=/dev/block/mmcblk0 of=/sdcard/blk0.img bs=4096

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

Чтобы сделать копию уже имеющейся SD-карты, можно воспользоваться знакомой нам бесплатной утилитой FTK Imager. Кстати, этот же образ потом можно будет и просмотреть в программе.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

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

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Иван Пискунов: Технический эксперт, ресерчер, участник CTF-команды CraZY Geek$, 10 лет в индустрии ИБ. Автор блога ipiskunov.blogspot.com. Канал в telegram @w2hack или t.me/w2hack. Увлекается миром Unix, malware analysis, reverse engineering и тестированием сетей на проникновение

Комментарии (10)

  • как сбросить пароль перед рутом, почему в статье рут всегда потом?

    • Согласен, правильный вопрос. Не совсем ясно как все это провернуть с закрытым смартфоном, и без возможности нормального получения рут прав

      • Рута на устройство можно получить "в-один-клик" без бубна и шаманства, к примеру, такими программами как Unlock Root, Kingo Android ROOT, Universal AndRoot и iRoot. Алгоритм прост: линкуешь девайс через USB, жмешь кнопку и ждешь завершения операции. У кого еще остались вопросы в интернетах есть куча инструкций с картинками на эту тему. Поэтому не совсем понятно, что значит "закрытые смартфоны без возможности получения нормальных рут прав". В моей практике, во всякому случае, какие-либо серьезных проблем с рутингом еще не возникало. Исключение, конечно, может быть если это совсем какой-то китайский деланый в подвале смартфон.

    • Ребята, рутинг телефона подразумевается если он до момента попадания в руки эксперта еще не был рутован. Что касается сброса пароля, если смотреть внимательно, то в материале сначала идет параграф про рутинг девайса и потом только про сброс пароля. То есть все логично: получил рута - > получил возможность сброса пароля, а а далее по те тексту все оставшиеся манипуляции

      • Описанный способ не является единственным, к примеру сбросить пароль\пин можно и без рутинга девайса. Это варианты с очисткой памяти с помощью Fastboot, либо использования резервного ключа на аппаратах LG, либо радикально с помощью Wipe data \ recivery, перепрошивкой через Odin и т.п., что несет в себе большие риски потери содержимого внутренней памяти и привязанных к исследуемому устройству аккаунтов. Кое что почитать можно, например https://4idroid.com/kak-sbrosit-parol-ili-graficheskuyu-blokirovku-na-android/

  • Есть ли возможность без получения root прав, вытащить всю нужную нам информацию(по данной статье)? Просто при получении рута, на некоторых устройствах можно потерять все данные, так как он сбрасывается к заводским. А сделать образ системы без рут не получается, пишет нет доступа.

    • Конкретно с такой задачей сталкиваться не приходилось, но как совет могу подсказать смотреть в строну таких утилит как Ultimate Backup Tool Pro (разработчики XDA devrlopers)

  • просто в статье автор тактично умолчал о том, что для сброса нужна включённая опция "отладка по usb". А если ты можешь её включить то значит ты уже разблокировал устройство.

  • Автор, вы в каком веке живете?
    1. Для всего этого нужна включенная отладка по usb, а ее без разблокировки не включить.
    3. Однокликовые способы рута крайне редко срабатывают на андроидах начиная с 5 го
    3. В андроиде уже давно путь /sdcard/ указывает не на sd карту а на внутреннюю память телефона

    • За замечание спасибо,все будет учтено в будущих выпусках. К сожалению, объем статьи не позволяет в одном материале рассмотреть сразу все аспекты и технические мелочи, а виду большого количества версий Android их накопилось не мало. Поэтому сейчас небольшая ремарка по комментарию выше:
      1. Если рута изначально нет и девайс заблокирован паролем то единственным способом получить суперпользователя без потери данных является TWRP.
      2. Согласен, с билда Lollipop процесс рутования усложнился, но все таки есть программы позволяющие это сделать новичку в GUI режиме. Подробно об этих техниках можно прочитать в статье ][акера https://xakep.ru/2017/07/20/root-android-o/
      3. При подготовке материала автор ориентировался на официальную документация Google Android SDK, там /sdcard/ указывается как external storage, все остальное это частный случай

Похожие материалы