Если ли вирусы на джаве

Обновлено: 18.04.2024

Во всех моих предыдущих статьях разбирались PE–файлы, поэтому я решил несколько разнообразить рубрику и сделать обзор вредоноса, написанного на Java. Почему именно на Java?

Дело в том, что они реально существуют, а внимания им уделяется довольно мало. По статистическим данным ЛК, в настоящее время их очень и очень много в интернете.

А как же они распространяются и почему приобрели популярность? Основной способ их доставки до пользователя — загрузки drive-by. Напомню, что загрузка drive-by — это метод, который позволяет малварописателям запустить на компьютере жертвы конечную малварь при помощи целой цепочки вредоносов, расположенных в вебе. В эту цепочку входит редиректор, скриптовый загрузчик и эксплойт. Как правило, последний загружает какой–нибудь бэкдор или троянец, ворующий конфиденциальные данные. А стали они популярны, по-видимому, из-за того, что были открыты критические уязвимости, с помощью которых можно легко загрузить файл по ссылке и исполнить его. Рост популярности платформы Java по всему миру также сыграл не последнюю роль. В качестве экземпляра для разбора я выбрал Java–загрузчик, работающий на основе эксплойта, использующего уязвимость CVE-2009-3867. Может показаться, что раз уж эта дыра не свежая, то и угроза совсем не актуальная. Однако это не так — самые последние даунлоадеры на JavaScript скачивают именно такую Java–малварь. По-видимому, пользователи не спешат апдейтить JRE…

Для начала разберем, как же наш зверек запускается. Или что его запускает. В подавляющем большинстве случаев это делает html–страничка или скрипт, генерирующий html-код. Чтобы установить и запустить Java–апплет, применяются тэги или . Основные параметры первого тэга это archive (указывает на местоположение jar–архива) и code (указывает на Ява-класс, который следует запустить). Данные из html’ки в апплет можно передавать с помощью тэга . Далее, при разборе самого зловреда, я покажу, как используются данные ‘data’, передаваемые в рассматриваемой страничке.

Итак, jar–файл запустился. Как же его теперь разбирать? Как вообще устроены Java–программы? Сам jar–файл — всего лишь ZIP-архив, он является контейнером. Его можно распаковать при помощи практически любого архиватора, что я и сделал.

Внутри него содержатся class–файлы. А это и есть то, что нас интересует — скомпилированные Java-исходники. Распаковав контейнер, получаем три таких класса и манифест. Я сразу обратил внимание на AdgredY.class, вспомнив, что параметр code тэга содержит именно это значение. Кстати, как заметит внимательный читатель, там содержится dev.s.AdgredY, а не просто AdgredY. Все дело в том, что точки представляют собой разделитель между папками. Таким образом, интерпретатор, обрабатывая тэг, запомнит, где находится необходимый ему класс, преобразуя переменную в путь на диске.

Так как .class — скомпилированный объект, содержащий байткод, нам необходимо превратить его в то, что можно анализировать. Я использовал бесплатный Java–декомпилятор JAD. Как ни странно, но у меня ушло немало времени, чтобы скачать его из интернета (притом, что он является наиболее популярной программой для этих целей, которая, к тому же, ничего не стоит). Применив его на AdgredY.class, на выходе я получил декомпилированный, практически исходный, код. Открыв полученный файл в Hiew, я сразу же заметил две большие строки, состоящие из символов соответствующих байтов шестнадцатиричной системы исчисления.

По-видимому, это шеллкоды, но что–то начальные байты уж очень странные! Например, преобразовав последовательность A000CA469F в инструкцию, я получаю mov al, [0x9F46CA00] .

Адрес располагается в пространстве ядра ОС Windows и обращение к нему из третьего кольца вызовет исключение. Весьма сомнительно, что так оно и задумывалось.

Что ж, скачаем бесплатную графическую среду для разработки Java–приложений NetBeans — она прекрасно подходит и для отладки. После небольших танцев с бубном я создал проект, и в результате мне удалось заставить отрабатывать полученный декомпилированный файл. Для этого пришлось аккуратно переносить данные из декомпилированного файла, модифицируя их. Отлаживая код, я сходу обнаружил его замусоривание.

Далее, анализируя код, я натыкаюсь на вызов функции getParameter со значением data в качестве аргумента. Ее роль, как можно понять из названия, заключается в выдаче значения соответствующей переменной, которое было указано в тэге html-документа. Я упоминал об этом в начале статьи. Как видно из первого скриншота, там содержится некий url.

