Самый сложный Android-троянец

Недавно нам на анализ пришло приложение для ОС Android, при первом взгляде на которое стало ясно – это что-то необычное. Все строки DEX файла были зашифрованы, а код обфусцирован.

Файл оказался многофункциональным троянцем, который может отправлять SMS на премиум-номера; скачивать и устанавливать на зараженное устройство другие вредоносные программы и/или рассылать их по Bluetooth; выполнять удаленные команды в консоли. Сейчас эта вредоносная программа детектируется «Лабораторией Касперского» как Backdoor.AndroidOS.Obad.a.

 

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

Особенности троянца

Создатели Backdoor.AndroidOS.Obad.a нашли ошибку в популярной программе dex2jar, которая обычно используется аналитиками для конвертирования APK-файла в более удобный для работы формат JavaArchive (JAR). Обнаруженная злоумышленниками уязвимость  нарушает процесс конвертации Dalvik байт-кода в Java байт-код, что в итоге затрудняет статический анализ троянца.

Также злоумышленниками была найдена ошибка в OCAndroid, связанная с обработкой AndroidManifest.xml. Этот файл встречается в каждом Android-приложении и используется для описания структуры приложения, определения параметров его запуска и т.д.  Вирусописатели модифицировали AndroidManifest.xml таким образом, что тот не соответствовал заданному Google стандарту, но при этом, благодаря найденной уязвимости, правильно обрабатывался на смартфоне. В результате динамический анализ троянца крайне затруднен.

Создатели Backdoor.AndroidOS.Obad.a использовали еще одну неизвестную ранее ошибку в ОС Android, которая позволяет вредоносному приложению пользоваться расширенными правами DeviceAdministrator, но при этом отсутствовать в списке приложений, обладающих такими правами. В результате удалить со смартфона вредоносную программу, получившую расширенные права, невозможно.

Наконец, Backdoor.AndroidOS.Obad.a не имеет интерфейса и работает в фоновом режиме.

Анализ кода

В этом вредоносном приложении все внешние методы вызываются через рефлексию, при этом все строки (в том числе имена классов и методов) зашифрованы.

 

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

 

Самые важные строки, содержащие адреса командного сервера, проходят дополнительный процесс расшифровки. Для этого троянец сначала проверяет наличие доступа в интернет, а затем загружает страницу facebook.com и, вытащив некий элемент кода этой страницы, использует его как ключ для расшифровки. Таким образом Backdoor.AndroidOS.Obad.a расшифровывает адреса командный серверов только в боевых условиях – при  наличии доступа в интернет. Кроме того, наличие этой функции затрудняет анализ зловреда.

Часть строк дополнительно зашифрована. Локальный декриптор получает закодированную строку в Base64 и раскодирует ее. Раскодированная строка расшифровывается сначала операцией XOR с MD5 ключа, затем дополнительно с MD5 от строки «UnsupportedEncodingException». Чтобы получить MD5 ключа, тот же локальный декриптор расшифровывает еще одну строку, от которой и считается MD5. Таким образом защищены ключевые строки, например, имя функции sendTextMessage.

 

В результате анализа нам удалось расшифровать все строки:

 

А результаты расшифровки позволили нам восстановить алгоритм работы приложения.

Получение прав

Сразу после запуска приложение пытается получить права DeviceAdministrator.

 

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

 

Мы уже сообщили компании Google об уязвимости в работе с DeviceAdministrator в ОС Android.

Расширенные права DeviceAdministrator могут использоваться троянцем для кратковременной (не более 10 секунд) блокировки экрана устройства. Как правило, это происходит после подключения к бесплатному Wi-Fi или после активации Bluetooth, который может использоваться зловредом для передачи своих копий и других вредоносных приложений на находящиеся поблизости устройства. Возможно, таким образом Backdoor.AndroidOS.Obad.a пытается помешать пользователю обнаружить вредоносную активность.

Также троянец пытается получить права суперпользователя (root), выполняя команды “suid”.

 

Связь c хозяевами

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

Для передачи сведений о зараженном устройстве и проделанной работе Backdoor.AndroidOS.Obad.a использует активное в данный момент подключение к интернету. Если сеть не найдена, троянец ищет ближайшие сети Wi-fi, не требующие авторизации, и подключается к одной из них.

