Pull to refresh
0

Обнаружение мобильного вредоносного ПО в дикой природе

Reading time 9 min
Views 11K
Original author: Mahinthan Chandramohan, Hee Beng Kuan Tan


Смартфоны всё больше и больше проникают в нашу жизнь, для многих людей они стали незаменимым повседневным спутником. Эти гаджеты дают нам связь с другими людьми и развлекают нас. Мы доверяем им всё больше конфиденциальной и личной информации, и потому неудивительно, что злоумышленники уделяют мобильному сегменту всё более пристальное внимание. Начиная с 2004 года, когда Лаборатория Касперского обнаружила первого сетевого мобильного червя Cabir, ежегодно появляется всё больше новых образцов вредоносного ПО. Соответственно, постепенно всё бОльшую актуальность обретает выработка методик обнаружения вредоносного ПО «в дикой природе», то есть в магазинах мобильных приложений.

Что такое вредоносное ПО?


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

Технологии обнаружения вредоносного ПО в «больших» операционных системах уже достаточно разнообразны и весьма эффективны. Однако мобильный сегмент в индустрии обеспечения информационной безопасности пока находится в зачаточном состоянии.

Помимо вредоносного ПО, нужно упомянуть ещё две категории угроз для мобильных устройств — шпионское ПО (spyware) и условно-вредоносное ПО (grayware). Шпионские приложения втайне от пользователя собирают информацию о его перемещениях, SMS-переписку, историю звонков и т.д. В строгом смысле, если шпионское ПО не отправляет куда-то собранную информацию, то его нельзя назвать противозаконным. Но факт установки без ведома пользователя подобного приложения нельзя назвать этичным.

Условно-вредоносное ПО гораздо безобиднее «классического», но при этом довольно раздражающее. Например, относящаяся к подобному классу программка может поменять системные шрифты или их цвет, или выдавать всевозможные нелепые и глумливые сообщения. В общем, по аналогии с человеческим обществом, условно-вредоносное ПО — это мелкий хулиган, пакостник. Можно сказать, что grayware находится на краю легальности: авторы обычно не скрывают своих намерений и дают описание функционала своего ПО, но пользователи обычно жмут кнопку «Согласен» не читая условий лицензионного соглашения.

Многие специалисты по безопасности предпочитают классифицировать вредоносное ПО на основании поведенческих шаблонов и мотивации их авторов. Ниже представлены наиболее важные виды:

  • Предлагающие пользователям всевозможные новинки и развлечения. Обычно такое ПО разрабатывается с целью развлечения самого автора и демонстрации его умений, в основном, с помощью бессмысленных деструктивных действий на устройстве жертвы. Пример: Android.Walkinwat
  • Торгующие пользовательской информацией. Такие приложения втайне собирают данные о местоположении пользователя, об установленных приложениях, историю загрузок и содержимое списка контактов. На эту информацию есть устойчивый спрос со стороны рекламщиков и маркетологов. Пример: DroidDreamLight
  • Похищающие финансовую информацию. Чаще всего это аккаунты к банковским счетам. Перехватываются текстовые сообщения, записываются все нажатые кнопки, применяются фишинговые атаки. Пример: Ikee.B
  • Манипулирующие доставкой различного контента. Такое ПО предназначено для осуществления персональных звонков и рассылки SMS с предложениями технической поддержки, биржевых сводок, интимных услуг и т.д. Пример: FakePlayer
  • Рассылающие SMS-спам. С номера жертвы начинается рассылка спама, обычного содержащего рекламу и фишинговые ссылки. Пример: Geinimi
  • Манипулирующие поисковыми результатами. Искусственно поднимают в поисковой выдаче различные сайты. Пример: Hong Tou Tou

Способы определения вредоносного ПО


Каждая из существующих методик определения мобильного вредоносного ПО имеет свои достоинства и недостатки.

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



Первые две ветки характерны для определения вредоносного ПО в Symbian OS и iOS, поэтому его описание мы опустим. Нас интересует третья ветка схемы, которая описывает алгоритм действий под Android. C помощью декомпилятора генерируется исходный код приложения. Далее он подвергается статическому анализу инструментами из программного пакета Fortify SCA. К недостаткам этой методики можно отнести то, что в целом она подходит только для анализа приложений с относительно небольшим количеством прав доступа и вызовов API.

Динамический анализ кода
В отличие от статического, динамический анализ подразумевает исполнение приложения в изолированном окружении. Например, внутри виртуальной машины или эмулятора, чтобы можно было отслеживать поведение приложения. Чаще всего динамический анализ используется при трассировке системных вызовов или taint-отслеживании.

Для динамического taint-анализа в масштабах системы можно использовать инструмент TaintDroid. На иллюстрации ниже показано, как приложение сначала отправляется в виртуальную машину, где подвергается оценке на четырёх уровнях: переменных, методов, сообщений и файлов. Во время taint-отслеживания любые запросы данных из модуля геолокации, микрофона, камеры и т.д. Данный метод подразумевает, что все нативные библиотеки вызываются только из виртуальной машины, а не напрямую. И наконец, при динамическом анализе определяются потенциальные утечки данных прежде, чем информация передаётся из системы в сетевой интерфейс.



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

Во второй части иллюстрации представлена система двухэтапного анализа Android-приложений с помощью «песочницы» (AASandbox). В ней бинарные файлы сначала дизассемблируются, а в полученном коде проводится поиск характерных шаблонов. Затем, в ходе динамического анализа приложение исполняется в Android-эмуляторе, а все системные вызовы записываются в журнал. Если нет возможности взять реальные входные данные, сгенерированные пользователями, то можно воспользоваться инструментом Android Monkey (ADB Monkey).

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

