Главная » 2013 Февраль 7 » как разводят на деньги пользователей Android
16:57 как разводят на деньги пользователей Android | |
Каждый, наверное, сталкивался с сайтами, предлагающими пользователю платную подписку на ту или иную услугу. В силу специфики моей работы мне иногда приходится проверять подобные ресурсы. Чаще всего они наспех набиты контентом, фальшивыми комментариями и созданы специально для обмана пользователя. Создатели обещают золотые горы, а на деле все заканчивается банальным разводом на деньги. Данная статья — один из частных случаев анализа фейк-сайта с приложением для Android. Все началось с того, что мне прислали на проверку сайт. По виду — обычный варезный блог с громкими заголовками типа "Бесплатные обои и картинки для андроида”, "Самые умные программы на андроид” и тому подобное. Сразу бросилось в глаза, что во всех постах одинаковые комментарии, оставленные "разными людьми”. Содержание примерно следующее: — Сайт просит ввести номер телефона, это нормально? — Да, это для регистрации, проверка, что ты не бот. — О, круто, спасибо! В общем факт обмана виден сразу, но я решил копать дальше. При попытке загрузить приложение из любого поста с помощью стационарного компьютера, меня перекидывает на другой ресурс. Ссылка вида http://****/**/?sub_id=* (ага, возможно партнерочка). Там мне предлагают купить за деньги Google Chrome (и ведь ведутся же люди!). Допустим… Но ведь ресурс посвящен приложениям для Android устройств, значит, нужно попробовать зайти с девайса. Как и следовало ожидать: вместо предложения купить супер-браузер загружается install.apk. "Вот это уже интересно” — подумал я и не ошибся. Первое, что бросилось в глаза — огромное количество потенциально опасных разрешений. ![]() ![]() Не слабый набор, правда? Мне стало интересно, что же приложение делает со всеми этими разрешениями. Не буду описывать сам процесс декомпиляции, лишь упомяну, что использовал apktools, dex2jar, JD-GUI иjad. В итоге я получил декомпилированные ресурсы и набор классов. Первое, на что я обратил внимание, это, разумеется, AndroidManifest.xml. Коротко о разрешениях: READ_PHONE_STATE — получение информации о телефоне (номер телефона, серийник, информация о вызовах); SEND_SMS — отправка sms-сообщений; RECEIVE_SMS — прием sms-сообщений и последующее удаление их (именно поэтому приоритет у MainReceiver наивысший); INTERNET — использование интернета; WAKE_LOCK — отключает спящий режим (видимо для повышения стабильности :); ACCESS_NETWORK_STATE — информация о сетевых соединениях; RECEIVE_BOOT_COMPLETED — получать сообщения о загрузке устройства, что позволяет выполнять приложение при запуске; WRITE_EXTERNAL_STORAGE — запись/удаление информации на карте памяти; INSTALL_PACKAGES — приложение может устанавливать или обновлять пакеты; DELETE_PACKAGES — приложение может удалять пакеты; READ_CONTACTS — доступ к контактам; CALL_PHONE — осуществляет телефонные вызовы; CALL_PRIVILEGED — осуществляет телефонные вызовы, в том числе по экстренным номерам; GET_TASKS — получение данных о запущенных приложениях; SYSTEM_ALERT_WINDOW — показывает сообщения поверх всех окон; RESTART_PACKAGES — способно завершать фоновые процессы других приложений (официальное описание); KILL_BACKGROUND_PROCESSES — способно завершать фоновые процессы других приложений (официальное описание); READ_LOGS — чтение конфиденциальных данных из журнала. Так же есть ресивер, который срабатывает на следующие намерения: SMS_RECEIVED — получено sms-сообщение; custom.alarm — внутреннее событие; BOOT_COMPLETED — загрузка завершена; USER_PRESENT — пользователь разблокировал устройство; PHONE_STATE — изменение состояния сотовой сети (не знаю, как выразиться корректней, также позволяет мониторить вызовы пользователя); SCREEN_OFF — при отключении экрана; SCREEN_ON — при включении экрана. Так как времени на изучение приложение у меня было немного (стояла задача в общих чертах узнать, что делает приложение), я не стал вдаваться во все тонкости. Почти все URL там зашифрованы, и для расшифровки нужно просидеть не один час. Можно, конечно, получить их с помощью WireShark, но в этом нет необходимости. Работа приложенияПришло время заглянуть в декомпилированные классы. Начнем пожалуй с MainActivity. Я прокомментирую функции, на которые стоит обратить внимание: При детальном анализе можно увидеть, что сообщение отправляется сразу, а не после нажатии кнопки "Далее” (как это обычно принято). Лицензионное соглашение есть, но оно очень хорошо запрятано. Но отправка сообщения — это не самая страшная проблема. Помните большое количество разрешений? Давайте посмотрим, зачем они все-таки нужны приложению. Чтобы сэкономить место и ваше время, я не буду выкладывать MainReceiver. Сразу скажу, что он обрабатывает и удаляет (!) входящие сообщения, а в случае необходимости еще и отвечает. Самое интересное находится в MainService. При запуске сервис подключается к серверу, запрашивает оттуда данные, получает нечто в json и при успешном ответе запускает методexecuteCommands(jsonobject1). И тут начинается магия: Фактически это троянский конь. Классический такой троянский конь, позволяющий сливать данные пользователя и управлять его телефоном. РезюмеНа хабре не тот контингент, которому стоит читать нотацию на тему "не ставьте не проверенные приложения”, поэтому данную часть своего выступления я опущу. Первые вредоносные приложения просто отправляли платные sms-сообщения, потом начали рассылать себя всем из списка контактов, а теперь — мы имеем полноценную троянскую лошадь, которую можно дергать за поводья удаленно. Эволюция… Перечислю еще раз вкратце (для тех, кто пролистал, не читая код с моими комментариями) что умеет делать приложение: 1. Менять URL основного сервера 2. Устанавливать sms-фильтры (удалять то, что попадает в фильтр еще до того, как пользователь успеет получить уведомление) 3. Удалять сообщения 4. Отправлять сообщения 5. Выполнять http-запросы (botnet???) 6. Проверять наличие обновлений и обновляться 7. Удалять произвольные пакеты 8. Отправлять пользователю нотификации 9. Открывать произвольный URL 10. Сливать контакты на сервер 11. Сливать список установленных приложений на сервер 12. Выполнять произвольные вызовы (например, в Замбези) 13. Использовать Twitter в качестве альтернативного способа обновления некоторых данных (к сожалению, декомпиляция прошла с ошибками и не все файлы удалось просмотреть). На этом все. Не попадайтесь. | |
|
Всего комментариев: 1 | ||
| ||