String s27 = getParameter(“data”);
char ac[] = ;
int i = 0;
int j = 0;
for(; s27.charAt(i) != ac[0]; i++)
j += s27.charAt(i);
j += 7;
j %= 256;
String s28 = Integer.toHexString(j);
if(s27.indexOf((new StringBuilder()).append("deserialize bdaia-author-box">

В коллекции вредоносных Android-приложений некоторых антивирусных лабораторий содержится уже более 10 миллионов образцов. Эта цифра будоражит воображение, но примерно 9 миллионов 995 тысяч из них — переименованные копии оригинальных вирусов. Но если проанализировать исходный код оставшихся нескольких тысяч образцов малвари, то можно заметить, что все они комбинируются из небольшого количества уникальных функциональных блоков (несколько видоизмененных и по-разному скомбинированных).

Все дело в том, что вирмэйкеры чаще всего преследуют весьма тривиальные задачи:


Другие статьи в выпуске:

Далее приведен простейший пример кода. Это элементарная функция отправки SMS. Ее можно усложнить проверкой статуса отправки, выбором номеров в зависимости от места положения абонента и последующим удалением SMS.

Где искать код вируса

В абсолютном большинстве случаев заражение телефона происходит через установку приложений. Любое приложение для Android существует в виде файла с расширением apk, который, по сути, является архивом. Просмотреть его содержимое можно с помощью Android SDK, конвертера файлов APK в JAR и декомпилятора Java-байт-кода. Сборка приложения (APK) состоит из следующих частей:

  • resources.arsc — таблица ресурсов;
  • res (папка) — собственно ресурсы (иконки и прочее);
  • META-INF (папка) — содержит файлы со следующим содержимым: контрольные суммы ресурсов, сертификат приложения и описание сборки APK;
  • AndroidManifest.xml — всякого рода служебная информация. В том числе разрешения (permission), которые приложение запрашивает перед установкой для своей корректной работы;
  • classes.dex — ты наверняка слышал, что в Android операционных системах весь код выполняется с помощью Dalvik virtual machine (начиная с версии 4.4 появляется поддержка ART), которая не понимает обычный Java-байт-код. Поэтому и существуют файлы с расширением dex. В нем, наряду с нужными и полезными классами (которые отвечают за функционал приложения), содержатся также и вредоносные (вирусный код, который мы разбираем в этой статье).

SMS зараженных юзеров особенно ценны номерами телефонов отправителей и получателей — ими можно пополнить базу для спам-рассылок. Реже вирусы такого рода используются для заражения устройств конкретных личностей — в следующий раз, когда твоя девушка предложит тебе протестировать написанное ей (ай, карамба! — Прим. ред.) приложение на Android, не теряй бдительности :).

  • DroidKungFu;
  • DroidDream;
  • подавляющее большинство малвари всех аналогичных.

В принципе, любому вирусмейкеру полезна информация о зараженных его программами устройствах. Получить ее очень просто. Создается массив с данными о свойствах телефона (их полный список можно посмотреть в руководстве Android-разработчика) и отправляется POST-запросом к PHP-скрипту (язык непринципиален) на сервере злоумышленника, тот обрабатывает данные и помещает их в базу данных для последующего использования.

  • DroidKungFu;
  • DroidDream;
  • RootSmart.

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

Сайты о мобильной малвари

Блог экспертов компании Kasperskiy Lab Этот ресурс содержит качественные и подробные статьи о многих аспектах компьютерной безопасности, в том числе и об Android-вирусах. Стоит регулярно посещать этот сайт, чтобы быть в курсе последних событий.

Androguard Google Group Группа посвящена open source инструменту для всевозможных манипуляций с кодом Android-приложений (декомпиляция и модификация DEX/ODEX/APK файлов и так далее). Androguard также содержит обширную базу статей про вирусы. Помимо кратких обзоров функционала и методов защиты, встречаются подробные анализы кода малвари.

Androguard Google Group

Androguard Google Group

Защита от вирусов

Как мы видим из примеров, мобильный вирмейкинг технологической сложностью не отличается. Конечно, данные примеры упрощены под формат журнала — прежде всего, упущены обработчики ошибок и исключений, а также отдельные технические мелочи, отсутствие которых не помешает тебе понять принципы работы Android-малвари, но оградит от ненужных экспериментов. Ведь мы не поддерживаем создание вирусов, не так ли? 🙂


WARNING


Все описанные в статье моменты проиллюстрированы большим количеством откомментированного кода. Автор и редакция не несут ответственности за неправомерное использование информации из данного материала. Листинги представлены исключительно в образовательных целях!

Заражение

Реализуется такой подлог очень просто.

  1. Злоумышленник скачивает APK популярной программы с маркета, воспользовавшись, к примеру, этим сервисом.
  2. Распаковывает приложение утилитой apktool:

Теперь хакеру нужно скомпилировать код вируса, а затем распаковать, используя все тот же apktool. Затем он добавляет smali-файлы вируса к smali-файлам программы-жертвы. Подправляет AndroidManifest, включает нужные разрешения и объявления получателей уведомлений:

Если в качестве жертвы выбрать приложение с подходящими разрешениями, то оно не вызовет у пользователя ни малейших подозрений! Если же подобрать необходимые разрешения не получается, то вирусам приходится заставлять пользователя дать им расширенные права, показывая свой диалог поверх системного.

Например, так поступают Trojan-Banker.AndroidOS.Asacub и Trojan-SMS.AndroidOS.Tiny.aw . Да-да, Android позволяет создавать окна, которые будут отображаться поверх всех остальных приложений и диалогов, в том числе и системных. Для этого понадобится всего лишь создать нужный View и добавить его в WindowManager:

Флаг TYPE_SYSTEM_ERROR злоумышленники обычно используют, чтобы перекрыть системное окно своим View, флаг TYPE_SYSTEM_OVERLAY — чтобы перекрыть только кнопку системного окна своим View с нужным текстом.

Запросить права администратора устройства можно с помощью интента, где VirusDeviceAdminReceiver наследует DeviceAdminReceiver :

В AndroidManifest нужно объявить слушатель VirusDeviceAdminReceiver , а также прописать ресурс virus_device_admin , в котором содержится информация о требуемых правах, и фильтр событий, на которые реагирует слушатель, в данном случае — получение админских прав:

Чем ОС Android привлекает вирусописателей?

Обход сканеров

Времена свободного доступа любого приложения в Play Market подходят к концу. Ребята из Google сообразили, что надо принимать хоть какие-то меры, чтобы остановить нашествие огромного количества вирусов, и ввели систему проверки приложений. Создатели вирусов мгновенно отреагировали и начали вставлять механизмы обхода проверки.

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

Другие вирусы, такие как семейство Leech , определяют свой IP-адрес в сети и, если он попадает в IP-диапазон, используемый Google, или же имя хоста айпишника содержит слова google, android, 1e100, сразу же прекращают работу, чтобы не вызывать подозрений у системы автоматической проверки. Причем делают они это по-хитрому, ведь если использовать стандартные средства Android, то придется запрашивать у пользователя дополнительные разрешения. Поэтому злоумышленники обращают свой взор на такие ресурсы, как ipinfo.io. Не составит труда загрузить страничку в строку и найти там нужную информацию:

Развиваются и методы обхода статического анализа кода. Один из способов — использовать динамическую загрузку библиотек с вредоносной нагрузкой. В результате само приложение выглядит вполне невинно. Для загрузки внешнего кода используется класс DexClassLoader , который умеет загружать классы из JAR- или APK-файлов в формате DEX.

После загрузки класса можно спокойно дергать его методы с помощью рефлексии. Внешнюю библиотеку можно как разместить в самом APK, так и скачать из Сети после установки. Чтобы еще больше усложнить обнаружение вредоносного кода, злоумышленники шифруют такие программные модули и дают им трудноугадываемые имена.

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

Для установки новых приложений без ведома пользователя злоумышленники используют утилиту pm :

Чтобы использовать эту утилиту, приложение должно либо запрашивать разрешение android.permission.INSTALL_PACKAGES в манифесте, либо обладать правами рута. Проверить, установлено ли приложение, можно, воспользовавшись методом getPackageInfo класса PackageManager :

Способы обогащения

Самый простой способ нажиться на бедных пользователях — заставить их просматривать рекламу. Например, приложение Who Viewed Me on Instagram обещает показать пользователю его тайных поклонников в инстаграме, а вместо этого ворует учетные данные и размещает кучу рекламы в профиле пользователя. Приложение использует возможность вызова методов Android-приложения из JavaScript-кода. Чтобы украсть учетную запись пользователя, вредонос просит пользователя залогиниться в своем окне с WebView, а после загрузки логин-страницы инстаграма добавляет кусочек своего кода к кнопке входа.

Объявляем метод, который будет принимать учетную запись из JavaScript:

Другой набирающий популярность способ обогащения — вирусы-вымогатели. Попав на устройство, они получают права рута, часто шифруют пользовательские данные и показывают окно с требованием выкупа, предотвращая попытки пользователя запустить другие приложения. Так ведут себя, к примеру, вирусы семейства Fusob .

Первоочередная задача программы-вымогателя — получить рут на устройстве жертвы. К сожалению простых пользователей, в Сети гуляет бесчисленное множество эксплоитов, позволяющих незаметно повысить права приложения до суперпользовательских. Например, Towelroot постоянно обновляется и совершенствуется своим создателем. Неплохую базу эксплоитов собрала группа Offensive Security, ну и конечно, все самые свежие уязвимости можно посмотреть на CVE.

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

Теперь можно принимать любые команды, в том числе на обновление вируса, что дает злоумышленнику практически неограниченную власть.

Выводы

В этой статье мы разобрали все ключевые моменты кода, которые позволяют современной малвари реализовывать зловредные идеи своих плохих авторов. Обладающему этими знаниями программисту бояться нечего :), а что же делать простому пользователю? Если не хочется устанавливать кучу антивирусного софта на девайс, всегда можно скачать APK перед установкой и проверить его на наличие вирусов онлайн-утилитами, например тем же Вирустоталом. Ими же могут воспользоваться разработчики, чтобы удостовериться, что их новое приложение не будет принято за вирус.

Помимо операционной системы и приложений, которые мы используем каждый день на нашем компьютере, есть и другие программные решения, которые работают в фоновом режиме. Весь комплект заставляет оборудование работать максимально корректно и соответствовать нашим потребностям. Например, в этом смысле можно особо упомянуть Java.

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

Могут ли быть в файлах Java скрытые вирусы?

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

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

Панель управления java

Что на самом деле представляют собой скрытые Java-вирусы

Как и в проектах большинства современных крупных разработчиков программного обеспечения, они уделяют особое внимание всему, что связано с безопасностью. Поэтому ответственных за Java меньше не будет. Больше, если мы примем во внимание огромное проникновение на рынок и важность этого компонента в оборудовании по всему миру. Таким образом, великие люди, отвечающие за эту платформу, сообщают нам, что иногда загрузка их установочных файлов может вызвать путаницу из-за этих предупреждений антивируса.

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

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

Мы видели много раз, как Android это фильтр вредоносных программ. Во многих случаях проблема может быть вызвана собственными руками пользователя, но в других случаях отказывает собственные средства обнаружения Google. Напомним, что операционная система Android составляет примерно 75% рынка смартфонов. Это магнит для создателей вирусов и вредоносных программ.

Как мы уже говорили, и на нашем сайте мы неоднократно рассказывали о вредоносных программах и вирусах, которые не имеют никакой другой цели, кроме как повредить наше устройство или нарушают нашу конфиденциальность, даже смогли обойти систему безопасности Google и проникнуть в Play Store. Существует множество и все более изощренные варианты вредоносных программ, шпионских программ или даже программ-вымогателей, которые охотятся за невежественными.

Вирус Realme телефон

Антивирус Realme

К счастью, наши мобильные телефоны включают в себя все больше и больше стандартных инструментов, позволяющих идентифицировать и, при необходимости, очищать наши мобильные устройства от этого типа вредоносного ПО. Realmeмобильные телефоны имеют собственное антивирусное решение. Это отличная новость для его владельцев, так как он будет Избегайте необходимости обманывать или платить за сторонний антивирус. Кроме того, во многих случаях были обнаружены ложные антивирусные решения, когда не была загружена какая-либо программа с признанным престижем.

Как его активировать

На случай, если у нас возникнут подозрения вторжение или подозрительная работа системы Мы можем провести проверку на вирусы. Этот инструмент находится в приложении Phone Manager, которое установлено как стандартное. Поэтому нам придется войти в него. Внутри мы увидим ряд вариантов, так как он также служит для выполнения других типов проверок на телефоне.

Оказавшись внутри опции, у нас будет две опции: первая будет проверять наш телефон на наличие вирусов. Эти приложения может быть установлен и запущен в памяти или мог быть установлен без нашего согласия другим зараженным приложением. Терминал будет искать и делать тщательную очистку.

антивирусная область

Читайте также: