Как проверить, содержит ли файл скрытый «payload» после конца последней секции

Как проверить, содержит ли файл скрытый «payload» после конца последней секции

Ты скачал файл — архив, изображение, PDF, EXE — и чувствуешь, что что-то не так. Он ведёт себя странно: медленно открывается, внезапно запускает процессы, или просто не даёт покоя. Ты не уверен, что это вирус — но точно знаешь: в файле что-то лишнее. И не просто лишнее — спрятанное за концом структуры. Это называется «payload после последней секции» — и это один из самых старых, но эффективных способов скрыть вредоносный код.

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

Что это за «payload после последней секции»?

Многие файлы — PDF, JPEG, MP3, EXE — имеют чёткую структуру: заголовки, секции, метаданные, данные. После того как файл «заканчивается» по своей логике (например, после последнего блока данных в JPEG или после EOF в PE-файле), операционная система и программы игнорируют всё, что идёт дальше. Это не ошибка — это особенность. И злоумышленники этим пользуются.

Вот как это работает:

  • Ты открываешь JPEG — он показывает картинку. Всё нормально.
  • Но в конце файла, после последнего байта изображения, вставлено 15 КБ вредоносного EXE-кода.
  • Твоя система видит JPEG — и показывает картинку.
  • А если ты запустишь этот файл как исполняемый (например, переименуешь в .exe), то сначала загрузится картинка (как мусор), а потом — скрытый код.

Это называется file appending — «прикрепление» к файлу. И это не редкость. В 2023 году в отчётах ESET и Kaspersky 12% новых вредоносных образцов использовали именно этот метод, чтобы обойти антивирусы, которые сканируют только «основную» часть файла.

Как проверить — шаг за шагом

Ты не должен быть программистом, чтобы это сделать. Вот простой алгоритм — на Windows, macOS и Linux.

  1. Узнай реальный размер файла. Кликни правой кнопкой → «Свойства» (Windows) или «Получить информацию» (macOS). Запиши размер в байтах. Например: 2 145 789 байт.
  2. Открой файл в HEX-редакторе. Это не «блокнот». Нужен инструмент, который показывает байты. На Windows — HxD (бесплатно). На macOS — Hex Fiend. На Linux — xxd или ghex.
  3. Найди конец структуры файла. Это ключевой момент. Ты должен знать, где заканчивается «легальная» часть. Например:
    • JPEG: заканчивается на FF D9 — это маркер EOF. Всё, что идёт после — подозрительно.
    • PDF: заканчивается на %EOF — и обычно после него идёт 1–3 строки с комментариями. Если после этого — ещё килобайты бинарных данных — это тревожный знак.
    • EXE (PE): в конце файла есть таблица секций. Последняя секция определяет, где заканчивается «нормальная» часть. Но проще: ищи последний 50 45 00 00 (подпись PE) и смотри, где заканчивается последняя секция по её размеру и смещению.
  4. Сравни размер на диске с размером «легальной» части. Если после конца структуры есть ещё данные — это и есть потенциальный payload.
  5. Проверь, что там за данные. Выдели всё, что идёт после конца структуры. Скопируй в отдельный файл. Попробуй открыть его как .exe, .dll, .js — или просто посмотри на первые байты:
    • 4D 5A → это DOS-заголовок EXE → опасно.
    • 7F 45 4C 46 → ELF (Linux binary) → опасно.
    • 50 4B 03 04 → ZIP-архив → может быть скрытый архив с вредоносом.
    • 6A 46 73 65 → что-то нестандартное → подозрительно.

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

Что смотреть для разных форматов

Не все файлы одинаковы. Вот таблица с ключевыми маркерами и что искать после них.

Формат Конец легальной части Что искать после Пример опасных байтов
JPEG FF D9 Любые данные после 4D 5A, 7F 45 4C 46
PDF %EOF + 1–3 строки Данные после последней строки с %EOF 4D 5A, 50 4B 03 04
MP3 Конец аудио-фреймов (после последнего FF FB или FF FA) Данные после аудио 4D 5A, 7F 45 4C 46
EXE (Windows PE) После последней секции (по размеру в заголовке) Данные после последней секции 4D 5A (если дублируется), 50 4B 03 04
ZIP 50 4B 05 06 (End of Central Directory) Всё после этого маркера 4D 5A, 7F 45 4C 46

Обрати внимание: если после конца структуры идёт 4D 5A — это почти всегда EXE. Это маркер DOS-заголовка. Он не встречается в легальных данных JPEG или PDF. Если ты его видишь — это почти 100% вредонос.

