Мне присылают подозрительный файл, и первая реакция почти всегда одинаковая. Открыть VirusTotal, бросить файл в окно и посмотреть на большую дробь сверху. Получилось 0 из 70 с лишним, значит можно запускать. Получилось 12 из 70, значит вирус. Удобная схема, только VirusTotal так не работает.
Я воспринимаю VirusTotal не как онлайн-антивирус, а как огромную систему сбора сигналов. Сервис сопоставляет хеши, запускает десятки защитных механизмов, анализирует ссылки, домены и IP-адреса, показывает поведение файлов в песочнице и связывает объекты между собой. Главный навык здесь не «загрузить файл», а правильно прочитать отчёт. Иногда один странный процесс говорит больше, чем двадцать красных детектов.
С файла я начинаю не с загрузки, а с хеша
Самая полезная привычка при работе с VirusTotal кажется мелочью. Я сначала считаю SHA-256 файла и ищу полученный хеш, а уже потом решаю, загружать ли сам файл.
В Windows хватает PowerShell.
Get-FileHash "setup.exe" -Algorithm SHA256
В Linux использую такую команду.
sha256sum setup.exe
В macOS подойдёт следующая.
shasum -a 256 setup.exe
Получив строку SHA-256, вставляю её в поиск VirusTotal. Если точно такой файл уже попадал в базу, сервис покажет существующий отчёт. Повторно передавать содержимое файла не придётся.
Подход особенно полезен для установщиков, драйверов, APK, архивов и вложений из писем. Заодно хеш позволяет проверить происхождение файла. Если разработчик публикует SHA-256 на официальном сайте, я сравниваю две суммы. Совпадение подтверждает, что содержимое файла не изменилось после публикации. Безопасность программы хеш сам по себе не доказывает.
Если файл неизвестен VirusTotal, появляется более сложный вопрос. Можно ли вообще его туда загружать.
Обычная отправка в VirusTotal не является приватной проверкой. Согласно описанию сервиса, результаты передаются участникам экосистемы, а содержимое загруженных образцов может быть доступно партнёрам и некоторым клиентам VirusTotal. Поэтому я никогда не отправляю через стандартную форму внутренние документы, договоры, исходный код закрытого проекта, дампы памяти, журналы с токенами, базы клиентов, приватные ключи и другие чувствительные данные.
Материал предназначен для легальной диагностики и защиты собственных систем. При анализе файлов, сетевых адресов и инфраструктуры нужно соблюдать законодательство своей страны, включая требования России, правила сервисов и права владельцев данных. Инструкции нельзя применять для несанкционированного доступа, слежки, взлома или незаконного обхода ограничений.
У VirusTotal существует платный режим Private Scanning. Загруженные через него файлы и URL не распространяются за пределы организации и удаляются после периода хранения, который обычно составляет около суток. Есть компромисс. В приватном режиме нет классического списка вердиктов антивирусных партнёров. Остаются статический анализ, песочницы, сетевые признаки и другие механизмы VirusTotal.
Стандартный интерфейс принимает крупные файлы, а через специальный механизм загрузки API документация допускает образцы до 650 МБ. Для обычного пользователя размер редко становится главной проблемой. Гораздо чаще мешают пароль на архиве, необычный формат или вредонос, который раскрывает поведение только после действий человека.
Почему 0 из 70 не означает «безопасно»
VirusTotal использует более 70 антивирусных сканеров и сервисов проверки адресов. Число рядом с файлом показывает, сколько поставщиков сочли объект вредоносным или подозрительным. Цифра выглядит как результат голосования, но считать её голосованием нельзя.
Антивирусные механизмы отличаются друг от друга. Одни используют похожие сигнатуры, другие сильнее опираются на эвристику, репутацию, машинное обучение или облачные данные. Детект двадцати систем не превращается в двадцать независимых доказательств. И наоборот, ноль детектов означает лишь отсутствие срабатываний на момент последнего анализа.
Особенно осторожно я отношусь к новым файлам. Свежий загрузчик может несколько часов или дней оставаться почти неизвестным защитным системам. Целенаправленная вредоносная программа вообще может существовать в считаных экземплярах.
Поэтому после верхней строки отчёта я смотрю дальше.
| Что вижу | Как трактую |
|---|---|
| 0 детектов | Угроза не обнаружена, но безопасность не доказана |
| 1 или 2 странных детекта | Возможен ложный результат, проверяю поставщиков, подпись и поведение |
| Много согласованных детектов | Риск резко возрастает, особенно если совпадает класс угрозы |
| Разные названия одного класса | Нормальная ситуация, производители используют собственную номенклатуру |
| Undetected | Движок не обнаружил угрозу, а не подтвердил безопасность |
| Timeout | Проверка не закончилась вовремя, вердикта нет |
Один детект тоже не приговор. Эвристика иногда ругается на упаковщики, инструменты администрирования, программы удалённого доступа, самописные утилиты и редкие исполняемые файлы. VirusTotal прямо пишет в документации о ложных срабатываниях, что сервис агрегирует вердикты поставщиков и сам не исправляет ошибочный детект. Исправлять его должен разработчик конкретного защитного продукта.
Я смотрю на название угрозы. Если один малоизвестный движок пишет что-нибудь вроде Generic, ML или Suspicious, а остальные молчат, доказательств мало. Если множество систем независимо относят файл к загрузчику, трояну или похитителю данных, картина становится гораздо убедительнее.
Следующий уровень даёт вкладка с деталями. Цифровая подпись, тип файла, размер, время первого появления, имена прошлых загрузок, импортируемые библиотеки, секции PE-файла, строки и другие метаданные иногда моментально ломают легенду.
Условный «счёт.pdf», который на самом деле определяется как исполняемый PE-файл Windows, уже не требует философских споров о количестве антивирусных детектов.
Самое интересное начинается во вкладках Behaviour и Relations
VirusTotal умеет запускать поддерживаемые файлы в контролируемых виртуальных средах. Песочницы фиксируют процессы, команды, файлы, обращения к реестру и сетевую активность. На практике именно здесь я часто нахожу наиболее полезные признаки.
Представим установщик с двумя сомнительными детектами. Само число ничего не решает. Теперь смотрю поведение. Установщик создаёт файл во временной папке, запускает дочерний PowerShell со скрытым окном, обращается к новому домену, загружает ещё один исполняемый файл и создаёт механизм автозапуска. Совокупность действий выглядит намного убедительнее, чем красная цифра сверху.
Обратная ситуация тоже встречается. Утилита удалённого администрирования может получать десятки предупреждений категории Riskware или RemoteAdmin, хотя пользователь установил её сознательно. Контекст меняет вывод.
Во вкладке Relations VirusTotal превращается из сканера в инструмент расследования. Я могу увидеть, какой файл создал исследуемый объект, какие домены он посещал, к каким IP подключался, откуда его скачивали и какие другие файлы с ним связаны.
Связи удобно читать как цепочку.
файл
→ запускает дочерний процесс
→ создаёт второй файл
→ обращается к домену
→ домен указывает на IP
→ с тем же IP связаны другие вредоносные образцы
Один домен в теле программы ещё ничего не доказывает. Приложение может содержать адрес службы обновлений, аналитики или библиотеки. Контакт с доменом во время исполнения сильнее простого совпадения строки, но тоже требует контекста. Общий IP особенно опасно объявлять вредоносным автоматически. На одном адресе облачного провайдера или сети доставки содержимого могут жить тысячи независимых сайтов.
По похожему принципу я проверяю ссылки. VirusTotal принимает полный URL, нормализует адрес и сверяет его с базами партнёров. Для подозрительной ссылки из письма я сначала отправляю адрес в VirusTotal, а не открываю его браузером. Дальше проверяю не только сам URL, но и родительский домен.
С доменами и IP меня интересуют связанные URL, загруженные файлы, файлы, которые связывались с инфраструктурой из песочниц, сертификаты, исторические DNS-связи и репутационные данные. Мы подробнее разбирали смысл таких связей в материале про индикаторы компрометации.
Есть ещё Community Score. Пользователи VirusTotal могут голосовать за объекты, а сервис учитывает репутацию голосующих. Я воспринимаю такой рейтинг только как дополнительный сигнал. Пользовательское мнение не заменяет технический анализ.
Моя схема проверки без магии
Для подозрительного файла я использую простой порядок. Сначала считаю SHA-256 и ищу готовый отчёт. Потом смотрю дату анализа и количество детектов. Если отчёт старый, запускаю повторный анализ, когда такая возможность доступна. После этого изучаю тип файла, подпись, названия детектов, поведение и связанные объекты.
Если VirusTotal ничего не знает о файле, я оцениваю конфиденциальность. Публичный установщик программы можно отправить на проверку. Финансовый документ компании, дамп рабочей станции или архив исходного кода я через обычную форму не загружу.
Для ссылки схема похожа. Сначала проверяю полный URL, затем домен, связанные адреса и историю. Нулевой результат не заставляет меня открывать страницу, если сама ситуация выглядит подозрительно. Письмо «от банка» с доменом недельной давности остаётся подозрительным независимо от зелёного отчёта.
Для автоматизации существует API. Бесплатный публичный API требует учётную запись. Текущая документация указывает ограничение до 4 обращений в минуту и 500 обращений в сутки. Публичный API предназначен для некоммерческих сценариев, поэтому в корпоративный продукт его просто так встраивать нельзя.
Самый полезный принцип остаётся прежним. VirusTotal не выдаёт сертификат безопасности. Сервис помогает собрать доказательства. Я доверяю не одной цифре, а согласованности нескольких признаков, происхождению файла, цифровой подписи, истории появления, поведению и инфраструктурным связям.
Если результат всё равно неоднозначный, файл лучше не запускать на основной системе. В отдельном материале мы разбирали проверку файлов в песочнице. Такой второй этап особенно полезен для новых образцов, вредоносов с задержкой запуска и файлов, которым нужны действия пользователя.
VirusTotal действительно напоминает швейцарский нож. Проблемы начинаются, когда нож принимают за металлодетектор, лабораторию и нотариуса одновременно. Проверяйте сначала хеш, не отправляйте секреты в публичный сервис, смотрите глубже верхней дроби и всегда учитывайте контекст. Тогда VirusTotal превращается из генератора зелёных и красных значков в полноценный инструмент первичного расследования.
FAQ
Можно ли доверять VirusTotal, если показано 0 детектов?
Нет. Ноль детектов означает, что участвовавшие механизмы не обнаружили угрозу во время последнего анализа. Новый или целевой вредонос может ещё не распознаваться.
Один антивирус в VirusTotal нашёл вирус, файл опасен?
Не обязательно. Один изолированный детект может оказаться ложным. Нужно проверить название срабатывания, цифровую подпись, происхождение файла, другие движки и поведение в песочнице.
Можно ли загружать рабочие документы в VirusTotal?
В обычный публичный режим конфиденциальные документы лучше не отправлять. Стандартные загрузки входят в экосистему обмена данными VirusTotal. Для чувствительных материалов существует отдельный платный режим Private Scanning.
Как проверить файл в VirusTotal без загрузки?
Посчитайте SHA-256 файла и вставьте хеш в поиск VirusTotal. Если такой образец уже известен сервису, появится существующий отчёт без повторной передачи файла.
Проверяет ли VirusTotal сайты на фишинг?
Да. Партнёрские системы оценивают URL и могут помечать адреса как вредоносные, фишинговые, подозрительные или связанные со спамом. Отсутствие предупреждения не гарантирует безопасность новой страницы.
Чем проверка домена отличается от проверки ссылки?
URL указывает на конкретный ресурс или страницу, домен описывает более широкую инфраструктуру. Один домен может обслуживать множество безопасных и вредоносных URL одновременно.
Можно ли считать IP вредоносным по одному совпадению в VirusTotal?
Нет. IP может принадлежать хостингу, облачной платформе или сети доставки содержимого, где работают тысячи клиентов. Смотрите связанные домены, файлы, даты и характер активности.
Заменяет ли VirusTotal обычный антивирус?
Нет. VirusTotal предназначен для анализа и получения информации об объектах. Сервис не контролирует процессы на вашем компьютере, не блокирует атаки в реальном времени и не заменяет защитное программное обеспечение.