Безопасность как искусство
170,29
рейтинг
2 апреля 2014 в 11:17

Разработка → Порталы нежити в Android



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

Вступление


Поначалу вредоносные программы для Android просто злоупотребляли доступным им функционалом: получали уникальные идентификаторы устройства, координаты геоположения, с наивысшим приоритетом получали SMS-сообщения и т. д. А затем все это отсылали своему создателю.
Но сегодняшние последние новинки представляют собой целые RAT-системы (Remote Administration Tool), и некоторые из них уже используют для сокрытия bootkit-технологии. Этим программам уже недостаточно существовать в рамках модели безопасности Android, и они поднимают свои привилегии в системе через различные уязвимости. После этого они вольны читать/изменять как данные других приложений на устройстве, так и системные файлы – совсем как их собратья для ПК. Можно сказать, что эволюция проходит абсолютно тем же маршрутом.

Естественным шагом стало появление антивирусов прямо в магазинах распространения приложений. Логика данного шага ясна – не давать пользователям качать вредоносные программы. Так, в Google Play в 2012 появился антивируc Bouncer, а в Yandex.Store, например, есть свой. Другая проблема ОС Android – обилие различных магазинов приложений, через которые могут распространяться как просто краденые приложения, так и с внедренным вредоносным функционалом. Подход к премодерации приложений у всех свой, и общеизвестны только два магазина, которые используют автоматизированные средства сканирования на вредоносный функционал. Но и они, как известно, при желании обходятся.

О мобильных антивирусах


Нужно понимать, что мобильные антивирусы работают на устройствах также в рамках модели безопасности Android – никаких индивидуальных привилегий они не получают. Они работают в своем sandbox и могут делать с другими приложениями и системой только то, что предусмотрено системой и было разрешено им при первом запуске. В таких условиях вести борьбу с вредоносным ПО сложно, но от эпидемий антивирус помочь может.

Verify apps


Новая фича "Verify apps" появилась в Android 4.2. Она в первую очередь полезна для приложений, установленных не из Google Play. Так, с включенной опцией система будет вас предупреждать еще перед установкой, если в приложении, по ее мнению, есть вредоносный функционал (возможно, за этим скрывается купленный Google сервис VirusTotal).



Порталы


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



1) Из магазина.

Каждый магазин для Android с точки зрения безопасности можно рассматривать по двум критериям:
    • Наличию встроенного антивируса в магазине;
         o Однако не стоит воспринимать антивирус как панацею.
    • Является ли он «доверенным» источником для вашего устройства:
         o Если магазин предусмотрен в прошивке как доверенный, то любой другой магазин для прошивки будет «недоверенным» источником и требует установки особой галочки в настройках. Как правило, все хотят быть единственным магазином приложений на устройстве.

1.1) Вирусописатель выложил свой зловред в магазин, и пользователь его поставил.

Самый распространенный сценарий. Злоумышленник либо просто выкладывает свое приложение с вредоносным функционалом, либо встраивает его в чужое и тоже выкладывает, – естественно, предварительно замаскировав свой нехороший функционал с помощью обфускации, временных задержек и т. д. Дальше уже сам пользователь соглашается, принимает условия и устанавливает приложение. Game over.

1.2) Вирусописатель выложил приложение, которое потом, со временем, докачивает вредоносный код.

Можно даже выложить в магазин хорошее, не вредоносное приложение, набрать аудиторию, а потом в один прекрасный момент накатить апдейт и превратить своих пользователей в армию ботов. Game over.
В данном направлении мне очень понравилась последняя находка исследователя Daniel Divricean. Он выяснил, что приложение всего лишь с 3 разрешениями:
    • android.permission.INTERNET – позволяет приложению открывать сетевые сокеты;
    • android.permission.GET_ACCOUNTS – дает доступ к списку аккаунтов в Accounts Service;
    • android.permission.USE_CREDENTIALS – позволяет приложению запрашивать authtokens из AccountManager, –
способно без вашего ведома устанавливать любые приложения, с любыми разрешениями (можно прямо со всеми), на все привязанные к вашему аккаунту устройства! Game over.

1.3) Вирусописатель купил/взломал хорошее приложение, которое уже стоит на миллионах девайсов, и добавил в него с обновлением вредоносный функционал.

Это не фантазия сумасшедшего, а печальная реальность. Думаю, что со временем данный вектор будет становиться все популярнее. В связи с чем, возрастет количество взломов/краж аккаунтов разработчиков. Game over.

2) Из неизвестных источников.

Для установки приложения из неизвестного источника в ОС Android пользователю достаточно поставить одну галочку в меню настроек.



2.1) Пользователь сам поставил откуда-то приложение.

Почему это делает пользователь? Может быть 1000 и 1 причина, и рассматривать их все глупо. Сами же злоумышленники, часто с помощью социальной инженерии, заставляют поставить их приложение якобы для безопасной работы с ДБО или для халявного выхода в Интернет в кафе и т. д. В общем, данный вектор ограничивается только фантазией злоумышленника и глупостью/неосведомленностью его жертвы. Game over.

