Как определить, что EXE‑файл был подменён или изменён

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

Почему важно проверять целостность EXE‑файлов

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

Основные способы проверки

Ни один метод не гарантирует стопроцентную защиту в каждой ситуации, поэтому рекомендуется комбинировать несколько подходов.

Проверка цифровой подписи

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

  • Откройте свойства файла (правой кнопкой мыши → Свойства → вкладка «Цифровые подписи»).
  • Если подпись отсутствует — это уже повод к настороженности, особенно для программ, которые обычно подписываются.
  • Если подпись присутствует, проверьте, что она действительна и цепочка доверия ведёт к доверенному центру (например, Microsoft, DigiCert, Sectigo).
  • Обратите внимание на timestamp: если файл подписан датой, предшествующей релизу, это нормально; если дата явно позже объявленного релиза — может указывать на подделку.

Ограничение: не все разработчики подписывают свои продукты, особенно бесплатные утилиты или открытый код, распространяемый без подписи.

Сравнение контрольной суммы (хэша)

Контрольная сумма — уникальное значение, вычисляемое из содержимого файла. Если даже один байт изменится, хэш изменится кардинально.

  • Получите официальный хэш от разработчика (обычно публикуется на сайте, в репозитории или в сопроводительном документе).
  • Вычислите хэш скачанного файла с помощью утилиты (например, CertUtil, PowerShell Get-FileHash, sha256sum).
  • Сравните два значения: совпадение указывает на отсутствие изменений после создания официального хэша.

Ограничение: если злоумышленник смог подменить zarówno файл, так и источник, где опубликован хэш, проверка не поможет. Поэтому важно брать хэш из надёжного, независимого канала (например, официальный блог, подписанная страница, PGP‑подписанное объявление).

Антивирусный скан

Современные антивирусные решения используют сигнатурный и эвристический анализ, а также репутационные сервисы.

  • Запустите полную проверку файла несколькими разными движками (например, через онлайн‑сервисы, которые агрегируют результаты множества антивирусов).
  • Обратите внимание на обнаружения типа «Trojan», «Backdoor», «PUA» или «Heuristic».
  • Отсутствие срабатываний не гарантирует чистоту файла, особенно если вредоносный код использует новые техники обхода.

Анализ свойств файла и версии

Иногда подмена проявляется в несоответствии метаданных.

  • Версия продукта: сравните номер версии в свойствах файла с тем, что заявлен на официальном сайте.
  • Дата создания и изменения: подозрительно récente дата изменения у файла, который, по заявлению, должен быть старше.
  • Размер файла: значительное отклонение от указанного в официальном анонсе может указывать на добавление или удаление кода.
  • Наличие нетипичных секций (например, ресурсов с неизвестными именами) можно увидеть в дизассемблере или PE‑анализаторе.

Песочница и мониторинг поведения

Если сомнения остаются, можно запустить файл в изолированной среде и посмотреть, какие действия он выполняет.

  • Используйте виртуальную машину или контейнер без доступа к важным данным и сети.
  • Запустите файл и наблюдайте за созданием процессов, изменением реестра, сетевыми соединениями, записью файлов.
  • Подозрительное поведение (например, попытка подключиться к неизвестному IP, изменение системных файлов без явной необходимости) может указывать на вредоносность.

Ограничение: некоторые вредоносные программы обнаруживают песочницу и остаются пассивными, поэтому отрицательный результат не является окончательным доказательством чистоты.

Когда каждый метод полезен, а когда стоит быть осторожным

Выбор метода зависит от доступной информации и уровня риска.

Метод Когда эффективен Основные ограничения
Цифровая подпись Для коммерческого ПО, драйверов, обновлений ОС Отсутствует у многих бесплатных и open‑source проектов
Контрольная сумма Когда разработчик публикует хэш в надёжном источнике Бесполезен, если источник хэша скомпрометирован
Антивирус Для быстрой первичной проверки известных угроз Не обнаруживает zero‑day и сильно обфусцированный код
Анализ свойств Когда есть официальные данные о версии, размере, дате Лёгко подделать некоторые поля (например, timestamp) без изменения кода
Песочница Для глубокого анализа подозрительных файлов Требует времени и изолированной среды; некоторые malware избегают обнаружения

Пошаговый алгоритм проверки EXE‑файла

