1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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"
|