Ниже изображена схема работы инструмента для анализа прав доступа Android-приложений, Kirin. В ходе установки изучаемого приложения он извлекает настройки безопасности и сверяет их с имеющейся политикой безопасности. Если приложение не проходит проверку, то Kirin предупреждает пользователя, или даже удаляет приложение.



Пример политики безопасности Kirin:

An application must not have PHONE_STATE,RECORD_AUDIO, and INTERNET permission labels’

Это правило запрещает приложению записывать аудио или получать доступ к интернету, пока пользователь говорит по телефону. Это позволяет избежать прослушивания телефонных разговоров.

Проведённое в 2011 году исследование 100 платных и 856 бесплатных Android-приложений показало, что около 93% бесплатных и 82% платных запрашивают получение как минимум одного потенциально опасного права доступа. Среди них наиболее распространённым был запрос на доступ к сети, даже если назначение приложения не подразумевало его использования.

К недостаткам Kirin можно отнести то, что анализа запросов на получение прав недостаточно для выявления вредоносного ПО, это вспомогательный инструмент, который нужно использовать одновременно со статическим или динамическим анализом кода.

Анализ с помощью облачных сервисов
Очевидно, что на смартфоне не получится полноценно анализировать подозрительные приложения в связи с ограниченными ресурсами самого устройства. Простое сканирование файлов займёт немало времени и «съест» заметную долю заряда аккумулятора. Одним из способов решения этой проблемы является анализ с помощью облачных сервисов.

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



Для временного хранения входящего трафика Paranoid Android использует прокси, что позволяет экономить заряд аккумулятора смартфона и не отправлять те же данные на сервер. Тот может напрямую обратиться к прокси и получить нужные данные для эмуляции анализируемого приложения. Тем не менее, применение РА для анализа «тяжёлых» приложений всё же существенно повышает расход энергии и нагрузку на процессор. А поскольку трейсер работает в пользовательской среде, системные вызовы куда сильнее нагружают процессор по сравнению с нативным исполнением кода. Условно, трассировка системного вызова read() занимает 0,7 миллисекунды в пользовательской среде, и 0,1 — в ядре.

Во правой половине предыдущей иллюстрации изображена схема работы Crowdroid, инструмента для анализа поведения приложений. Это лёгкое клиентское приложение, которое мониторит системные вызовы, инициированные наблюдаемым приложением, предварительно обрабатывает их и отправляет в облако. А там уже с помощью кластеризации определяет, является ли приложение вредоносным или нет. К сожалению, у Crowdroid бывают ложно положительные результаты, если данных для анализа очень мало.

Мониторинг расхода заряда аккумулятора
Более высокое, по сравнению с аналогами, потребление энергии при работе какого-то приложения может быть косвенным свидетельством вредоносности. Конечно, это работает, если достаточно хорошо известно поведение пользователя, состояние аккумулятора, уровень сигнала, объём сетевого трафика и прочие параметры.

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

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

  • Установите хорошее защитное приложение, которое защитит от атаки и предупредит при обнаружении подозрительной активности приложений.
  • Скачивайте приложения только из доверенных источников.
  • Перед установкой лучше почитать обзоры и посмотреть рейтинг, даже если вы много слышали хорошего про автора приложения.
  • Всегда внимательно читайте список запрашиваемых прав доступа. Если возникают какие-то подозрения, лучше откажитесь от установки. Можно также оставить свой комментарий, который предупредит других пользователей.
  • Если вам в данный момент не нужны Wi-Fi, Bluetooth и прочие модули беспроводной связи, отключите их. Так будет и безопаснее, и аккумулятор дольше проживёт. С осторожностью подключайтесь к общественным точкам доступа: заранее активизируйте файрвол, отключите общий доступ к файлам и используйте SSL или VPN.
  • Регулярно обновляйте используемые приложения, как и прошивку смартфона.
  • Используйте шифрование для хранения всех важных данных, хранящихся на смартфоне. Также не забывайте делать регулярные бэкапы. Удостоверьтесь, что критическая информация нигде не закэширована.
  • Везде, где возможно, ставьте пароли на доступ к важным файлам и приложениям.
  • Не ходите по подозрительным или недоверенным ссылкам. Если всё-таки очень нужно, то лучше наберите адрес вручную, а не копируйте и вставляйте в браузер. Это убережёт от атак с помощью теневой загрузки.
  • Регулярно отслеживайте расход заряда аккумулятора, отправленные SMS и журнал звонков. Любые странности следует расценивать как повод к проверке всей системы, особенно недавно установленных приложений.
  • И наконец, если смартфон был утерян или украден, удалённо сотрите все приложения, контакты и конфиденциальную информацию. А также заблокируйте само устройство.


Вообще, весьма маловероятно, что действительно серьёзное вредоносное ПО будет оценён ложно положительно. Так что следование вышеприведённым советам наверняка защитит вас разных неприятностей, будьте бдительны и осторожны на просторах сети. Мы, в свою очередь, готовим различные решения по информационной защите наших смартфонов, об этом читайте в одной из ближайших публикаций.
Tags:
Hubs:
+11
Comments 2
Comments Comments 2

Articles

Information

Website
yotadevices.com
Registered
Founded
Employees
51–100 employees
Location
Россия