Ниже представлен практический порядок действий, который можно адаптировать под свои условия.

  1. Получите файл из надёжного канала (официальный сайт, проверенный репозиторий). Если канал сомнителен — переходите к шагу 2 сразу.
  2. Проверьте наличие цифровой подписи. Если она есть и действительна — переходите к шагу 4; если отсутствует — переходите к шагу 3.
  3. Вычислите хэш файла (SHA‑256 рекомендуется) и сравните его с официальным значением, взятым из независимого источника (например, подписанная страница разработчика). При совпадении — высокая вероятность целостности; при несовпадении — файл изменён.
  4. Запустите антивирусный скан (желательно несколько движков). Если обнаружены угрозы — рассматривайте файл как опасный.
  5. Изучите свойства файла: версия, дата, размер. Сравните с официальными данными. Значительные расхождения — повод к настороженности.
  6. Если после предыдущих шагов остались сомнения, запустите файл в изолированной среде (песочница, виртуальная машина без доступа к важным данным) и наблюдайте за поведением.
  7. На основании полученных данных примите решение: использовать файл, удалить его или запросить чистую копию от проверенного источника.

Типичные ошибки при проверке и как их избежать

  • Полагаться только на антивирус. Некоторые новые или целенаправленно изменённые файлы остаются незамеченными. Всегда дополняйте скан проверкой подписи или хэша.
  • Сравнивать хэш с тем же источником, откуда скачан файл. Если сайт взломан, злоумышленник может разместить и изменённый файл, и поддельный хэш. Берите хэш из отдельного, проверенного канала (например, официальный твиттер с PGP‑подписью, подписанная страница в GitHub).
  • Игнорировать отсутствие подписи у программ, которые обычно подписываются. Отсутствие подписи у известного коммерческого продукта — тревожный сигнал.
  • Запускать подозрительный файл прямо на основной системе. Даже если файл кажется безвредным, выполнение может привести к скрытому вредоносному действию. Используйте изолированную среду для первого запуска.
  • Считать, что совпадение хэша гарантирует отсутствие вредоносного кода. Если злоумышленник смог подменить файл до создания официального хэша (например, взлом сервера сборки), хэш будет совпадать, но файл уже вредоносный. В таких случаях помогает проверка подписи и репутации канала распространения.

Что делать, если подозрение подтвердилось

Если один или несколько методов указывают на изменение файла:

  1. Не запускайте файл на рабочей или личной системе.
  2. Удалите его из всех мест, где он мог быть сохранён (загрузки, временные папки, резервные копии).
  3. Оповестите источник, откуда вы получили файл (службу поддержки, администратора репозитория), предоставив данные о проверке (хэш, результаты антивируса).
  4. Получите чистую копию из проверенного канала и повторите проверку.
  5. Если файл был запущен, выполните сканирование системы антивирусом и, при необходимости, обратитесь к специалисту по информационной безопасности.

FAQ

  1. Можно ли доверять файлу, если у него есть цифровая подпись, но антивирус выдаёт предупреждение? Предупреждение антивируса может быть ложным срабатыванием (например, из‑за упаковщика). Проверьте репутацию файла в нескольких движках и поищите информацию о ложных срабатываниях для данного продукта. Если большинство движков чистых, а подпись действительна — вероятна безопасность.
  2. Что делать, если официальный сайт не публикует хэш файла? Попросите разработчика предоставить хэш через надёжный канал (электронная почта с PGP‑подписью, официальный блог, подписанный релиз в GitHub). Если такой возможности нет, relyте на проверку подписи и репутацию источника.
  3. Надо ли проверять каждый скачанный EXE‑файл? Для файлов из проверенных источников (официальные магазины, обновления ОС, известные репозитории) проверка подписи или репутации часто достаточна. Для файлов из менее надёжных каналов (форумы, файлообменники, письма от неизвестных отправителей) рекомендуется полная проверка.
  4. Может ли вредоносный код находиться в файле с верной подписью? Теоретически да, если злоумышленник получил доступ к закрытому ключу разработчика или сертификату. На практике это редко и требует значительного взлома. Поэтому подпись остаётся одним из самых надёжных индикаторов целостности.
  5. Как часто следует обновлять базы антивируса? Чем чаще, тем лучше — большинство решений обновляются автоматически несколько раз в день. Регулярные обновления повышают шансы обнаружения известных угроз.

Практический следующий шаг

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

PEFile.ru