О различных способах размещения файлов на Android-устройствах

Android - операционная система, которая существует на рынке уже около 7 лет, и известна, в основном, благодаря своей распространенности на таких мобильных устройствах, как коммуникаторы, смартфоны, планшетные ПК. Популярность Android можно объяснить фактом открытого исходного кода. При этом все-таки прослеживается довольно высокая степень стандартизации методов в архитектуре.

Данные, циркулирующие в Android

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

 Можно выделить следующие источники получения мобильного ПО для Android:

• Базовый набор приложений. Здесь подразумеваются приложения, которые создаются непосредственно разработчиками платформы,  а не те, что могут устанавливаться производителями. Например, это возможность использования устройства как хот-спота или расширений набора настроек.
• Набор приложений, устанавливаемых разработчиками, так называемый, вендорный набор. Здесь нет чётких критериев для определения мануфактурных приложений, и любой производитель, например, HTC, может сделать свою версию приложения для Facebook или Vimeo.
• Приложения, установленные операторами. Наиболее часто среди таких приложений могут оказываться музыкальные плейеры, например,  от Vodafoneили Yandex-карты;
• Дополнительные приложения Google/Android. Как правило, могут включать в себя даже магазины приложений или Gmail-приложения, несмотря на наличие встроенного почтового клиента.
• Прочие приложения, устанавливаемые пользователями обычно из магазина приложений, либо другими способами.

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

• Текстовые сообщения. Данный тип обычно представляется сочетанием сообщений SMS и MMS; на некоторых устройствах может также происходить автоматическое изменение типа SMS на MMS при наступлении событий типа превышения лимита семи  SMS сообщений или при попытке добавить графическое вложение.
• Контактные данные и календарные события.
• История телефонных звонков. Данный тип обычно представляется совокупностью пропущенных, принятых, отклонённых и исходящих звонков, внутренние градации которых могут нести дополнительную информацию о типах ошибок. Например, отклонённый звонокможет иметь причину "busy", так как получатель сбросил еголибо же "no wireless network", если получательне находится в зоне покрытия провайдера.
• Почтовые сообщения. Здесь подразумеваются сообщения, формируемые стандартным почтовым клиентом.
• Мгновенные сообщения и чаты.
• GPS и геоданные. Предполагается, что геоданные – это данные, непосредственно полученные с GPS-модуля своего или чужого устройства, если Bluetooth-соединение предоставляет такую возможность. В общем случае гео-данные могут быть получены и из EXIF-данных фотографий.
• Аудио, фото и видео файлы. Эти файлы обладают полезной дополнительной нагрузкой, например, в отношении EXIF-данных фотографий, раскрывающих геоданные, модель камеры (в действительности, устройства) и прочее. Аудио-файлы, полученные с диктофонных приложений, обычно уже в названиях несут информацию о дате и времени или о геотеге (например, название города и/или страны);
• Данные браузера. Формируются за счёт истории переходов, поиска элементов избранного.
• Пользовательские данные социальных приложений.
• Файловое хранилище. Рассматривается как всё целиком, особенно при возможности успешного получения root-доступа, или root-устройства, так и в отношении имеющихся местоположений, например: «скачанное», «видеофайлы», «файлы с камеры». Как правило, при отсутствии со стороны GUI-интерфейса явной возможности размещения файлов, автоматическое размещение с помощью ОС опирается как раз на эти каталоги.
• Прочие файлы.

Места формирования и инструменты хранения данных

Существует, по крайней мере, одно неабстрактное место хранения перечисленных файлов, а также приложений, которые их формируют. Оно известно как внутреннее, «internal», хранилище. Для этого хранилища действуют определённые правила, которые автоматически выполняются системой в процессе установки приложения. Каждое приложение сохраняется во вновь создаваемой папке, располагающейся в «/data/data/», с именем, которое соответствует, так называемому, package-имени, которое в свою очередь содержит. вложенные директории являются известными и перечислены ниже:

• shared_prefs – хранит информацию по форматам, используемым в программе и описываемым таким наиболее популярным методом, как XML-форматирование;

• lib – хранит кастомные библиотеки, необходимые для работы;
• files – хранит любые файлы, которые требуется сохранять приложению;
• cache – хранит кэшируемую информацию, которая наиболее свойственна для приложений типа браузеров или всевозможных вариаций, основанных на WebKit-движке;
• databases – хранит различные SQL-файлы; благодаря встроенному доступному для разработчика функционалу в отношении SQL-инструментов, такой способ хранения файлов является достаточно популярным.

ОС не запрещает разработчикам создавать свои папки внутри package-каталога, если того требует архитектура приложения. Именно по этой причине приложения, устанавливаемые во внешнем, «external», хранилище (либо на карте памяти) или просто сохраняющие там данные,  могут создавать и хранить требуемые для функционирования данные. Несмотря на это, разработчики склонны пользоваться внутренним хранилищем, что, в общем, объясняется соображениями безопасности. Дело в том, что каждое приложение, размещённое в package-директории, находится в «песочнице» и защищено от несанкционированного доступа, кроме случаев, когда злоумышленник обладает полномочиями root-пользователя. Однако такой подход к безопасности является статистически плохой практикой.

Ещё одним способом размещения данных является «Shared_XML» инструмент наполнения «shared_prefs». Он позволяет формировать свои типы данных, которые могут значительно облегчать понимание, например, форматов загрузки новых приложений или дополнительных файлов, при работе в обход магазина приложений или при использовании сетевых хранилищ либо иных ресурсов со стороны провайдера и/или разработчика.

SQL-инструменты являются одинкаково популярными среди разработчиков как мобильных, так и настольных платформ благодаря компактности хранения информации, при которой все данные хранятся в одном файле,  производительности, кросс-платформенности и открытости используемого формата. Несмотря на то, что обычным местом хранения является каталог «/data/data/package-directory/databases», SQL-файлы могут быть сохранены, где угодно. Данный формат обладает двумя существенными преимуществами с технической стороны, важными, например, для криминалистического исследования. Первым из них является чёткая структуризация хранимых данных. Вторым – что данные, например SMS-сообщения, удаленные пользователем, могут быть не сразу удалены или перезаписаны из базы данных, в отличие от подхода, при котором каждое SMS-сообщение хранится в отдельном файле.

Последним типизированным механизмом работы с данными является сетевой способ. Инструменты, входящие в состав данного механизма, описаны в известных для разработчиков классах «java.net.*» и «android.net.*». Они предоставляют разработчикам возможности низкоуровневого взаимодействия с сетями, веб-сервисами и т.п. Часто они используются для ведения лог-файлов, отражающих каждое событие в системе, например:

• происходит аутентификация, логин «username\user login\ username@email»;
• успешная аутентификация;
• добавление файлов в «локальный\удалённый путь»;
• прочие.

Дополнительно к этому каждое событие имеет временную метку, включающую в себя дату в формате: dd/mm/yyyy или же mm/dd/yyyy, в зависимости от используемой нотации, и время в формате: hh/mm/ss/msec; миллисекунды могут не использоваться, это также зависит от нотации.

Таким образом, стандартизация, предлагаемая разработчикам, оказывает значительное влияние на инструменты и подходы в мобильной криминалистике в отношении Android-платформы, что в ряде случаев значительно упрощает техническую сторону проводимого анализа. Основные проблемы возникают из-за отсутствия root-доступа, вследствие специфики используемого программного обеспечения. С другой стороны механизмы извлечения информации принятые в Live-криминалистике позволяют частично или полностью решать эту проблему.

Юрий Чемёркин
Исследователь
ЗАО «Перспективный Мониторинг»