2.2) Компьютер, зараженный вирусом, который ставит на устройство мобильный зловред.

Данный вектор тоже реален и достаточно оригинален. Правда, конечно, имеет несколько условий: разрешение установки с недоверенных источников и разрешение на отладку по ADB. Но при этом все происходит прозрачно для жертвы. Game over.

3) Через уязвимость.

Как бы удивительно это ни выглядело, но Android оставляет возможность попадания исполняемого кода со стороны в ваше приложение и его выполнения там
Если в iOS (без jailbreak) может выполняться только подписанный Apple код (ad-hoc приложения – это отдельная история), то в Android код можно получать со своих серверов и выполнять его в контексте своего приложения, при этом никакой подписи кода по умолчанию нет.
И это часто используется:
    • Различными рекламными сетями;
    • При обновлении приложения (например, при добавлении нового уровня в игру);
    • В процессе тестирования приложения.

3.1) Через подгрузку кода.

Для реализации данного сценария злоумышленнику необходима уязвимость, приводящая к RCE, и возможность проведения MiTM-атаки.
Если с MiTM все достаточно понятно и обыденно (передача данных в открытом виде или неправильная работа с SSL), то на RCE в Android немного остановимся. Это может быть, например, достигнуто следующими путями:
    • JavaScript Interface:
         o Об этом мы уже подробно говорили здесь;
    • Class loaders:
         o Код злоумышленника попадает в DexClassLoader();
    • Package context:
         o Уязвимое приложение может загрузить и выполнить код другого приложения (принадлежащего злоумышленнику). В данном сценарии MiTM не нужен – главное, чтобы на устройстве жертвы уже стояло наше приложение, которое поможет нам без повышения привилегий перебраться в контекст уязвимого.

Вот, например, такого рода незакрытая (на момент написания статьи) уязвимость в PayPal.
Для более глубокого понимания сути проблемы и ее масштабов советую обратиться к исследованию "Execute This! Analyzing Unsafe and Malicious Dynamic Code Loading in Android Applications". Game over.

3.2) Через уязвимость другого приложения.

Не стоит забывать, что в Android очень обширный набор механизмов для IPC, что может привести к очень интересным уязвимостям. Сама ОС Android имеет уязвимости, которые могут быть, например, использованы злоумышленниками для скрытого распространения зоопарков своих монстров.

4) Backdoor.
Печально, но факт: в вашем устройстве уже при покупке может быть такой «подарочек». Как он туда попал (специально/случайно), кем и для чего он будет использоваться, на уровне встроенного приложения, или ОС, или firmware, – это уже отдельная история.
Последний яркий пример с Samsung. Game over.

Спасибо за внимание!

PS: Тем, кто хочет поизучать мобильную malware, советую обратить внимание на данные архивы: 1, 2.
Автор: @d1g1
Digital Security
рейтинг 170,29
Безопасность как искусство

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

  • 0
    Т.е. фактически суть работы мобильных антивирусов — лишь предупредить пользователя, на основании сигнатур файлов, о том, что такое-то приложение малварное? Ведь работая в sandbox, как я понял, антивирус не может напрямую повлиять на работу подозрительного приложения.
    • +2
      Повлиять может. Для этого они, например, запрашивают следующие разрешения:
      — GET_TASKS
      — KILL_BACKGROUND_PROCESSES
      — DELETE_PACKAGES
      То что делают и чем пользуются мобильные антивирусы для Android достаточно просто посмотреть, открыв их AndroidManifest.xml файл.
      • 0
        DELETE_PACKAGES:
        Allows an application to delete packages. Not for use by third-party applications.

        Короче, мобильный антивирус должен быть подписан производителем прошивки.
        • 0
          Вовсе нет.
          Я работаю в компании, которая разрабатывает один известный мобильный антивирус.
          Если в установленном приложении обнаруживается угроза, что показывается в специальном окне со списком угроз, пользователь нажимает на это сообщение и жмет «Удалить». После этого запускается стандартный диалог Андроид удаления приложения с кнопками «Да-Нет». В итоге стороннее приложение удалено.
          Статья полезная, спасибо!
          • +2
            Ну да. Для этого не нужно разрешение DELETE_PACKAGES.
  • 0
    А в чем смысл вирусописателю заливать свой вирус в магазин? Я не знаю насчет всех магазинов, но для публикации на Google Play нужно регистрироваться и платить, а раз разработчик платит то его данные становятся известны Google ну и в случае приложения с вирусом (или дальнейшей подгрузкой чего-либо зловредного) сразу ясно кто, что и когда сделал. Подозреваю, что в магазинах типа Amazon и остальных такого же уровня нельзя просто взять и опубликовать приложение без предварительной оплаты.

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

Самое читаемое Разработка