Как я говорил в своем прошлом посте, количество вредоносного ПО для платформы Android неуклонно растёт. Причин роста много, в том числе та, что стать участником партнёрской программы и приступить к распространению вредоносного ПО может каждый и таких людей становится все больше. А те, кто в черном бизнесе уже давно, наращивают свои мощности и выдают всё больше вредоносного ПО. Пока речь идёт о количественной характеристике, будем называть это «ростом вширь». Рост интенсивный мы считаем качественным – в данном случае речь идёт о совершенствовании создаваемого вирусописателями ПО. Как правило, это уникальные образцы зловредов, написанные одним человеком или группой лиц. Такие зловреды совершенно не похожи на общие тренды.
Нестандартный подход к созданию вредоносного кода и обходу детектирования антивирусной программой виден в образце под именем Backdoor.AndroidOS.Cawitt.a.
Образец попал к нам как часть спам-рассылки, и сразу привлёк к себе внимание. Необычная обфускация кода, резидентный запуск при старте системы – это неполный список его «фишек» (рис. 1).
РИС. 1 ОБФУСКАЦИЯ КОДА
Как видно, каждый класс и каждый метод названы мужскими именами и многие функции имеют одинаковые имена (что в целом характерно для JAVA-приложений, но во вредоносном ПО сильно усложняет анализ). Очевидно, что целью является обойти антивирусную защиту и увеличить время анализа образца (рис.2).
Очень интересен механизм, по которому Backdoor.AndroidOS.Cawitt.a получает команды от центра управления.
Бот использует социальную сеть Twitter. В своем теле он хранит наборы строк, из которых он побуквенно, замысловатым алгоритмом формирует псевдонимы. Получившиеся после расшифровки имена Twitter-профилей бот складывает со строкой «http://mobile.twitter.com/» и делает http-запрос к получившемуся URL (рис. 3)
Рис. 2 Обращение к twitter.com
Рис. 3 Исходные псевдонимы и тэги, в них зашифрованы реальные профили Твиттера
Нам удалось расшифровать псевдонимы, и мы получили три профиля в Твиттере (имена скрыты):
******10
******72
****655
Если зайти на получившийся URL, то можно увидеть следующее:
Рис 4. Скриншот Твиттера с доменом управляющего центра
Зачем же вирусописателю обращаться из бота к Твиттеру? В твиттах хранятся домены контрольных центров бота. И их очень легко менять на лету. На основе полученных из Твиттера доменов бот формирует новый URL. Для того чтобы получить команду хозяина, бот делает POST-запрос к домену, полученному из Твиттера, складывая доменное имя со строкой «/carbontetraiodide».
Рис 5 Место, куда вставляется домен, полученный из Твиттера
POST-запросы бот тоже строит хитрым способом: он собирает последовательности пар «имя параметра – значение»
Вариант 1: («task_title», task_title), («task_done», flag), («data», string)
Вариант 2: («botid», string), («device_id», string), («imei», string ) , («phone_number», string ) , («modules», Collection )
В ответ на запрос бот получает команду и отправляет её в очередь команд. Затем обратывает команду. Таким образом бот в зависимости от запроса получает команды или отчитывается о проделанной работе. В текущем виде единственной зловредной функцией бота является отправка SMS без ведома пользователя. Но не стоит забывать, что вместе с запросом к центру управления бот отсылает данные пользователя. Нам так и не удалось получить хотябы одну команду от центра управления и нам не известно, на какие номера и префиксы бот может отправлять SMS. Учитывая структуру запросов (те данные, что отсылает бот), можно смело делать вывод о том, что данный зловред может успешно работать в любой стране мира.
Рис 6. Функция отправки SMS
В итоге мы имеем необычный способ засорения кода, который непросто анализировать. Настораживает и отсутствие модулей (не считая единственного модуля отправки SMS), данные о которых бот отсылает в центр управления. Этими модулями может быть всё что угодно.
be_social_plugin-Twitter и Backdoor для Android OS — в чем связь?