SMS-троянец обходит CAPTCHA
В конце прошлого года мы столкнулись с SMS-троянцем Trojan-SMS.AndroidOS.Podec, в котором использовалась очень мощная легитимная система защиты от анализа и детектирования. После снятия защиты мы увидели небольшой SMS-троянец, большая часть функций которого находилась на стадии доработки. Но прошло немного времени, и в начале этого года нам удалось перехватить полноценную версию Trojan-SMS.AndroidOS.Podec.
Обновленный троянец оказался весьма примечателен: в нем заложена функциональность как отправки сообщений на платные короткие номера с использованием механизмов обхода системы Advice of Charge (уведомление пользователя о стоимости услуги и запрос на подтверждение ее оплаты), так и осуществления подписки жертвы на платные услуги, причем последняя осуществляется с обходом CAPTCHA. Такая функциональность до этого не встречалась ни в одном известном «Лаборатории Касперского» Android-троянце.
Распространение В данной статье речь идёт о Trojan-SMS.AndroidOS.Podec версии 1.23 (получена из анализа кода), хэш суммы:
72ADCF52448B2F7BC8CADA8AF8657EEB0D5708158B8782F115670BD51833AC5C
Данная версия троянца распространена в России и соседних с ней странах.
Страна Число попыток заражений уникальных пользователей Россия 3666 Казахстан 339 Украина 305 Беларусь 70 Кыргызстан 23 Тренд заражений:
Количество попыток заражения уникальных пользователей
Источники заражения Судя по нашей статистике, собранной с помощью Kaspersky Security Network, основными источниками распространения изучаемой версии зловреда являются различные домены со звучными именами (Apk-downlad3.ru, minergamevip.com и т.д.), а также серверы популярной социальной сети «Вконтакте», использующиеся для хранения пользовательского контента.
Распределение источников заражения файлов
Доля серверов социальной сети преобладает, но, к сожалению, сервис хранения файлов в этой сети анонимен, и поиск путей появления зловредов невозможен. Однако дальнейшее расследование выявило существование в этой сети целого ряда сообществ, распространяющих Trojan-SMS.AndroidOS.Podec:
http://vk.com/vzlomannye_igry_dlya_android http://vk.com/skachat_minecraft_0_9_0_android http://vk.com/minecraft_pe_0_9 http://vk.com/vzlom_igry_android_mody http://vk.com/igry_android_cheats http://vk.com/android_mody_apk http://vk.com/novye_igry_na_android http://vk.com/skachat_hill_climb_racing_bpan http://vk.com/na_android_igry Все группы из этого списка были наполнены схожим по сути контентом: картинками, ссылками, сообщениями.
Тематика каждой группы посвящена, как правило, одной конкретной взломанной игре или набору взломанных игр — киберпреступники рассчитывали привлечь внимание потенциальных жертв, заинтересованных в бесплатном использовании популярного платного контента.
Почти все сообщения на стене группы являются ссылками на сайты, якобы содержащие игры и приложения для платформы Android. То же самое касалось раздела «Ссылки». На деле единственной целью создания этих сайтов было распространение различных версий Trojan-SMS.AndroidOS.Podec.
Восемь групп социальной сети, похожих по стилю оформления
Стиль ведения и оформления групп (например, использование ключевых слов вместо описания, обилие свойственных ботам простых общих сообщений и т.д.), а также размещение в них ссылок на сайты-фальшивки большинство из которых выглядит как копии друг друга, позволяют сделать вывод о причастности к распространению зловреда специалистов по «черной» поисковой оптимизации (SEO, Search Engine Optimization). Перечисленные приемы помогают им повысить позиции вредоносных ресурсов (сайтов и групп) в выдаче поисковых систем и, таким образом, увеличить их посещаемость.
Администратором всех сообществ-клонов является пользователь «Вконтакте» с ID «kminetti»; на его странице проводится реклама указанных выше сообществ. Аккаунт ведется с 12 октября 2011 г., с 2012 года на стене начали размещать ссылки на сайты и сообщества, распространяющие вредоносные приложения для мобильных платформ.
Пример постов администратора вредоносных сообществ
До этого аккаунт использовался как бот, размещающий ссылки на веб-ресурсы с целью повышения их индекса цитируемости.
Пример постов администратора сообществ, направленных на повышение индекса цитируемости сторонних ресурсов
Из всего вышесказанного можно сделать вывод, что основным каналом распространения Trojan-SMS.AndroidOS.Podec является социальная сеть «Вконтакте».
Схема заражения Попавший в «Лабораторию Касперского» образец мобильного троянца маскируется под популярное приложение Minecraft — Pocket Edition. Размер файла — 688 килобайт, что является преимуществом в глазах неопытных пользователей с медленным и/или дорогим интернетом. Размер официального приложения составляет от 10 до 13 мегабайт.
После запуска приложение запрашивает права администратора устройства; цель данного шага — противодействовать своему удалению как со стороны пользователя, так и со стороны защитных решений. Если пользователь отказался выдать права администратора, троянец повторяет свой запрос до тех пор, пока не получит желаемое. Нормальная работа с устройством при этом, фактически, невозможна.
Запрос на повышение привилегий
После того, как Trojan-SMS.AndroidOS.Podec получил привилегированный доступ, происходит загрузка (со стороннего ресурса) и установка на SD-карту устройства легитимного приложения Minecraft. Такое поведение настраивается в конфигурационном файле, поставляемом вместе с троянцем; в этом же файле указана ссылка на скачивание легитимного APK-файла. В то же время конфигурационный файл может и не содержать ссылки на приложение, в этом случае троянец просто прекращает заметную пользователю активность после запроса привилегий.
Часть конфигурационного файла с ссылкой на легитимный Minecraft
Далее троянец удаляет свой ярлык из списка приложений и заменяет его ярлыком настоящего приложения. При этом неочевидные следы троянца остаются в списке установленных приложений и списке администраторов устройства:
Кнопка удаления вредоносного приложения неактивна, а попытка снятия привилегий закончится весьма странным поведением устройства — экран заблокируется, а затем выключится на некоторое время. После включения экрана устройство показывает меню настроек, и ничто не говорит о том, что мы недавно пытались лишить приложение прав администратора.
Защита от анализа Хорошим подтверждением серьезности подхода киберпреступников к разработке Trojan-SMS.AndroidOS.Podec являются использованные техники защиты кода от анализа. Помимо добавления мусорных классов и обфускации, злоумышленники использовали дорогой легитимный протектор, который сильно усложняет получение исходного кода Android-приложения. Данный протектор предоставляет средства контроля целостности кода, скрывает вызовы всех методов и манипуляцию с полями класса, а также шифрует все строки.
Вот пример защищенного кода:
Этот же код после снятия защиты:
Управление троянцем Управление поведением Trojan-SMS.AndroidOS.Podec происходит с помощью командных серверов. Используется схема, при которой троянец обращается по протоколу HTTP к серверу и ждет SMS-сообщения с командами, управляющими его поведением. Trojan-SMS.AndroidOS.Podec использует основной и резервный списки доменных имен командных серверов — выбор конкретного центра управления происходит по случайному алгоритму. Если от основного сервера нет ответа в течение трёх дней, то используется резервный список имен. Таким образом реализуется адаптивный механизм связи с командными серверами, позволяющий обходить возможные блокировки доменных имен.
Доменные имена командных серверов и весь трафик (как HTTP, так и SMS) шифруются алгоритмом шифрования AES в режиме CBC/NoPadding с 128-битным ключом. Ключ шифрования и вектор инициализации изначально находятся в файле fXUt474y1mSeuULsg.kEaS (название данного файла отличается от модификации к модификации), расположенном в папке assetsисходного приложения. Большая часть файла представляет из себя мусор; полезная информация содержится в нем между тегами, например, [a]строка[/a].
Из расположенных между тегами строк получаются необходимые параметры шифрования (ключ и вектор) в зашифрованном виде. Далее они расшифровываются при помощи простых замен одних подстрок на другие.
Команды в расшифрованном виде представляют собой XML-документ, теги которого обозначают определенную команду, а содержимое тегов — ее параметры. Набор возможностей Trojan-SMS.AndroidOS.Podec, реализуемых посредством команд:
Сбор информации об устройстве (оператор, IMEI, номер телефона, язык интерфейса, страна и город проживания и т.д.). Получение списка установленных приложений. Получение информации об USSD. Отправка SMS. Установка фильтра на входящие сообщения. Установка фильтров на входящие и исходящие звонки. Показ пользователю рекламы (отдельная нотификация, открытие страницы, диалог и другие виды демонстрации рекламного контента). Удаление заданных сообщений. Удаление заданных записей о звонках. Загрузка на сервер злоумышленников исходного HTML-кода заданной ими страницы. Выполнение DDoS-атаки, накручивание счетчика посещений сайтов. Осуществление подписки пользователя на платный контент. Самообновление. Осуществление исходящего вызова. Выгрузка входящих сообщений по заданным центром управления условиям. Удаление заданного центром управления приложения. Даже при беглом анализе исполняемого кода зловреда, внимание привлекает обилие функций для работы с HTML и HTTP. Помимо стандартной для данного вида троянцев функциональности (отправка и перехват текстовых сообщений, возможности совершать звонки и манипулировать журналами SMS и звонков), в Trojan-SMS.AndroidOS.Podec присутствуют функции по конфигурируемому посещению веб-страниц и пересылке их кода на сервер злоумышленников. Но ключевой особенностью троянца является функция распознавания изображений CAPTCHA.
Общая схема работы Trojan-SMS.AndroidOS.Podec приведена ниже.
Таким образом, функциональность взаимодействия с веб-ресурсами является источником двух типов угроз:
Троянец содержит функции, позволяющие выполнять простейшую HTTP Flood DDoS-атаку. Строки в конфигурационном файле, отвечающие за эту опцию, выглядят следующим образом:
Полученная ссылка отправляется на загрузку, выполняется вызов функции sleep () с параметром «seconds», процесс повторяется указанное в параметре «limit» число раз.
Благодаря тому, что используемая злоумышленниками схема позволяет конфигурировать частоту и количество обращений, эта функциональность может использоваться не только для DDoS-атак. В частности, ее можно использовать для накрутки счетчиков посещаемости, тем самым получая прибыль за счет рекламных показов и партнерских программ.
Одна из самых опасных возможностей Trojan-SMS.AndroidOS.Podec — использование конфигурируемых правил посещения веб-страниц с возможностью распознавать на них CAPTCHA. Это позволяет скрытно подписать пользователя устройства на дорогостоящие платные подписки. Эта уникальная функциональность троянца, которую стоит рассмотреть подробнее. Платные подписки Существуют две основных модели осуществления подписки на контент на веб-ресурсе:
Псевдоподписка. При использовании данной модели пользователь должен зайти на веб-ресурс и ввести номер своего телефона. После этого ему приходит SMS-сообщение с предложением оплатить услугу путем отправки ответного сообщения с любым текстом. После отправки сообщения с лицевого счета абонента списывается сумма, зависящая от тарифной таблицы конкретного сотового оператора. Такие сообщения приходят периодически, и каждый раз пользователь сам должен принимать решение об отправке ответного сообщения — именно поэтому данную модель часто называют псевдоподпиской. МТ-подписка. В этом случае пользователь вводит номер своего телефона на веб-ресурсе и ожидает SMS-сообщения с кодом подтверждения. Затем этот код нужно ввести на сайте оператора, тем самым соглашаясь с условиями подписки. После этого оператор будет периодически списывать с лицевого счета абонента сумму, указанную в договоре о подписке. В Рунете существует ряд партнерских программ, которые предоставляют услуги агрегации таких видов платежей. То есть при создании сервиса, с которого возможна подписка на платный контент, злоумышленникам не обязательно контактировать с операторами сотовой связи, за них эту работу выполняют партнерские программы. При этом теряется часть дохода (в среднем 40–50%) создателей сервисов, но повышается анонимность их финансовых транзакций. Подписка на платный контент с помощью троянца наносит пользователю ощутимый вред. В случае псевдоподписок стоимость одного ответного сообщения может варьироваться от $0,5 до $10. В случае же МТ-подписки, стоимость согласовывается в каждом отдельном случае через партнерскую программу напрямую с оператором сотовой связи. Наиболее опасными факторами являются скрытость и периодичность списания средств — в случае подписки пользователя на несколько источников «контента», он может долго разбираться, куда именно и как уходят средства с его мобильного счета.
Пример работы троянца Нам удалось перехватить взаимодействие Trojan-SMS.AndroidOS.Podec с его центром управления, и в рамках данной сессии он использовал следующую схему:
Осуществлялось посещение сайта RuMaximum.com, предоставляющего услуги тестирования пользователей. Для получения результатов теста пользователю необходимо подписаться на услуги сайта.
С помощью GET-запроса троянец имитирует ответы на вопросы и в результате переходит по ссылке вида http://rumaximum.com/result.php? test=0&reply[1]=0&reply[2]=0&reply[3]=0&reply[4]=0&reply[5]=0&reply[6]=0&reply[7]=0&reply[8]=0&reply[9]=0&reply[10]=0. По этой ссылке находится следующий веб-документ:
После ввода номера телефона генерируется уникальная «лендинговая» страница оператора сотовой связи, на которой есть запрос на ввод текста с изображения CAPTCHA и кода подтверждения из полученного на телефон SMS-сообщения. Троянец заполняет оба поля, тем самым подтверждая подписку. Далее происходит перенаправление через систему мобильной коммерции totmoney.ru на результаты теста.
Все эти действия троянец выполняет автоматически, используя конфигурацию, присланную с сервера киберпреступников. Но жертва всего этого не видит и не подозревает, что на ее устройстве развернулась такая активность.
Функциональность платной подписки Поле в получаемой с сервера злоумышленников XML-конфигурации, отвечающее за проведение операции подписки пользователя на платный контент, выглядит следующим образом:
Разберем поле конфигурации подробно:
verify — массив строк с разделителем »-S-». Содержит информацию, необходимую для получения значения CAPTCHA». -verify[0] — если это поле не равно «null», то распознавание CAPTCHA необходимо, в противном случае происходит дальнейшая обработка. Может содержать файл картинки в кодировке base64 (сделано для обработки статичных изображений и CAPTCHA) или идентификатор картинки;- verify[1] — ключ сервиса «http://antigate.com», используемого для распознавания CAPTCHA, необходим для авторизации на сервисе;- verify[2] — минимальная длина картинки, используется в служебных целях;- verify[3] — максимальная длина картинки, используется в служебных целях;- verify[4] — языковая принадлежность символов, изображенных на картинке.
service — сервис, к которому происходит обращение; search — массив строк с разделителем »-S-». Используется для поиска подстрок в посещаемой ссылке и принятии на основе результатов поиска различных решений о требуемом методе подписки; images — в этой версии не используется; actions — массив строк с разделителем »-S-». Содержит конечные ссылки, по которым переходит сервис для инициации/завершения процесса подписки; type — тип запроса; source — отвечает за необходимость отправления исходного кода страницы на сервер киберпреступников; domain — в случае необходимости отправления исходного когда страницы указывает на командный сервер, куда происходит отправка. Для получения кода HTML-страниц и отправки их на сервер злоумышленников используется интерфейс Observable, на который, в случае необходимости, с помощью JavaScript отправляется требуемая информация при загрузке страницы.
Получение исходного кода страниц необходимо для проведения злоумышленниками анализа их структуры и составления необходимой конфигурации для модуля осуществления платных подписок. Также такой источник исходных кодов обеспечивает получение кода страницы в том виде, в котором она могла быть показана жертве. В итоге злоумышленникам на своей стороне проще анализировать страницу для составления команды для осуществления подписки.
Функция осуществления платных подписок расположена в классе CustomWebView, который наследуется от класса WebViewClient. В нем переопределены метод onLoadResource, использующийся для получения ссылки на картинку, и onPageFinished, использующийся для постобработки загруженного ресурса. Постобработка основана на разборе конфигурации и последующем посещении требуемых ссылок с помощью функции loadUrl. В случае необходимости дополнительно вызывается обработчик CAPTCHA.
Обход CAPTCHA У разных партнёрских программ различные требования к оформлению веб-ресурса, на котором будут размещаться механизмы осуществления подписки. Например, существует требование на размещение модуля CAPTCHA, служащего для подтверждения того, что запрос осуществляется не в автоматическом режиме. В большинстве случаев партнерская программа осуществляет перенаправление браузера на сайт оператора, где пользователю предлагается подтвердить свой запрос на подписку, введя CAPTCHA. Как уже было сказано выше, отличительной особенностью Trojan-SMS.AndroidOS.Podec является его способность обходить защиту от роботов CAPTCHA.
SMS-троянец Podec осуществляет подписку жертвы на платные услуги, причем она осуществляется с обходом CAPTCHA
Tweet
Обработчик CAPTCHA взаимодействует с сервисом Antigate.com, который предоставляет услуги по ручному распознаванию текста на изображениях. Вот что об этом сообщает сам сервис:
«Antigate.Com — это сервис по ручному распознаванию текста с изображений. Работает это просто: ваше приложение загружает изображение в нашу систему и через несколько секунд получает готовый текст.»
Источник antigate.com
Иначе говоря, текст с изображения CAPTCHA распознает сотрудник сервиса. Согласно данным Antigate.сom, большинство его сотрудников находится в Индии.
Источник antigate.com
Распределение работников Antigate.com по странам
Общение троянца с Antigate.com происходит путем использования HTTP API сервиса: с помощью POST-запроса отправляется картинка, на которой необходимо распознать текстовое сообщение, затем с помощью GET-запросов осуществляется мониторинг результата распознавания. Полученный результат (если он, конечно, был получен за разумное время), подставляется в ссылки из поля «actions» полученной конфигурации, и по ним осуществляются переходы с помощью функции loadUrl ().
В случае если механизм подписки требует подтверждения по SMS, троянец с помощью устанавливаемого злоумышленниками фильтра ищет сообщение, которое содержит код подтверждения, и с помощью регулярных выражений получает из него код.
Общая схема осуществления подписки
Общая схема осуществления платной подписки
В целом, модуль осуществления платных подписок состоит из Observer’a SubscribeService, который «слушает» события записи в интерфейс «HTMLOUT» и при получении оттуда данных (скачанной страницы) отправляет их на сервер злоумышленников с помощью класса Submiter, наследующего класс AsyncTask. Также SubscribeService принимает на вход параметры команды из диспетчера, инициализирует CustomWebView и начинает обработку задачи с помощью SubscribeTask. SubscribeTask запускает CustomWebView, в котором происходит обработка входных параметров, и принимается решение о механизме осуществления подписки. В случае необходимости, вызывается CaptchaProcessor, который отвечает за взаимодействие с сервисом распознавания текста и обработку запросов, требующих введения кода подтверждения и нарисованных на изображении CAPTCHA символов.
Заключение На основе ранее поступавших к нам образцов Trojan-SMS.AndroidOS.Podec можно сделать вывод, что троянец находится в активной разработке. Код подвергается рефакторингу, появляются новые возможности, перерабатывается архитектура модулей.
Мы считаем, что этот троянец разрабатывается группой Android-разработчиков в тесном сотрудничестве с Black SEO-специалистами, специализирующимися на мошенничестве, нелегальной монетизации и генерации трафика. Об этом свидетельствуют:
схема распространения в сети «Вконтакте» с использованием механизмов социальной инженерии; использование коммерческого протектора; нетривиальная схема отъёма денег у жертвы, включающая обход CAPTCHA. В коде рассматриваемой версии Trojan-SMS.AndroidOS.Podec встречается функциональность, которая пока не используется, но выдает дальнейшие задумки вирусописателей. Например, присутствует вспомогательная функция isRooted (), которая позволяет проверить, не получал ли владелец устройства прав суперпользователя. Данная функция не используется в основном коде троянца, что позволяет предположить появление в новых версиях функциональности, связанной с использованием прав суперпользователя.
Пользователи продуктов «Лаборатории Касперского» уже защищены от всех существующих модификаций троянца Trojan-SMS.AndroidOS.Podec. Тем не менее, мы рекомендуем пользователям устанавливать приложения только из официальных магазинов, например, Google Play. Ни в коем случае нельзя поддаваться на провокации вирусописателей по скачиванию якобы бесплатных, взломанных приложений. Финансовый риск от скачивания и запуска троянца намного превосходит цену за легитимное ПО.
За помощь в подготовке материала благодарим ОАО «Мобильные ТелеСистемы» — в частности, экспертов по контролю партнерского трафика.
Полный текст статьи читайте на Лаборатория Касперского