Система IEEE Software Taggant: защита от ложных срабатываний антивируса

    image

    В этом посте я хочу рассказать о системе IEEE Software Taggant, которую разработала рабочая группа IEEE по вредоносным программам в сотрудничестве с ведущими компаниями по информационной безопасности.
    В планы команды разработчиков Guardant давно входило добавить поддержку IEEE Software Taggant в протектор Guardant Armor, и вот наконец мы это сделали. Краткий обзор системы и практические выводы перед вами.

    Почему паникует антивирус?


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

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

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

    Постоянное развитие технологий обфускации кода, замена оригинального кода на псевдокод, исполняемый в процессе работы защищенного приложения, серьезно усложнили анализ и повлияли на производительность при сканировании защищённых файлов антивирусом. Широкое разнообразие протекторов, используемых в законных, так и в злонамеренных целях, создает проблемы для антивирусной индустрии. Серьезной угрозой безопасности является использование авторами вредоносного кода (трояны, вирусы и т.д.) протекторов для скрытия своего кода от обнаружения. Такая техника стала применяться и на стороне сервера (серверный полиморфизм), в результате выявлять и противодействовать угрозам вредоносного кода стало намного сложнее. Антивирусы не способны определить, что на самом деле находится внутри защищенного файла и вынуждены искать баланс между надежностью и полным отсутствием ложных срабатываний на безвредные программы.

    Контроль за распространением защищенных файлов


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

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

    В 2010 году рабочая группа IEEE по вредоносным программам начала обсуждать, как разрабатывать систему – теперь называемую IEEE Software Taggant, чтобы помочь идентифицировать конкретного пользователя протектора. Термин «taggant» позаимствован из системы, используемой для взрывчатых веществ, в которую добавляется химический маркер, прослеживающийся до, или даже после, взрыва. IEEE Software Taggant System внедряет криптографический маркер в выходной исполняемый файл, созданный любой установкой протектора. Это позволяет провести идентификацию уникальной лицензии протектора, которая была использована при защите файла.

    Появлению системы IEEE Software Taggant предшествовала практика использования «водяных знаков». «Водяные знаки» содержат зашифрованную информацию о лицензии. Наиболее ответственные разработчики протекторов включают два набора «водяных знаков» в исполняемый файл. Один для идентификации протектора, второй для однозначной идентификации лицензии. Тем не менее, единого стандарта использования «водяных знаков» нет, и каждый разработчик протектора свободен в своих действиях.

    По словам самих разработчиков системы, введение нового термина «taggant» носит неоднозначный характер. C одной стороны это позволяет отказаться от использования терминов «водяной знак» и сертификат, с другой, система IEEE Software Taggant включает в себя характеристики обоих этих инструментов, хотя при этом очень сильно отличается по своему охвату и исполнению.

    Инфраструктура


    IEEE Software Taggant эффективна только в случае ее использования одновременно и протектором и антивирусом. Система использует инфраструктуру открытых ключей (PKI), при этом корневой и доверенные центры контролирует IEEE. Если вы являетесь вендором протектора, то вам необходимо зарегистрироваться в IEEE для генерации лицензий Software Taggant. Лицензия должна быть прозрачна для пользователей протектора и интегрироваться в установщик перед продажей.

    Перед выпуском нового протектора вендорам рекомендуется защитить репрезентативную выборку из 10-20 файлов с различными параметрами защиты и выложить её на общее обозрение. Антивирусы, в свою очередь, должны убедиться в отсутствии ложных срабатываний эвристического анализатора. Репутация файла с маркером Software Taggant должна быть выше, чем у файла без него.

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

    Криптографический маркер


    Чем же Software Taggant отличается от обычной цифровой подписи Authenticode в системе Microsoft Windows?

    Система IEEE Software Taggant допускает вычисление хеш-сумм для небольших критических участков программы, чтобы минимизировать время проверки целостности программного обеспечения (Authenticode всегда охватывает весь файл, поэтому время проверки зависит от размера файла). Это важно для антивирусов, так как позволяет им работать в режиме быстрой проверки. Ещё одна интересная вещь — это то, что при наличии интернет-соединения добавляется доверенная временная метка создания маркера (согласно RFC 3161), которая позволяет антивирусам выборочно дополнять черный список (блокировать ПО только после известного момента компрометации).

    Согласно документации, Taggant может быть добавлен не только к файлам PE-формата. В списке форматов присутствуют ELF и JavaScript. Возможно добавить Taggant и к любому неструктурированному формату.

    Для PE-формата прослеживается аналогия с цифровой подписью Windows. Структура Taggant записывается в конец PE-файла как оверлей (overlay). Если в файле присутствует оригинальный оверлей, то структура записывается после него. Для вычисления хеш-суммы используется алгоритм SHA2-256. Самый простой способ добавить Taggant к PE-файлу — это воспользоваться утилитой с привычным названием SignTool.

    Пример:

    >SignTool.exe SimpleTest-x86.exe license.pem
    SignTool Application (adds Taggant v2 to files)
    SPV Taggant Library version 2
    License file is valid, expiration date is Sat Apr 03 23:59:59 2027
    File hashes computed successfully
    Put timestamp
    Timestamp successfully placed
    Prepare the taggant
    Taggant successfully created
    Taggant is written to file

    Цифровая подпись Microsoft не конфликтует с Taggant, т.к. добавляется после Taggant структуры и накрывает весь файл, включая Taggant.

    Преимущества


    Система IEEE Software Taggant разрабатывалась как специализированное и универсальное решение для антивирусов и протекторов, что безусловно является неоспоримым преимуществом перед другими методами проверки подлинности файлов. Антивирусы получают:

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

    Все перечисленные возможности должны снизить риск ложных срабатываний и повысить производительность при сканировании защищенных файлов.

    Тестирование


    Мы надеялись на уменьшение ложноположительных срабатываний антивирусов, ведь система появилась достаточно давно. Но увы, чуда не произошло. Для начала смотрим на результаты VirusTotal:

    Чистый файл:

    image

    Защищенный файл без Taggant:

    image

    Защищенный файл c Taggant:

    image

    Защищенный файл с Taggant и подписью Microsoft:

    image

    Малоизвестные антивирусы никак не реагируют на наличие подписи Taggant, точнее реагируют, но наоборот. Для них по-прежнему важным аргументом является подпись Microsoft.

    Расстроил нас и Kaspersky Endpoint Security. Он помещает данный файл в карантин независимо от наличия подписи Taggant и подписи Microsoft. Как и раньше, помогает только отключение эвристического анализатора. При этом проверка на VirusTotal антивирусом Kaspersky говорит, что файл чистый.

    image

    Заключение


    Судя по всему не все антивирусы торопятся встраивать поддержку Taggant в свои движки. Бюрократия IEEE также вызывает опасения. Переписка с данной организацией заняла у нас огромное количество времени. Простому разработчику попасть в «белые» списки легальных распространителей ПО может оказаться сложнее, чем использовать механизм цифровой подписи Microsoft. Тем не менее Taggant является достойной альтернативой «водяных знаков», и мы надеемся, что система будет постепенно внедряться. А пока подпись Microsoft является более весомым аргументом для антивирусов.

    Ссылки:


    1. ICSG: Industry Connections Security Group
    2. IEEE Anti-Malware Support Service (AMSS)
    3. GitHub: IEEE_Taggant_System
    4. Standards and Policies on Packer Use
    • +12
    • 2,4k
    • 4
    «Актив» 43,79
    Компания
    Поделиться публикацией
    Похожие публикации

    Вакансии компании «Актив»

    Комментарии 4
    • 0
      А можно подробнее. Подписанный файл получает плюс в карму или неподписанный получает минус? А то это очень принципиально.

      Картинка хороша!
      • 0
        Если файл содержит достоверную подпись Taggant и с лицензией все в порядке, то антивирус должен его пропускать. И только в случае отсутствия подписи должен применяться эвристический анализ. То есть подписанный файл получает плюс, но во многом это зависит от реализации антивируса.
        • 0
          Если файл содержит достоверную подпись Taggant и с лицензией все в порядке, то антивирус должен его пропускать.


          Зависит от сценария проверки. Если это сканирование файла, то должен. Если антивирус среагировал на запуск системного процесса из файла, то не должен пропускать — существует множество исполняемых файлов, подписанных тем же microsoft, но подверженных dll-хайджекингу.

          Вообще говоря, система обеления по подписям, на мой взгляд, себя дискредитировала. Тот же Microsoft навыпускал множество бинарей, подписанных с использованием коллизионного хеша MD5.
          • 0
            Мы тестировали только вариант сканирования. Каюсь, забыл про это упомянуть в статье. Самое непонятное почему на VirusTotal движок Kaspersky говорит что файл чистый, а локальная версия антивируса Kaspersky Endpoint Security 10 при включённой эвристике выдаёт ложное срабатывание? Ведь перед началом распространения защищённого файла многие ориентируются на VirusTotal. И вот тут начинаются разные подозрения. Возможно версия на VirusTotal содержит только сигнатурный анализ или ещё каким-то образом сильно отличается от локальной версии у пользователей.

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

          Самое читаемое