Как распознать подмену файла по несоответствию расширения

Расширение файла — это просто надпись в его имени. Любой человек или программа может переименовать «report.exe» в «report.pdf», и операционная система послушно покажет вам значок PDF. Настоящий же формат файла зашит в его содержимом: у большинства форматов есть характерные начальные байты, так называемая сигнатура (или «магическое число»). Именно сравнение расширения с фактическим содержимым позволяет выявить подмену до того, как файл будет открыт.

Главный ориентир такой: если имя файла обещает одно, а первые байты говорят о другом — файл либо повреждён, либо переименован намеренно. Второй вариант встречается чаще, чем кажется, и почти всегда связан с попыткой обойти фильтры почты, мессенджеров или вашу внимательность.

Почему подмена расширения вообще работает

Операционные системы определяют, чем открывать файл, преимущественно по расширению. Windows дополнительно опирается на ассоциации в реестре, macOS — на метаданные и сигнатуры, но во всех случаях первый фильтр — это имя. Злоумышленник пользуется этим разрывом: содержимое одно, а система показывает другое.

Типичные сценарии, где это встречается:

  • Двойное расширение. Файл называется «договор.docx.exe». Если в проводнике отключён показ расширений, пользователь видит только «договор.docx» и значок исполняемого файла (или поддельный значок документа).
  • Полная замена расширения. Исполняемый файл или скрипт переименован в .pdf, .jpg, .txt, чтобы пройти почтовый фильтр или выглядеть безобидно.
  • Маскировка архива. Вредоносный архив или контейнер выдаётся за медиафайл.
  • Обратная ситуация. Обычный текстовый файл назван .exe — чаще всего это ошибка экспорта или кривой скрипт, но проверка всё равно нужна.

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

Признаки подмены, видимые без специальных инструментов

Часть подозрительных файлов можно отсеять простым осмотром:

  • В имени есть несколько точек, и последнее расширение — исполняемое (.exe, .scr, .bat, .cmd, .com, .pif, .vbs, .js, .ps1, .hta).
  • Расширение не соответствует ожидаемому содержимому: «фото.jpg» весит 40 МБ, а настоящие фотографии такого размера обычно снимаются в RAW, который так не называют.
  • Значок файла не совпадает с заявленным типом: документ с иконкой приложения вместо иконки PDF-читалки.
  • Файл пришёл из неожиданного источника: вложение от малознакомого отправителя, ссылка из чата, архив «для просмотра счёта».
  • Имя содержит давление на срочность: «Оплата_СЕЙЧАС», «Претензия_24часа».

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

Как проверить реальный формат по содержимому

Шестнадцатеричный просмотр первых байтов

Самый надёжный способ — посмотреть начало файла в hex-редакторе или даже в обычном текстовом редакторе (если файл не бинарный целиком). Первые байты большинства популярных форматов устойчивы и хорошо задокументированы.

Заявленный формат Характерное начало файла
JPEG FF D8 FF
PNG 89 50 4E 47 (в тексте выглядит как ‰PNG)
GIF GIF87a или GIF89a
PDF %PDF-
ZIP (включая docx, xlsx, pptx) PK (байты 50 4B)
RAR Rar!
EXE (Windows) MZ (байты 4D 5A)
MP3 ID3 или FF FB / FF F3
MP4/MOV на смещении 4–7 байт: ftyp

Логика проверки простая: если файл называется «отчёт.pdf», но начинается с «MZ» — перед вами исполняемый файл Windows. Если «презентация.pptx» начинается не с «PK», а с чего-то иного — расширение не соответствует содержимому. Современные форматы Office (docx, xlsx, pptx) технически являются ZIP-архивами, поэтому «PK» в их начале — норма, а не признак проблемы.

Важная оговорка: отсутствие сигнатуры в начале не всегда означает подмену. Некоторые форматы имеют заголовок со смещением (как MP4), а некоторые файлы могут начинаться с BOM или мусорных байтов после повреждения. Поэтому сигнатура — сильный аргумент при совпадении, но её отсутствие требует дополнительной проверки, а не мгновенного вердикта.

Команды для быстрой проверки