После первого запуска вредоносное приложение собирает и передает на командный сервер с адресом androfox.com  следующую информацию:

  • MAC-адрес Bluetooth  устройства
  • Имя оператора
  • Номер телефона
  • IMEI
  • Баланс счета
  • Получены или нет права DeviceAdministrator
  • Получены или нет права суперпользователя
  • Местное время

Собранная информация отправляется на сервер в виде шифрованного JSON-объекта.

 

Эта информация передается на актуальный на время связи командный сервер и при каждом последующем соединении. Кроме того, зловред сообщает хозяину о своем состоянии: приложение отправляет  на командный сервер актуальные таблицу премиум-номеров и префиксов для отправки SMS (параметр «aoc»), список  заданий («task») и список C&C серверов. При первом сеансе связи с командным сервером отправляется пустая таблица и список адресов командных серверов, расшифрованных описанным выше алгоритмом. В ходе сеанса связи с C&C троянец может получать обновленную таблицу премиум-номеров и новый список адресов C&C.

С сервера в ответ приходит другой JSON-объект, который после расшифровки может выглядеть так:

{"nextTime":1,"conf":{"key_con":"oKzDAglGINy","key_url":"3ylOp9UQwk",
"key_die":"ar8aW9YTX45TBeY","key_cip":"lRo6JfLq9CRNd6F7IsZTyDKKg8UGE5EICh4xjzk"}}

nextTime — следующее время обращения к серверу.

conf — конфигурационные строки.

Конфигурационные строки могут содержать указания на изменения C&C, таблицы номеров с префиксами и ключами для отправки SMS и новые задания с параметрами. Кроме того, в conf может передаваться ключ для шифровки трафика (key_cip).

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

Каждое входящее SMS-сообщение проверяется на наличие одного из ключей. Если найден ключ — выполняется соответствующее действие:

key_con ‑ немедленное подключение к серверу.

key_die ‑ удаление заданий из базы данных.

key_url ‑  смена C&C сервера; за ней в тексте SMS должен идти новый адрес. Таким образом можно создать новый C&C сервер и отправить его адрес по SMS с соответствующим ключом key_url, после чего все зараженные устройства станут работать с новым сервером.

Если в conf найден ключ на отправку SMS, то троянец отправляет сообщение на полученные c С&C номера. Таким образом для получения команды на отправку платных SMS даже не нужно наличие интернета:

 

Команды сервера

С C&C сервера троянцу приходят команды, которые заносятся в базу. Каждая запись команды в этой базе содержит порядковый номер команды, указанное сервером время ее выполнения и параметры.

Список команд:

  1. Отправить SMS. В параметрах содержится номер и текст. Ответные SMS удаляются.
  2. Пинг.
  3. Получить баланс по USSD.
  4. Выступить в качестве прокси (отправить указанные данные на указанный адрес и вернуть ответ).
  5. Подключиться к заданному адресу (кликер).
  6. Скачать и установить файл с сервера.
  7. Отправить на сервер список установленных на смартфоне приложений.
  8. Отправить информацию об указанном командным сервером установленном приложении.
  9. Отправить на сервер контакты пользователя.
  10. Удаленный Shell. Выполняет указанные злоумышленником команды в консоли.
  11. Передать файл всем обнаруженным Bluetooth-устройствам.

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

Несмотря на такие внушительные возможности, Backdoor.AndroidOS.Obad.a не очень распространен. По данным KasperskySecurityNetwork за три дня наблюдений на его заблокированные установки приходится не более 0,15% всех попыток заражения мобильных устройств различными вредоносными программами.

В завершение этого обзора хотим отметить, что по своей сложности и по количеству использованных неопубликованных уязвимостей Backdoor.AndroidOS.Obad.a  ближе к вредоносному ПО под Windows, чем к другим троянцам под Android. А это значит, что стремительно растет не только количество Android-зловредов, но и их сложность.

Постинги на схожие темы 

Всего комментариев: 2
  1. алексей

    как его удалить то??????

  2. Бакар

    У меня такой же вирус. Помогите его удалить.в приложении com android google sys произошла ошибка

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *