aboutsummaryrefslogtreecommitdiff

Тестовое задание в Dr. Web на вакансию "Вирусный аналитик-стажёр Android"

Во время выполнения тестового задания использовалось следующее ПО:

  • fernflower
  • dex2jar
  • jdgui

Задание 1

Изучить first-classes.dex, найти вредоносный функционал и составить подробное описание угроз (без копирования кода, своими словами).

Решение

Данное приложение (com.creativemobi.DragRacing) было инфицировано и, как я понимаю, распространялось в виде APK на варезниках (приложение популярно, разработчик на Google Play с пометкой «Лучший разработчик»). На мой взгляд, эта система инфицирования APK автоматическая и мало зависит от инфицируемого приложения. Вредоносный функционал: типичный «ботнет-клиент», отправляющий дампы пришедших SMS и номеров телефонов входящих и исходящих звонков, а так же выполняющий некий набор команд, приходящих из «командного пункта» (lebar.gicp.net, бэкэнд на ASP.NET, домен в любой момент может поменяться, конфиг со всеми необходимыми параметрами получается с «текущего» сервера).

Вредоносный функционал находится в пакете com.GoldDream.zj и хранит в себе три класса: - zjReceiver выполняет роль Android-ресивера, который вызывается при описанных в AndroidManifest'е экшенах: обрабатываются экшены получения SMS и звонков (android.intent.action.NEW_OUTGOING_CALL, android.provider.Telephony.SMS_RECEIVED, и аналогичные для получения звонков и отправления SMS), таким образом все SMS и номера дампаются в два файла, замаскированные под файлы того приложения, которое было инфицировано. Также обрабатывается экшен BOOT для запуска главного сервиса при старте ОС.

  • zjService — сервис, выполняющий операции каждые n минут (по умолчанию 3), пришедшие из «командного пункта»:

    • команда «Позвонить» по указанному в аргументе с сервера номеру,
    • команда «Отправить SMS»,
    • команды «Удалить приложение» и «Установить приложение» (вызывая менеджер пакетов Android),
    • команда «Отправить локальный файл». Каждые n минут он также отправляет сдампленные звонки и SMS и чистит дампы и пытается зарегистрировать устройство в своей системе на основании IMEI, серийного номера SIM, юзерагента встроенного в Android Webkit'а и IMSI.
  • UploadFiles — хелпер для загрузки файлов а-ля загрузка файлов в HTML-форму «командного пункта».

Задание 2

Изучить second-classes.dex, найти вредоносный функционал и составить подробное описание угроз (без копирования кода, своими словами).

Решение

Более качественно написанный ботнет-клиент, чем в задании task #1, специализирующийся на SMS. Вредоносный функционал: отправляет контакты в XML-формате на CnC-сервер (load-date.ru), хранит входящие и исходящие SMS в своей sqlite-БД, данные из которых периодически отправляет на сервер и чистит. Отлавливает BOOT-экшн для запуска сервиса, который в свою очередь настраивает AlarmManager на выполнение вышеописанных действий через некоторое время. Так как используется AlarmManager, то телефон может нормально «засыпать», в отличие от реализации «задержки» с помощью sleep в task #1. С сервера приходят задания на отправку сообщений на короткие номера, для подтверждения парсятся входящие смски с помощью заранее написанных регулярок и отправляются обратно для подтверждения (почему-то автор малвари назвал это «логикой каптчи»). Сервисные сообщения о подписках и платных услугах специально скрываются от пользователя. Если я правильно понял, то при запуске приложения пользователя заспамливают просьбой разрешить стать «администратором устройства» этому приложению.

Задание 3

Задание для test.apk: приложение запрашивает пароль, необходимо его узнать.

Решение

"Ninja 300"