Информационная безопасность, Разработка ПО, VirusTotal, Гайд, Reverse Engineering
Привет, Хабр!
Вы — разработчик. Вы ночами не спали, пили литры кофе, писали чистый и элегантный код. И вот, ваше детище — полезная утилита, инди-игра или хитрый скрипт для автоматизации — готово. Вы с гордостью выкладываете его на сайт, делитесь с друзьями, и тут... в чат прилетает сообщение: «Эй, а твой экзешник — троян! VirusTotal ругается».
Знакомая боль? Если вы пишете под Windows, особенно на языках вроде AutoIt, Python (с PyInstaller), Go или используете коммерческие протекторы, то наверняка сталкивались с этой несправедливостью. Ваш абсолютно легитимный софт помечается красным флажком из-за эвристики, слишком "подозрительного" поведения или просто потому, что звёзды так сошлись.
Это называется ложное срабатывание, или False Positive (FP). И это не просто обидно. Это бьет по репутации, отпугивает пользователей и может похоронить ваш проект.
Сегодня мы разберем, что с этим делать. Как не просто смириться, а дать бой, доказать невиновность своей программы и помочь антивирусным вендорам стать немного умнее.
Шаг 0: Убедитесь, что это действительно False Positive
Прежде чем стучать кулаком по столу и кричать о несправедливости, давайте наденем шляпу параноика. А вы уверены, что ваш код чист?
Проверьте сборочную среду. Не мог ли вирус заразить ваш компьютер и внедрить свой код в билд на этапе компиляции? Это редкий, но возможный сценарий (вспомним атаку на Xcode).
Проверьте зависимости. Все ли библиотеки, которые вы используете, из надежных источников? Возможно, одна из них была скомпрометирована.
Изучите отчет на VirusTotal. Не ограничивайтесь вкладкой
Detection
. Зайдите во вкладкуBehavior
. Что ваша программа делает при запуске в песочнице? Не лезет ли она на странные IP? Не создает ли подозрительные файлы? Если поведение выглядит странным, возможно, проблема глубже, чем кажется.
Убедились, что всё чисто? Отлично. Переходим к активным действиям.
Шаг 1: Идентификация "виновных"
Откройте отчет VirusTotal. Нам нужен список антивирусных движков, которые подняли тревогу. Не нужно писать всем 70+ вендорам. Сосредоточьтесь на:
Лидерах рынка: Kaspersky, Dr.Web, ESET, Bitdefender, Avast, McAfee, Microsoft, Symantec. Именно их вердикты наиболее важны для большинства пользователей.
Движках, дающих конкретное имя угрозы: Если какой-то антивирус пишет не просто
Generic.Trojan
, а что-то более конкретное (например,Packed.PyInstaller.Gen
), это может дать подсказку о причине срабатывания.
Составьте список из 5-7 ключевых вендоров, с которыми мы будем работать.
Шаг 2: Ищем "лабораторию" для отправки образцов
У каждого уважающего себя антивирусного вендора есть специальная форма или email для отправки образцов. Предпочтительнее использовать онлайн-форму, так как она содержит все необходимые поля и ваш запрос быстрее попадет к нужному специалисту. Email — это запасной вариант.
Ниже приведен список контактов для самых популярных вендоров. Не забудьте заархивировать ваш файл с паролем infected
или virus
перед отправкой!
Вендор | Предпочтительный способ (Форма) | Email (если нет формы или для доп. связи) |
---|---|---|
Microsoft | ||
Kaspersky | ||
Dr.Web | ||
ESET | ||
Avast |
| |
AVG | (используют общую с Avast инфраструктуру) | |
Bitdefender | (предпочитают только формы) | |
McAfee | ||
Symantec/Broadcom | (предпочитают только формы) | |
Trend Micro | (предпочитают только формы) | |
Comodo | ||
Malwarebytes | ||
Sophos | ||
G-Data | (предпочитают только формы) |
Ниже представлен максимально полный список контактов вендоров, чьи движки используются в VirusTotal. Список разделен на группы для удобства навигации.
Группа 1: Основные игроки (Must Contact)
Это самые популярные и влиятельные антивирусы. Если у вас ложное срабатывание, в первую очередь пишите им.
Вендор | Предпочтительный способ (Форма) | Email (альтернатива) |
---|---|---|
Microsoft | ||
Kaspersky | ||
Dr.Web | ||
ESET | ||
Avast | ||
AVG | (общая инфраструктура с Avast) | |
Bitdefender | (предпочитают только формы) | |
McAfee | ||
Symantec/Broadcom | (предпочитают только формы) | |
Malwarebytes | ||
(см. примечание 1) | (см. примечание 1) | |
ClamAV |
Группа 2: Другие важные и отзывчивые вендоры
Эти компании также имеют большое влияние и, как правило, имеют четкие процедуры для обработки ложных срабатываний.
Вендор | Предпочтительный способ (Форма) | Email (альтернатива) |
---|---|---|
Acronis | Форма техподдержки (указать FP в теме) | (предпочитают только формы) |
AhnLab (Южная Корея) | (предпочитают только формы) | |
Comodo/Xcitium | ||
CrowdStrike | Support Portal (см. примечание 2) | |
Cynet | Support Portal (см. примечание 2) | |
F-Secure | ||
G-Data | (предпочитают только формы) | |
Panda Security | (предпочитают только формы) | |
SentinelOne | Support Portal (см. примечание 2) | |
Sophos | ||
Trend Micro | (предпочитают только формы) | |
Vipre | (предпочитают только формы) | |
Webroot | (предпочитают только формы) | |
ZoneAlarm | (используют движок Check Point) |
Группа 3: Региональные, OEM и B2B вендоры (сложные случаи)
Найти прямые контакты для этих вендоров крайне сложно. Часто у них нет публичных форм для репортов от сторонних разработчиков. В 99% случаев вам не нужно с ними связываться.
Вендор | Статус и комментарий |
---|---|
Alibaba | B2B/Cloud. Нет публичной формы для FP. |
Arcabit | Польский вендор. Есть форма, но требует польского языка. |
Avira | Интегрирован в другие продукты (Gen Digital). Используйте формы Avast/AVG. |
Baidu | Китайский вендор. Нет публичной международной формы. |
Bkav | Вьетнамский вендор. Форма на вьетнамском. |
Cylance | Теперь часть BlackBerry. B2B, требует портала клиента. |
Cyren | Компания прекратила деятельность. Движок может быть устаревшим. |
Emsisoft | Используют движки Bitdefender/других. Рекомендуют писать вендору-источнику. |
eScan | Индийский вендор. |
Fortinet | B2B. Требует портала клиента. |
Gridinsoft | |
Ikarus | Австрийский вендор. |
Jiangmin | Китайский вендор. Нет публичной международной формы. |
K7 | Индийский вендор. |
Kingsoft | Китайский вендор. Нет публичной международной формы. |
Lionic | Тайваньский вендор. |
MAX | Вероятно, |
NANO-Antivirus | Российский вендор. |
Palo Alto Networks | B2B. Требует портала клиента. |
Qihoo-360 | Китайский вендор. Нет публичной международной формы. |
Rising | Китайский вендор. Нет публичной международной формы. |
Sangfor | B2B. Нет публичной формы. |
Scantool | Часто это кастомные или внутренние сканеры. Нет публичных контактов. |
SecureAge | Сингапурский вендор. Используют универсальный движок. |
SUPERAntiSpyware | |
Tencent | Китайский вендор. Нет публичной международной формы. |
Tesk | Турецкий вендор. |
Trustlook | |
Varist | Иранский вендор. |
ViRobot | Корейский вендор. Нет публичной международной формы. |
Yandex | (см. примечание 3) |
Zillya | Украинский вендор. |
Zoner | Чешский вендор. |
Примечания:
Google: Движок "Google" на VirusTotal — это их собственные технологии, в первую очередь Google Safe Browsing. Если ваш сайт или файл блокируется как опасный, вы должны использовать Google Search Console для запроса пересмотра. Прямого email для репорта о FP для файлов не существует.
B2B / Enterprise вендоры (CrowdStrike, SentinelOne, Cynet и др.): Эти компании в основном работают с корпоративными клиентами. У них нет публичных форм для сторонних разработчиков. Их клиенты могут сообщать о ложных срабатываниях через свои личные кабинеты (порталы поддержки). Прямое обращение по email, скорее всего, будет проигнорировано.
Yandex: Как и Google, Yandex использует свои технологии Safe Browsing. Если проблема с сайтом, используйте Яндекс.Вебмастер. Если проблема с файлом, который блокируется Яндекс.Браузером, репорт нужно отправлять через интерфейс самого браузера.
Примечание: ссылки и адреса актуальны на момент написания статьи, но вендоры могут их изменять. Если ссылка не работает, воспользуйтесь поиском по ключевым словам: "[Vendor Name] false positive report"
.
Шаг 3: Составляем грамотный репорт
Это самый важный шаг. Недостаточно просто кинуть файл со словами «Это не вирус!». Чем больше информации вы предоставите аналитикам, тем быстрее они разберутся и внесут изменения в свои базы.
Что обязательно нужно указать в форме/письме:
Тип запроса: Четко укажите, что это "False Positive" или "Incorrect Detection".
Файл: Прикрепите саму программу. Лучше всего заархивировать ее с паролем
infected
илиvirus
(это стандартная практика, чтобы почтовые фильтры не удалили ваше вложение). Пароль укажите в тексте сообщения.Ссылка на VirusTotal: Обязательно приложите ссылку на отчет о проверке вашего файла. Это сэкономит аналитику кучу времени.
Описание программы: Кратко, на английском языке (это международный стандарт для таких репортов), опишите, что делает ваша программа.
Good example: "This is a utility for batch renaming image files based on EXIF data. It does not make any network connections or modify system files."
Bad example: "My program."
Шаги для воспроизведения (если нужно): Если программа требует каких-то особых действий для запуска, опишите их.
Контактная информация: Укажите ваш email, чтобы получить ответ.
Пример "идеального" сообщения (на английском):
Subject: False Positive Report for [Your Program Name]
Hello,
I am the developer of [Your Program Name], a legitimate software application.
It has been incorrectly detected as malicious by your antivirus engine. I believe this is a false positive.
Program Name: [Your Program Name] v1.2
Program Description: A free utility that helps users organize their desktop icons into custom layouts. It is written in C++ and does not contain any adware or malicious code.VirusTotal Report Link: [https://www.virustotal.com/gui/file/ваша-длинная-ссылка-на-отчет]
The application is attached in a password-protected zip file.
Password:infected
Could you please analyze the file and correct the detection in your next signature update?
Thank you for your time.
Best regards,
[Your Name/Nickname]
[Link to your website/GitHub repository, if available]
Ссылка на GitHub-репозиторий с исходным кодом — это огромный плюс к доверию.
Шаг 4: Терпение и ожидание
Отправили репорты? Теперь ждем. Реакция может занять от нескольких часов до нескольких недель. Некоторые вендоры отвечают автоматически, другие присылают ответ от живого аналитика.
Периодически нажимайте кнопку "Reanalyze" на странице отчета VirusTotal. Вы увидите, как счетчик детектов постепенно пойдет на спад по мере того, как вендоры будут обновлять свои базы.
Превентивные меры: как снизить вероятность FP в будущем
Полностью избавиться от ложных срабатываний невозможно, но можно значительно снизить их вероятность.
Цифровая подпись (Code Signing): Это самый эффективный способ. Покупка сертификата для подписи кода (Code Signing Certificate) стоит денег, но это мгновенно повышает уровень доверия к вашему приложению. Подписанные файлы гораздо реже вызывают подозрения у эвристических анализаторов.
Избегайте "агрессивных" упаковщиков/протекторов: Программы вроде Themida или VMProtect, хоть и защищают ваш код, являются красной тряпкой для антивирусов, так как их же используют и создатели вредоносов.
Чистые установщики: Не используйте инсталляторы, которые пытаются "в нагрузку" установить рекламные модули, тулбары или изменить домашнюю страницу браузера. Это верный путь к вердикту
PUA
(Potentially Unwanted Application).Поддерживайте "белый" профиль: Если у вас есть сайт, ведите его аккуратно, используйте HTTPS. Хорошая репутация домена также влияет на доверие.
Заключение
Борьба с False Positives — это не спринт, а марафон. Это часть работы современного разработчика, особенно в мире инди-софта. Не опускайте руки после первого же красного вердикта.
Грамотно составленный репорт, вежливое общение и немного терпения творят чудеса. Отправляя отчеты, вы не только спасаете репутацию своего проекта, но и делаете весь интернет чуточку безопаснее и умнее, обучая антивирусные системы отличать добро от зла.
Удачи в борьбе за справедливость! Поделитесь в комментариях своими историями успеха (или провала) в этом нелегком деле.