Что выбрать: проверить вручную или автоматизировать?

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

  • Один файл, сомнения — открой в HxD, найди конец структуры, посмотри, что после. 5 минут — и ты знаешь, стоит ли рисковать.
  • Много файлов, например, скачал папку с торрента — используй binwalk (Linux/macOS) или Binwalk на Windows через WSL. Он автоматически сканирует файлы и показывает, есть ли вложенные данные. Просто запусти: binwalk -e имя_файла. Он распакует всё, что найдёт за пределами структуры.
  • Хочешь просто сканер — используй VirusTotal. Загрузи файл — если он содержит скрытый payload, 5–10 антивирусов его обнаружат как «Trojan.Generic», «Heur.AdvML.B» или «Suspicious.Append».

Частые ошибки

Люди делают три ошибки, из-за которых пропускают скрытый вредонос.

  1. Смотрят только в «блокноте». Там ты видишь только текстовые фрагменты. Скрытый EXE-код — бинарный. Он выглядит как мусор. Но это и есть вирус.
  2. Думают, что если файл открывается — он безопасен. JPEG с вредоносом открывается как картинка. PDF — как документ. Это не означает, что внутри нет кода.
  3. Игнорируют маленькие «лишние» куски. 2 КБ после JPEG — кажется, мелочь. Но это может быть скрипт на JavaScript, который запускается через уязвимость в браузере при открытии файла.

Особенно опасно, когда payload — это не EXE, а JavaScript или PowerShell-скрипт, встроенный в PDF или JPEG как бинарный поток. Антивирусы его не видят, потому что он не в «основной» части. А браузер или Adobe Reader — запускают его.

Что делать в разных ситуациях

Вот сценарии — и что делать в каждом.

  • Ситуация: скачал файл с сайта, который выглядит подозрительно — не открывай. Загрузи на VirusTotal. Если хотя бы 2 антивируса ругаются — удали. Проверь в HxD — если после конца структуры есть данные — это уже повод не открывать.
  • Ситуация: получил файл от коллеги, но он не знает, откуда он — не открывай. Попроси отправить через защищённый канал (например, корпоративный портал). Если не получается — проверь в HxD. Если есть payload — сообщи коллеге: «Файл заражён. Удали его».
  • Ситуация: ты администратор, и нужно проверить сотни файлов — используй binwalk в скрипте. Напиши простой bash:
    for file in *.jpg *.pdf *.exe; do
        binwalk -e "file" 2>/dev/null | grep -q "extracted" && echo "WARNING:file has hidden payload"
    done

    Это скажет тебе, какие файлы содержат вложенные данные. Потом проверь их вручную.

  • Ситуация: ты разработчик, и твой файл должен быть «чистым» — при сборке используй утилиты вроде strip (Linux) или upx --best — они удаляют неиспользуемые секции. А потом проверяй конец файла в HxD — он должен быть ровно на размер структуры.

Как лучше делать — рекомендации

Вот что работает на практике:

  • Всегда проверяй размер файла в свойствах и сравнивай с размером «легальной» части. Если они отличаются — это красный флаг.
  • Используй HxD или Hex Fiend как стандартный инструмент для проверки подозрительных файлов. Это не сложнее, чем открыть фото.
  • Проверяй файлы, даже если они «безопасные» по расширению. JPEG и PDF — самые частые «обёртки» для payload.
  • Если ты не уверен — не открывай. Загрузи на VirusTotal. Это занимает 2 минуты. Вместо того, чтобы рисковать всей системой.
  • Для автоматизации — binwalk. Он не идеален, но 90% случаев ловит.
  • Не доверяй антивирусам полностью. Многие не сканируют payload за концом структуры. Это уязвимость в их архитектуре.

Итог: что делать прямо сейчас

Если ты сомневаешься в файле — сделай три шага:

  1. Открой свойства — запиши размер в байтах.
  2. Открой файл в HxD (или аналоге) — найди конец структуры (по маркерам из таблицы выше).
  3. Посмотри: есть ли после него данные? Если да — выдели их, сохрани как отдельный файл, и проверь его на VirusTotal.

Если после конца структуры — пустота (нули или ничего), файл чист. Если есть байты — особенно 4D 5A, 7F 45 4C 46 или 50 4B 03 04 — это вредонос. Удаляй. Не открывай. Не игнорируй.

Ты не должен быть экспертом, чтобы защитить себя. Достаточно знать, где искать. И не доверять тому, что файл «открывается» — потому что это не значит, что он безопасен.

Информация в этой статье носит ознакомительный характер. При подозрении на вредоносное ПО или утечке данных обратитесь к специалисту по кибербезопасности.

Оцените статью
PEFile — Безопасность и технологии простым языком