Не обязательно ставить hex-редактор. На большинстве систем есть встроенные средства:

  1. В Linux и macOS выполните в терминале команду file имя_файла. Утилита сама прочитает сигнатуру и сообщит реальный тип: например, «PDF document» или «PE32 executable».
  2. В Windows PowerShell можно прочитать первые байты командой вида: Get-Content -Path «файл» -Encoding Byte -TotalCount 8 (в новых версиях — с параметром -AsByteStream) и сверить результат с таблицей выше.
  3. Альтернатива без командной строки — любой бесплатный hex-просмотрщик или онлайн-сервис анализа файлов. Онлайн-вариант подходит только для нечувствительных документов: загружать туда коммерческие или персональные файлы не стоит.

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

Что делать с файлом, в котором обнаружено несоответствие

Обнаружение подмены — ещё не диагноз «вирус», но и повод открывать файл нет. Порядок действий разумный такой:

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

Открывать подозрительный файл «просто посмотреть» на рабочем компьютере — худший из вариантов. Даже просмотр изображения в уязвимой программе теоретически может привести к исполнению кода, если используется устаревшая версия с известными уязвимостями парсеров.

Типичные ошибки при проверке

  • Доверять значку файла. Значок берётся из ассоциаций и может быть любым — злоумышленники регулярно встраивают в исполняемые файлы иконки PDF или Word.
  • Смотреть только на размер. Большой размер не спасает: внутрь исполняемого файла легко упаковать килобайты бессмысленных данных, чтобы он выглядел солиднее.
  • Считать, что «антивирус молчит — значит чисто». Сигнатурные базы отстают от свежих образцов; обнаружение подмены расширения — отдельный слой проверки, независимый от антивируса.
  • Путать «PK» в начале docx с архивом-обманкой. Как отмечалось выше, современные документы Office — это ZIP-контейнеры, и совпадение здесь законно.
  • Переименовывать файл обратно и открывать. Если внутри действительно исполняемый код, смена расширения на «правильное» лишь запустит то, что задумал автор файла.

Как защититься заранее

Помимо личной внимательности, работают системные меры:

  • Включите показ расширений для всех известных типов файлов на всех рабочих машинах.
  • Настройте почтовый шлюз на блокировку или переименование опасных вложений (.exe, .scr, .js и подобных) — большинство корпоративных решений умеют это из коробки.
  • Используйте учётные записи без прав администратора для повседневной работы: даже если вредоносный файл запустится, ущерб будет ограничен.
  • Держите программы обновлёнными: часть атак через «безобидные» форматы эксплуатирует старые версии просмотрщиков и офисных пакетов.
  • Регулярно делайте резервные копии: это единственная надёжная страховка, если что-то всё же проскочило.

Частые вопросы

Файл называется .jpg, но внутри PDF. Это опасно?

Само по себе нет: скорее всего, файл просто неправильно сохранён программой или переслан с ошибкой. Переименуйте его в .pdf и откройте обычным способом. Опасность появляется, когда наоборот: «документ» оказывается исполняемым файлом или скриптом.

Можно ли доверять онлайн-определителям типа файла?

Они корректно читают сигнатуры, но вы загружаете файл на сторонний сервер. Для публичных документов это приемлемо, для конфиденциальных — используйте локальные инструменты вроде команды file или hex-просмотрщика.

Что означает «MZ» в начале файла с расширением .doc?

«MZ» — сигнатура исполняемых файлов Windows. Документ Word старого формата начинается с D0 CF 11 E0. Несовпадение — серьёзный повод не открывать файл и проверить его антивирусом.

Антивирус не нашёл угрозу, но расширение подменено. Файл безопасен?

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

Что запомнить и с чего начать

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

Конкретные шаги: включите отображение расширений прямо сейчас, запомните пару ключевых сигнатур («MZ» — исполняемый файл, «PK» — ZIP и Office-документы, «%PDF-» — PDF) и заведите привычку проверять командой file или hex-просмотрщиком любой файл, который вызывает хотя бы лёгкое сомнение. Эти три действия занимают минуты и закрывают большую часть сценариев с подменой расширений.

PEFile.ru