Pull to refresh

Защита от несанкционированного копирования приложений Blackberry PlayBook

Reading time 4 min
Views 3.1K
В этой статье я покажу, что защиты как таковой на данный момент практически нет. То есть, если вы разрабатываете приложение, вы должны понимать, что практически все ваши know how могут быть раскрыты без особых ухищрений. Я продемонстрирую это на примере, возьму собственное приложение и попытаюсь получить его исходники.

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

Итак, некоторое время назад я наткнулся на одну статью, где фигурировала информация о том, что можно непосредственно устанавливать на устройство bar1 файлы, в обход магазина. Собственно, это не новость, bar файлы можно устанавливать и намного проще, но меня смутило не неуклюжее java приложение, а то, что к нему прилагалось 20+ bar файлов, среди которых была и не вышедшая для PlayBook официально игра Angry Birds. Я задумался, откуда они могли взяться?

Так как о root доступе к устройству я пока не слышал, а все file managers имеют ограниченный доступ, я пришел к выводу, что bar файлы были перехвачены по пути, и решил проверить свое предположение.

Смотрю в википедии sniffer. Беру первый упомянутый, это бесплатный WireShark.
Установился без проблем, все интуитивно понятно, открываю нужный сетевой адаптер. Запускаю PlayBook, в снифере устанавливаю фильтр на ip PlayBook-а. Вижу несколько записей, но на просмотр web страниц на устройстве снифер не реагирует. Как учит нас википедия, это потому, что у меня свитч, а не хаб.

Хорошо, устанавливаю 3proxy. Указываю перенаправление логирования в консоль, внутренний интерфейс (ip декстопа), внешний интерфейс (все, 0.0.0.0), порт 3128.
Для этого запускаю прокси командой:
proxy -l -i192.168.1.34 -e0.0.0.0 -p3128
Можно было бы создать конфигурационный файл, но так быстрее.

На PlayBook в настройках подключения указываю этот прокси (192.168.1.34), подключаюсь, вижу, что пошли логи. Меняю в снифере фильтр на ip, по которому слушаю прокси и указываю только http протокол.
Фильтр выглядит так:
ip.addr == 192.168.1.34 && http

На PlayBook-е перехожу в App World, ищу свое приложение PlayIrc. Это IRC клиент с нормальной русской клавиатурой и поддержкой кодировок. Устанавливаю демо версию, отключаю захват в снифере.

В снифере вижу:
GET http:// appworld.blackberry.com/ClientAPI/file/
и дальше некий номер файла. Правой кнопкой по записи, выбираю Follow TCP Stream, в появившемся окне нажимаю Save as и указываю имя PlayIrc_cracked.bar.

Можно сперва убедиться, что это действительно zip архив, сменив расширение на zip и открыв архиватором. Внутри я вижу две папки:
air — тут лежит само SWF приложение и ресурсы
META-INF — тут манифесты, информация о цифровой подписи и прочее.

Деплоим bar файл на симулятор и на PlayBook. И там и там он без проблем устанавливается и работает.

Что дальше может сделать злоумышленник?

Вариант 1. Глупый хакер, то есть хакер — не программист. Может создать свой сайт, выложить перехваченные bar файлы вместе с программой-установщиком. Была программа платная, а стала бесплатная. Справедливости ради следует отметить, что, возможно, в bar файле хранится информация о том, кому этот файл предназначался. Так как скачал его я, проверка на устройстве прошла успешно. В симуляторе эта проверка, если она есть, скорее всего отключена. Для чистоты эксперимента было бы хорошо попробовать установить bar файл на другом PlayBook-е, но у меня нет такой возможности. Так что, возможно, вариант с глупым хакером не так прост. Однако, это не влияет на следующий вариант.
Вариант 2. Хакер программист. Все то же самое, но перед этим взять swf декомпиллятор, получить полные исходники, отключить демо ограничения или просто украсть код. Была демо, стала полная версия.

Посмотрим, насколько сложен второй путь. Ищу в google SWF Decompiller, устанавливаю триальную версию Sothink SWF Decompiller, открываю PlayIrc swf. Он ругается, что не нашел класс flash.filesystem.file, это неважно. Я вижу всю структуру классов, все пакеты и ресурсы. Так как я давал классам и пакетам понятные названия и всячески заботился о том, чтобы код было легко модифицировать и отлаживать, я без труда (не потому, что я автор и знаю, где искать, а на самом деле без труда) нахожу класс, показывающий рекламный баннер. Найти ограничение на число открытых каналов несколько сложнее, но это также делается без проблем. Модифицированный исходник можно переподписать на себя, заменить логотипы и выложить назад на продажу или пустить в народ в виде bar файла.

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

Можно, конечно, добавить постоянный online контроль, отсылать динамически меняющиеся ключи, но разобрать нужный фрагмент кода и устранить проверку будет, как мне кажется, не очень сложно.

Сноски:
  1. Bar файлы. Bar файлы для BlackBerry PlayBook это то же самое, что и jar файлы для Java, то есть просто zip архивы, которые содержат скомпилированные классы, ресурсы, манифесты, в общем все, что нужно для запуска приложения.


Это мой первый пост на Хабре, надеюсь, я не нарушил никаких правил и моя информация не слишком банальна.

Upd.
Подвожу итог.

Взломы были и будут всегда. Как и большинство в нашей жизни, взлом начинается в тот момент, когда становится выгодным, то есть с точки зрения затрат времени и денег выгоднее взломать, чем купить или использовать аналог.

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

Суть статьи именно в том, что RIM создала условия, при которых «стоимость» взлома крайне мала, и это следует учесть при разработке. Ситуацию можно было бы переменить, если зашифровать коммуникацию устройства и магазина.
Tags:
Hubs:
+32
Comments 29
Comments Comments 29

Articles