Origins tracing функции
хм. вирус хантерам наверное видней, ведь это они имеют дело с тем, что пока не детектируется сигнатурно. много ли вы на ваших образцах видели детект origin перед отправкой в вирлаб? учет ведете?Значит сейчас Origins Tracing™ используется только для детектирования мобильных угроз?
На все ваши вопросы по этой теме сегодня отвечают не какие-то там маркетологи, а аналитик «Доктор Веб» по мобильным угрозам Александр Горячев
Уникальная технология, созданная исключительно силами сотрудников «Доктор Веб», Origins Tracing™ позволяет значительно увеличить способности антивируса детектировать различные виды вредоносных программ
Извините, буду резок. Какой кретин написал эти предложения ?
На все ваши вопросы по этой теме сегодня отвечают не какие-то там маркетологи, а аналитик «Доктор Веб» по мобильным угрозам Александр Горячев
Извините, буду резок. Какой кретин написал эти предложения ?Уникальная технология, созданная исключительно силами сотрудников «Доктор Веб», Origins Tracing™ позволяет значительно увеличить способности антивируса детектировать различные виды вредоносных программ
Я очень долго наблюдаю Origins Tracing(так сказать в дикой природе) нечего там замечательного не наблюдаю. Спрашивается почему?
Мне кажется тут пока пиар маркетологи явно делают из мухи слона.
user Windows 64 bit
"не какие-то там маркетологи" - во-первых это просто неприлично, во-вторых оскорбительно для людей соответствующих профессий. (Этот уничижительный оборот оскорбляет, кстати, и самого же пиарно-маркетингового оформителя статьи/вступления, но он даже этого не понимает).
"созданная исключительно силами сотрудников «Доктор Веб»" - перл создает впечатление того, что часть технологий создается не только сотрудниками Dr.Web. Даже если бы это было так - подчеркивать это будет ну совсем уж неспособный думать экземпляр. Азбука ведь маркетинга.
"увеличить способности" - с каких пор способности "увеличивают" ? Автор перла не посещал в школе уроки русского языка и литературы ?
Текст для habrahabr.
Да, там, как вы вероятно догадываетесь, не любят маркетинговые текстовки и рекламки. Поэтому так и написано. Речь о маркетологах вообще, которые там часто вываливают на пользователей "джинсу". В лучшем случае.
Технология действительно создана нами. Текст авторский, не рекламный.
Увеличить способности - согласен.
"не какие-то там маркетологи" - во-первых это просто неприлично, во-вторых оскорбительно для людей соответствующих профессий. (Этот уничижительный оборот оскорбляет, кстати, и самого же пиарно-маркетингового оформителя статьи/вступления, но он даже этого не понимает).
"созданная исключительно силами сотрудников «Доктор Веб»" - перл создает впечатление того, что часть технологий создается не только сотрудниками Dr.Web. Даже если бы это было так - подчеркивать это будет ну совсем уж неспособный думать экземпляр. Азбука ведь маркетинга.
"увеличить способности" - с каких пор способности "увеличивают" ? Автор перла не посещал в школе уроки русского языка и литературы ?
Этот уничижительный оборот оскорбляет, кстати, и самого же пиарно-маркетингового оформителя статьи/вступления, но он даже этого не понимает).
подчеркивалось здесь не то, что вы подумали."созданная исключительно силами сотрудников «Доктор Веб»" - перл создает впечатление того, что часть технологий создается не только сотрудниками Dr.Web. Даже если бы это было так - подчеркивать это будет ну совсем уж неспособный думать экземпляр. Азбука ведь маркетинга.
ни для кого не секрет, что на рынке идеи витают и их воплощают разные вендоры, кто-то раньше, кто-то позже. здесь же - идея рождена и воплощена в единственном числе, то бишь не в пример самобытно. это и подчеркивается.
"увеличить способности" - с каких пор способности "увеличивают" ? Автор перла не посещал в школе уроки русского языка и литературы ?
а что с ними длают? развивают? ну да, есть такой шаблон, однако к русскому языку он имеет отношение поскольку существует в среде носителей языка, не более
На все ваши вопросы по этой теме сегодня отвечают не какие-то там маркетологи, а аналитик «Доктор Веб» по мобильным угрозам Александр Горячев.
Одной из изюминок Dr.Web для Android является технология Origins Tracing. Интересно то, что она появилась не одновременно с рождением продукта, а была перенесена в него позднее. Уникальная технология, созданная исключительно силами сотрудников «Доктор Веб», Origins Tracing позволяет значительно увеличить способности антивируса детектировать различные виды вредоносных программ. Суть технологии в том, что для каждой угрозы создается описание алгоритма поведения, которое добавляется в антивирусную базу. Одной такой записи может быть вполне достаточно для покрытия целого семейства вредоносных приложений, за счет чего может обеспечиваться детектирование новых модификаций и версий из этого семейства без их предварительного анализа в антивирусной лаборатории. При этом существенно сокращается объем вирусной базы, так как отпадает необходимость вносить запись для каждого конкретного семпла, а именно такой метод был и является основным для многих антивирусных вендоров. Мы не можем раскрыть все секреты, однако кое-что об основных особенностях Origins Tracing расскажем.
Для начала вспомним, как выглядит базовое приложение Android: основной программный пакет, имеющий расширение apk (например, SuperGame.apk) — стандартный zip-архив, содержащий все компоненты приложения. Внутри него находится файл AndroidManifest.xml, в котором указывается имя приложения, его версия, используемые библиотеки, сервисы, а также необходимые для работы функции; имеется цифровая подпись приложения, а также dex-файл, classes.dex — основной исполняемый код (Dalvik Executable), скомпилированный для функционирования в виртуальной машине Dalvik (Dalvik VM). Именно dex-файл представляет основной интерес, так как большинство вредоносных программ так или иначе функционирует как стандартное приложение Android — в виртуальной машине Dalvik.
Во время сканирования приложений антивирусом технология Origins Tracing строит для dex-файла определенную модель, которая базируется на основе декомпиляции в промежуточный байткод. Вирусная база содержит информацию с такими моделями. Имеющаяся специальная функция расстояния умеет определять сходства одной модели с другой, благодаря чему и происходит детектирование угроз.
Рассмотрим работу Origins Tracing на примере:
Согласно AndroidManifest.xml, оба приложения имеют одинаковое имя rreh.nyur и версию 1.0. Теперь рассмотрим их непосредственно на мобильном устройстве.
Оформление и функционирование обоих приложений полностью совпадает. Теперь посмотрим, как реагирует на эти программы Dr.Web для Android:
Как мы видим, название угроз при детектировании содержит приставку .origin. Это означает, что технология Origins Tracing на основании заложенных в нее критериев обнаружила очередных представителей семейства Android.SmsSend 114-го подсемейства.
Различия в размере исполняемого dex-файла (как мы видели на первом скриншоте) у похожих вредоносных программ, таких как рассмотренные СМС-троянцы, чаще всего обуславливаются попытками вирусописателей избежать детектирования антивирусами, использующими стандартный сигнатурный метод обнаружения. Для этого могут использоваться простые приемы, например изменение имен классов, функций и переменных в исходном коде приложения. После компиляции такого кода будет получен dex-файл с измененным содержимым, которое уже не будет соответствовать имеющейся сигнатуре в вирусной базе, что, в свою очередь, может предотвратить детектирование традиционным сигнатурным способом.
Большое преимущество технологии Origins Tracing в том, что она использует несигнатурный метод, и это зачастую позволяет ей более эффективно справляться с обнаружением обновленных или модифицированных версий вредоносных программ, а также вредоносных программ, работающих по принципу уже известных.
Чтобы быстро определить точку отказа и решить проблему, необходимо собрать метрики прохождения каждого этапа запроса. Для решения этой задачи можно воспользоваться спецификацией OpenTracing. Этот инструмент описывает основные принципы и модели данных для работы с трассировками в распределенных системах, но не предоставляет реализации. В данной статье мы воспользуемся имплементацией для JavaScript, и будем писать примеры на TypeScript. Но для того, чтобы перейти к практике, необходимо разобраться с теорией.
Используемые технологии
Для того, чтобы показать как это работает на практике, я напишу небольшой тестовый пример на typescript состоящий из трех микросервисов. Микросервисы будут общаться между собой через брокер NATS, а полученные трассировки будем отправлять в Jaeger.
Это быстрый, легкий и производительный брокер, написанный на golang. Через этот брокер можно реализовать две основные схемы взаимодействия микросервисов это Publish-Subscribe для асинхронных операций и Request-Reply для синхронных. NATS работает по простому текстовому протоколу, что упрощает разработку, а также предоставляет много разных полезных функций, таких как балансировку нагрузки и мониторинг подключенных сервисов. В тестовом проекте я буду использовать NATS как транспорт между сервисами, но в конечном счете для сбора трассировок транспорт не будет играть особой роли, это будет видно из примера. Для запуска проекта на локальной машине потребуется запустить NATS, что можно сделать с помощью Docker.
Jaeger
Это система хранения и анализа трассировок, созданная и выпущенная в opensource компанией Uber. Jaeger предоставляет удобный интерфейс для анализа трассировок, а так же возможность отображать трассировки в виде графа зависимостей как отдельного метода, так и системы в целом, что можно использовать для самодокументирования системы в целом. В качестве хранилища трассировок Jaeger может использовать Cassandra, Elasticsearch а также просто хранить трейсы в памяти, что удобно для тестов. При большом количестве трассировок можно использовать Kafka, как буфер между коллектором, в который прилетают span'ы, и хранилищем. Также в библиотеках, реализующих трейсер Jaeger, можно настроить сэмплирование трейсов. Поддерживается несколько видов сэмплирования:
Const. Эта стратегия подойдет, если нужно хранить каждый трейс (если передать значение 1) или не сохранять ни один (значение 0)
Probabilistic. Значение этой стратегии говорит о том, какой процент трейсов Jaeger будет сохранять. Трейсы выбираются случайным образом. Например, при значении 0.1 будет сохранен только 1 трейс из 10.
Rate Limiting. Эта стратегия позволяет сохранять определенное значение полученных трейсов за секунду.
Remote. Стратегия говорит о том, что решение о сохранении трейса будет приниматься на стороне бэкенда Jaeger'a. Что позволяет гибко настраивать сэмплирование, не меняя настроек трейсера в коде приложения.
Для запуска тестового примера локально, также потребуется запустить Jaeger, например, с помощью Docker
Реализуем сбор трассировок
Для начала опишем основные интерфейсы данных, с которыми будем работать
У микросервиса devices и users будет по одному методу
Далее реализуем микросервисы devices и users. Приведу пример кода только для devices, микросервис users реализуется аналогично.
Для работы с БД реализуем два репозитория. Один отвечает за работу с вымышленной mongodb, другой с redis
Теперь реализуем бизнес — логику микросервиса devices, которая будет находиться в функции getByRegion. Логика работы этого обработчика была описана ранее.
В index файле devices нам осталось создать экземпляр класса Transport и подписаться на тему.
Теперь, запустив пример и сделав запрос на наш единственный endpoint, можно ощутить значительную задержку, прежде чем json с ответом появится на экране. Для того, чтобы разобраться в чем причина, начнем собирать трейсы между сервисами, а для этого нам потребуется класс Tracer. В качестве реализации OpenTracing будем использовать библиотеку jaeger-client.
Здесь мы создаём объект трассировщика с настройками адреса коллектора Jaeger, куда он будет отсылать завершенные интервалы. Для тестов будем использовать тип сэмплирования const. Чтобы не менять наш код транспорта и не добавлять логику по созданию span'ов в методах publish и subscribe, напишем два декоратора для этих методов. Единственное, что потребуется поменять в классе Transport, это добавить конструктор, который будет принимать необязательный параметр в виде объекта Tracer.
Сами декораторы рассмотрим подробнее. Декоратор subscribePerfomance для метода subscribe
В случае, если оригинальная функция вернула ошибку, записываем в span тег ошибки, а также саму ошибку и завершаем span
Декоратор publishPerfomance для метода publish
Осталось только задекорировать методы в классе Transport, перезапустить сервис и сделать запрос. Далее можно открыть интерфейс Jaeger и найти трейс, соответствующий нашему запросу. Он должен выглядеть так.
Мы видим, что основную часть времени выполнения запроса занимает метод микросервиса устройств getByRegion. А точнее 97.22% от времени выполнения всего запроса. Значит, проблема в этом методе. Более того, на таймлайне видно, что перед тем, как вызвать метод микросервиса users, был большой интервал во времени, когда мы обращаемся к БД. Но в какой базе именно проблема? Это можно узнать только собрав span'ы c методов репозиториев. Для этого напишем декоратор.
- Здесь мы проверяем, выполняется ли вызов метода в рамках другого span'a. Если родительского span'а нет, выполняем оригинальный метод и возвращаем результат.
- Создаём новый дочерний span.
- Присваиваем тег с названием базы, с которой работает репозиторий. В спецификации OpenTracing есть и другие полезные теги. Можно добавить тег с ip базы или текстом запроса.
Задекорировав методы репозиториев в Jaegere, трейс будет выглядеть следующим образом.
Теперь мы видим гораздо больше информации. И на графе и на таймлайне можно увидеть, в чем заключается проблема нашего приложения. 74.38% метода микросервиса devices занимает запрос к базе за списком устройств. Весь код, приведенный в качестве примера, можно посмотреть в репозитории на github.
Сбор и анализ трассировок из распределенного приложения похож на проведение МРТ с контрастом в медицине, с помощью которого можно не только решить текущие проблемы, но и выявить серьезное заболевание на ранней стадии.
Следуйте за нашими новостями в удобном для вас формате
22 августа 2011 г.
Компания «Доктор Веб» — ведущий российский разработчик средств информационной безопасности — успешно применяет технологию Origins Tracing™ в борьбе с угрозами для операционной системы Android. Эта уникальная технология позволяет заметно сократить объем вирусной базы без потери надежности защиты, что весьма актуально для современных мобильных устройств.
Традиционный метод детектирования угроз основывается на принципе создания для каждого вредоносного файла уникальной сигнатуры, по которой он в дальнейшем может быть опознан антивирусной программой. Соответственно, объем вирусной базы, состоящей из набора таких сигнатур, увеличивается по мере добавления в нее новых записей. В свою очередь, вирусописатели с целью обхода защиты нередко перекомпилируют вредоносные файлы, либо немного изменяют исходный код вируса, не затрагивая его функциональность. В связи с этим существовала вероятность того, что антивирусное ПО не отреагирует на проникновение вредоносной программы в защищаемую систему, поскольку ее сигнатура отличается от имеющейся в базе.
Иным образом работает технология Origins Tracing™ от специалистов компании «Доктор Веб». Для каждой вредоносной программы создается специальная запись, описывающая алгоритм поведения данного образца, который добавляется в вирусную базу. При этом одной такой записи вполне достаточно для целого семейства вредоносных приложений, за счет чего можно обеспечить оперативное детектирование новых модификаций такого семейства, а также заметно сократить объем вирусных баз.
Теория
Основными понятиями в спецификации OpenTracing являются Trace, Span, SpanContext, Carrier, Tracer.
Extract принимает первым аргументом тип carrier'a, вторым сам carrier и возвращает объект контекста. Inject получает первым аргументом SpanContext, вторым тип желаемого объекта carrier и третьим пустой объект, в который будет добавлена вся необходимая информация из контекста, для дальнейшей передачи между сервисами. За счет работы этих функций мы можем связывать наши сервисы в единый трейс, состоящий из связанных между собой span'ов.
Читайте также: