From aebcdad9331b4db74d6bb540d14d3ec232ccb576 Mon Sep 17 00:00:00 2001 From: Sergey Nazaryev Date: Wed, 27 Jan 2016 23:12:17 +0300 Subject: Initial commit. --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++ first-classes.dex | Bin 0 -> 433148 bytes second-classes.dex | Bin 0 -> 40932 bytes test.apk | Bin 0 -> 802951 bytes 4 files changed, 84 insertions(+) create mode 100644 README.md create mode 100755 first-classes.dex create mode 100755 second-classes.dex create mode 100755 test.apk diff --git a/README.md b/README.md new file mode 100644 index 0000000..faad56e --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +Тестовое задание в 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" diff --git a/first-classes.dex b/first-classes.dex new file mode 100755 index 0000000..111f0ef Binary files /dev/null and b/first-classes.dex differ diff --git a/second-classes.dex b/second-classes.dex new file mode 100755 index 0000000..439223b Binary files /dev/null and b/second-classes.dex differ diff --git a/test.apk b/test.apk new file mode 100755 index 0000000..b4b6ef8 Binary files /dev/null and b/test.apk differ -- cgit v1.1