Мне регулярно присылают файлы, которые выглядят совершенно буднично. Счёт в PDF, таблица Excel, архив с документами, APK «нового приложения банка», установщик программы. Самая опасная ошибка в такой ситуации выглядит безобидно. Пользователь видит знакомый значок Word или PDF и открывает файл, чтобы уже потом разобраться, откуда тот взялся.
Я проверяю подозрительные файлы до открытия и не доверяю ни одному отдельному признаку. Хорошая схема состоит из нескольких слоёв. Сначала смотрим происхождение и настоящее расширение, затем проверяем файл локальным антивирусом, ищем хеш в VirusTotal, изучаем цифровую подпись и только после этого решаем, нужен ли вообще запуск. Результат вроде «0/70» в VirusTotal не означает, что файл безопасен.
Короткий дисклеймер. Материал предназначен для легальной проверки собственных файлов и защиты устройств. Соблюдайте законодательство своей страны, включая требования законодательства России. Не используйте описанные инструменты для несанкционированного доступа, слежки, взлома или нарушения правил сервисов.
Первую проверку можно сделать вообще без открытия файла
Начинаю не с антивируса, а с контекста. Если бухгалтер неожиданно присылает файл Акт_август.zip, банк предлагает установить APK через Telegram, а знакомый без объяснений отправляет Фото.jpg.exe, проблема уже не техническая. Сначала нужно подтвердить отправителя другим каналом связи.
Следующий шаг в Windows - включить отображение расширений. Microsoft позволяет сделать это через «Проводник» → «Вид» → «Показать» → «Расширения имён файлов». Официальная инструкция Microsoft объясняет, что расширение определяет тип файла, а простое переименование его содержимое не меняет.
При скрытых расширениях файл invoice.pdf.exe может визуально восприниматься как invoice.pdf. Значок PDF тоже ничего не доказывает. Иконку и имя можно подобрать под нужную легенду.
| Что пришло | На что смотреть | Риск |
|---|---|---|
.exe, .msi, .scr, .bat, .cmd, .js, .ps1 |
Источник, подпись, репутация, хеш | Файл способен выполнять код |
.docm, .xlsm, .pptm |
Макросы, защищённый режим, источник документа | Активное содержимое |
.docx, .xlsx, .pdf |
Встроенные объекты, ссылки, эксплуатация уязвимостей | Сам формат не гарантирует безопасность |
.zip, .rar, .7z |
Что лежит внутри, есть ли пароль, двойные расширения | Архив часто служит только упаковкой |
.iso, .img |
Содержимое образа, источник, хеш | Внутри могут находиться программы, ярлыки и сценарии |
.apk |
Издатель, подпись, источник, разрешения | После установки приложение получает возможности Android |
После визуальной проверки я запускаю локальное сканирование. В Windows 11 можно нажать правой кнопкой на файл, выбрать «Показать дополнительные параметры», затем «Проверить с помощью Microsoft Defender». Такой способ описан в документации Microsoft.
Отсутствие предупреждения от Defender тоже не превращает файл в доверенный. Антивирус лучше всего ловит уже известные угрозы и некоторые подозрительные признаки. Совсем новая вредоносная программа, необычный загрузчик или специально подготовленный документ могут не получить вердикт сразу.
VirusTotal полезен, но «0/70» часто понимают неправильно
VirusTotal собирает результаты более чем 70 антивирусных и других защитных механизмов, а также данные статического и поведенческого анализа. Для обычного пользователя сервис особенно полезен как база репутации.
Я предпочитаю сначала не загружать файл, а поискать его по SHA-256. Если такой образец уже есть в базе, VirusTotal покажет существующий отчёт, а содержимое файла не придётся передавать сервису.
В Windows SHA-256 считается одной командой PowerShell.
Get-FileHash "C:UsersUserDownloadsfile.exe" -Algorithm SHA256
По умолчанию команда Get-FileHash также использует SHA-256. Microsoft описывает механизм в документации PowerShell. Даже небольшое изменение файла меняет хеш, поэтому SHA-256 удобно использовать как цифровой отпечаток конкретной копии.
Полученную строку можно вставить в поиск VirusTotal. Если сервис уже знает хеш, смотрю не только на число срабатываний.
- 0 срабатываний. Ни один участвовавший механизм не признал данный образец вредоносным на момент анализа. Гарантии безопасности нет.
- 1-2 срабатывания. Возможен ложный результат, особенно у редкого легального ПО. Игнорировать предупреждения автоматически нельзя.
- Много независимых срабатываний. Файл я не запускаю, особенно когда продукты разных производителей сходятся на одном классе угрозы.
- Файл появился совсем недавно. Нулевая детекция весит меньше. Защитным системам требуется время, чтобы получить образец и добавить новые признаки.
- Есть подозрительное поведение. Сетевые соединения, запуск PowerShell, создание процессов, изменение автозагрузки или извлечение исполняемых файлов могут оказаться полезнее общего счётчика.
Сам VirusTotal прямо пишет о возможности как ложных срабатываний, так и ложных отрицательных результатов. Некоторые движки вообще не обрабатывают отдельные форматы. Поэтому «0/70» правильнее читать как «среди проверивших систем сейчас нет детекта», а не как «70 экспертов доказали безопасность файла».
Есть ещё одна деталь, которую часто пропускают. Обычная загрузка файла в VirusTotal не рассчитана на сохранение конфиденциальности. Согласно описанию сервиса, результаты передаются партнёрам, отчёты участвуют в общей базе, а содержимое загруженных файлов в определённых случаях доступно клиентам коммерческих продуктов VirusTotal. Для приватного анализа существует отдельный платный режим Private Scanning.
Поэтому я не загружаю в обычный VirusTotal паспорт, договор, медицинское заключение, внутренний корпоративный документ, исходный код закрытого проекта или файл с персональными данными. Сначала ищу только SHA-256. Если хеш неизвестен, использую локальные средства или корпоративную песочницу.
На SecurityLab уже разбирали VirusTotal и песочницы. Динамический анализ нужен, когда статические признаки не дают ясного ответа, но для обычного пользователя запуск подозрительного файла в собственной виртуальной машине я не считаю хорошим советом. Ошибка в конфигурации изоляции легко превращает эксперимент в заражение основной системы.
Подпись и хеш отвечают на разные вопросы
Хеш подтверждает только совпадение содержимого. Если разработчик публикует SHA-256 установщика на официальном сайте, можно скачать файл с зеркала и сравнить значения. Совпали - перед нами та же последовательность байтов, для которой разработчик опубликовал контрольную сумму.
Если хеш нашёлся на случайном форуме, доказательная ценность почти нулевая. Злоумышленник способен разместить рядом с вредоносным файлом его же SHA-256.
Цифровая подпись работает иначе. В Windows программы часто используют Authenticode. Подпись позволяет проверить, кто подписал файл и не изменилось ли подписанное содержимое после выпуска.
Для EXE и некоторых других файлов можно посмотреть свойства файла и вкладку «Цифровые подписи». Через PowerShell проверка выглядит так.
Get-AuthenticodeSignature "C:UsersUserDownloadsinstaller.exe" | Format-List
Нужны как минимум статус Valid и ожидаемое имя издателя. Microsoft документирует команду Get-AuthenticodeSignature.
Но действительная подпись не равна заключению «программа хорошая». Сертификат подтверждает происхождение подписанного кода, а не отсутствие вредных функций. Сертификаты разработчиков крадут, злоумышленники получают собственные сертификаты, а легально подписанная программа может содержать уязвимость или нежелательные функции.
Поэтому я читаю подпись так. «Файл действительно подписан компанией X и после подписания не менялся». Следующий вопрос уже другой - доверяю ли я самой компании X и ожидал ли получить от неё данный файл.
PDF, Office, архивы и APK требуют разной проверки
Фраза «это всего лишь PDF» давно потеряла смысл. Формат поддерживает ссылки, вложенные объекты, формы и JavaScript, а ошибки в просмотрщиках PDF периодически позволяют выполнять код через специально подготовленный документ.
Adobe включает в Acrobat защищённый режим и рекомендует не отключать его. Для неизвестных документов полезно также держать сам просмотрщик и операционную систему обновлёнными.
Если PDF просит установить программу, скачать «защищённый документ», войти в банк, ввести пароль Microsoft 365 или открыть вложенный EXE, я рассматриваю PDF как часть фишинговой цепочки, даже когда сам файл не определяется как вредоносный.
Word и Excel
Microsoft по умолчанию блокирует VBA-макросы в документах, полученных из интернета. Механизм связан в том числе с меткой Mark of the Web. Подробное поведение описано в документации Microsoft.
Если неизвестный документ требует убрать блокировку в свойствах, включить макросы, добавить папку в доверенные расположения или снизить настройки безопасности Office, я прекращаю работу с файлом. Такая инструкция буквально просит отключить барьер, который мешает активному содержимому запуститься.
При этом .docx безопаснее .docm лишь в узком смысле. Отсутствие VBA-макроса не защищает от фишинговых ссылок, встроенных объектов и эксплуатации уязвимости самого офисного пакета.
ZIP, RAR и 7z
Архив не делает содержимое безопаснее. Пароль тоже не говорит о легитимности. Наоборот, злоумышленники часто используют защищённые паролем архивы, чтобы автоматические почтовые шлюзы не смогли исследовать вложенные файлы.
После распаковки я проверяю каждый потенциально исполняемый файл отдельно. Особенно настораживают .lnk, .js, .vbs, .cmd, .bat, .ps1, .scr и .exe.
Сам архиватор тоже должен быть обновлён. Например, SecurityLab недавно разбирал уязвимость 7-Zip, при которой специально подготовленный образ мог использовать ошибку самого приложения для выполнения кода. Поэтому совет «не запускайте содержимое, просто откройте архив» не всегда абсолютен.
ISO и IMG
Образы дисков я рассматриваю скорее как контейнеры, чем как документы. После подключения ISO пользователь может увидеть внутри установщик, ярлык, сценарий или другие объекты. Проверять нужно и сам образ, и извлечённое содержимое.
Если образ скачан с сайта Microsoft, Linux-дистрибутива или другого известного проекта, лучший вариант - сравнить SHA-256 с контрольной суммой, опубликованной самим разработчиком.
APK
С APK у меня правило жёстче. Сообщение «установите наше новое приложение из файла» от банка, службы доставки, оператора, работодателя или сотрудника поддержки уже требует отдельной проверки личности отправителя.
Google Play Protect проверяет приложения из Google Play и программы, полученные из сторонних источников. Google также предупреждает, что мошенники могут убеждать пользователей устанавливать поддельные приложения. Описание механизмов есть в справке Google.
APK подписываются разработчиком. Если установлен Android SDK Build Tools, подпись можно проверить официальной утилитой apksigner.
apksigner verify --verbose --print-certs app.apk
Команда подтверждает корректность подписи и показывает данные сертификата. Документация Android Developers отдельно указывает, что изменение подписанного APK нарушает подпись.
Но здесь действует тот же принцип, что и с Windows. Корректная подпись неизвестного автора не делает приложение безопасным. Гораздо сильнее выглядит совпадение сертификата с предыдущей официальной версией приложения, скачанной из доверенного источника.
На Android я также проверяю разрешения. Приложение для чтения расписания автобусов не должно требовать доступ к SMS, специальным возможностям Android, управлению экраном, списку контактов и установке других приложений без понятной причины.
SecurityLab подробно писал о новых ограничениях Android для приложений непроверенных разработчиков. Google усиливает барьеры именно потому, что установка стороннего APK стала частью множества мошеннических сценариев.
Как я принимаю решение за две минуты
- Проверяю, ожидал ли я файл и действительно ли его отправил заявленный человек или сервис.
- Включаю отображение полного имени и смотрю настоящее расширение.
- Не запускаю EXE, APK, сценарии и содержимое архивов «просто посмотреть».
- Сканирую файл локальным антивирусом.
- Считаю SHA-256 и ищу хеш в VirusTotal.
- Если файл можно публиковать, при необходимости загружаю его в VirusTotal. Конфиденциальные документы туда не отправляю.
- Для программы проверяю цифровую подпись и имя издателя.
- Для APK сверяю подпись, источник и запрашиваемые разрешения.
- При любом несоответствии прошу отправителя подтвердить файл или скачиваю программу заново с официального сайта.
Ни VirusTotal, ни Defender, ни цифровая подпись сами по себе не дают стопроцентной гарантии. Надёжность появляется, когда несколько независимых признаков сходятся. Файл пришёл ожидаемым способом, расширение соответствует содержимому, хеш совпадает с опубликованным разработчиком, подпись действительна, антивирусы молчат, репутация не вызывает вопросов.
Если для открытия сомнительного вложения приходится отключать защиту, разрешать макросы, снимать блокировку Windows, игнорировать предупреждение Android или вручную добавлять исключение в антивирус, я считаю файл опасным до доказательства обратного. В большинстве бытовых ситуаций гораздо безопаснее удалить неизвестный файл и получить нужный документ или программу заново из официального источника, чем пытаться доказать себе, что подозрительное вложение «скорее всего нормальное».
Можно ли доверять файлу, если VirusTotal показывает 0/70?
Нет. Нулевой результат означает только отсутствие обнаружения участвующими механизмами на момент анализа. Новый вредоносный файл, редкая техника атаки или неизвестный образец могут пока не определяться.
Безопасно ли загружать документы в VirusTotal?
Обычный VirusTotal не следует использовать для конфиденциальных документов. Для начала лучше посчитать SHA-256 и проверить только хеш. Для закрытых данных нужны локальные средства или специальный приватный режим анализа.
Может ли PDF содержать вирус?
PDF способен содержать активные элементы, ссылки и вложения, а специально подготовленный документ может использовать уязвимость программы просмотра. Поэтому PDF нельзя считать безопасным только из-за расширения.
Как проверить EXE перед запуском?
Проверьте источник файла, просканируйте его локальным антивирусом, посчитайте SHA-256, найдите хеш в VirusTotal и изучите цифровую подпись. Если разработчик публикует контрольные суммы, сравните SHA-256 с официальным значением.
Как проверить APK на вирусы?
Проверьте APK через Play Protect и VirusTotal, изучите источник, подпись разработчика и разрешения. Для технической проверки подписи подходит официальная утилита apksigner. APK из сообщения неизвестного отправителя лучше не устанавливать.
Опасен ли ZIP или RAR, если не запускать файлы внутри?
Риск ниже, но не равен нулю. Уязвимости периодически находят и в программах распаковки. Архиватор нужно обновлять, а извлечённые файлы проверять отдельно перед запуском или открытием.
Что надёжнее, хеш или цифровая подпись?
Инструменты решают разные задачи. SHA-256 подтверждает совпадение двух копий файла. Цифровая подпись связывает файл с подписавшим издателем и помогает обнаружить изменение подписанного содержимого. Для установщиков полезно проверять оба признака.
