Тестовое задание в 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"