diff options
author | Sergey Nazaryev <sergey@nazaryev.ru> | 2016-01-27 23:12:17 +0300 |
---|---|---|
committer | Sergey Nazaryev <sergey@nazaryev.ru> | 2018-01-26 01:31:46 +0300 |
commit | aebcdad9331b4db74d6bb540d14d3ec232ccb576 (patch) | |
tree | 5ac71bac5cdcbf2b1eeacb13e47488f69873e415 | |
download | drweb-aptitude-test-master.zip drweb-aptitude-test-master.tar.gz drweb-aptitude-test-master.tar.bz2 |
-rw-r--r-- | README.md | 84 | ||||
-rwxr-xr-x | first-classes.dex | bin | 0 -> 433148 bytes | |||
-rwxr-xr-x | second-classes.dex | bin | 0 -> 40932 bytes | |||
-rwxr-xr-x | test.apk | bin | 0 -> 802951 bytes |
4 files changed, 84 insertions, 0 deletions
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 Binary files differnew file mode 100755 index 0000000..111f0ef --- /dev/null +++ b/first-classes.dex diff --git a/second-classes.dex b/second-classes.dex Binary files differnew file mode 100755 index 0000000..439223b --- /dev/null +++ b/second-classes.dex diff --git a/test.apk b/test.apk Binary files differnew file mode 100755 index 0000000..b4b6ef8 --- /dev/null +++ b/test.apk |