Как найти вложенные файлы в PE-файле с помощью binwalk

Как найти вложенные файлы в PE-файле с помощью binwalk

Ты скачал подозрительный .exe-файл — возможно, вредоносный, возможно, просто упакованный. Ты хочешь понять: а что внутри? Не просто «запустить и посмотреть», а реально разобрать его как конверт с письмом внутри письма. И тебе не нужна теория про PE-структуру — тебе нужно понять, как найти спрятанные архивы, изображения, скрипты или даже вторые исполняемые файлы. Вот где приходит на помощь binwalk.

binwalk — это не «инструмент для хакеров». Это как детектор скрытых слоёв в фото. Он не пытается понять, что там написано — он ищет сигнатуры. И если в PE-файле есть ZIP-архив, встроенный как бинарный мусор, binwalk его найдёт. Даже если он не в конце файла, а прямо в середине кода.

Почему именно binwalk, а не другие утилиты?

Есть много способов смотреть внутрь PE-файлов: strings, objdump, PEiD, Exeinfo PE. Но они не ищут вложенные файлы. Они ищут строки, функции, заголовки. А binwalk — ищет сигнатуры файлов. Он знает, как выглядит начало JPEG, PNG, ZIP, 7z, ELF, даже BIOS-образа. И если в PE-файле есть что-то подобное — он его вытащит.

Пример: ты видишь, что размер файла 2,1 МБ, а при запуске он ведёт себя как 500 КБ. Где ещё 1,6 МБ? Binwalk покажет: там встроенная картинка с логотипом, скрытый архив с конфигами и ещё один .exe, который запускается при старте. Без binwalk ты этого не увидишь.

Как установить binwalk

На Linux — проще всего:

sudo apt update && sudo apt install binwalk

На macOS через Homebrew:

brew install binwalk

На Windows — сложнее. Binwalk не нативный, но можно:

  • Установить WSL (Windows Subsystem for Linux) — рекомендую Ubuntu 22.04;
  • Или использовать готовый бинарник из репозитория GitHub (но там могут быть зависимости, которые не заработают).

Если ты на Windows и не хочешь WSL — лучше используй 7-Zip или PE Explorer для простого просмотра, но они не найдут сложные вложения. Binwalk — твой лучший выбор, если хочешь глубоко копать.

Шаг за шагом: как искать вложенные файлы

  1. Скачай целевой PE-файл. Назови его, например, suspicious.exe.
  2. Открой терминал и перейди в папку с файлом.
  3. Запусти базовый анализ:
binwalk suspicious.exe

Ты увидишь что-то вроде:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)
1024          0x400           Zip archive data, at least v2.0 to extract
20480         0x5000          LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes
1048576       0x100000        PNG image, 1024 x 768, 8-bit/color RGB, non-interlaced
2097152       0x200000        Microsoft executable, portable (PE)

Вот оно. Три вложения:

  • ZIP-архив в начале (1024 байт);
  • Сжатый LZMA-блок (20 КБ);
  • Изображение PNG (1 МБ);
  • Ещё один PE-файл в конце (2 МБ).

Ты можешь просто скопировать этот файл и открыть его в Hex-редакторе — но binwalk умеет вытаскивать всё автоматически.

  1. Извлеки всё в отдельную папку:
binwalk -e suspicious.exe

Он создаст папку suspicious.exe.extracted/ и положит туда:

  • 0x400.zip — архив;
  • 0x5000.lzma — сжатый блок;
  • 0x100000.png — картинка;
  • 0x200000.exe — второй исполняемый файл.

Теперь ты можешь открыть 0x400.zip — внутри оказались скрипты PowerShell и конфиги с ключами API. А 0x200000.exe — это тот самый бэкдор, который не запускается напрямую, а только через основной файл.

Что ещё можно искать? Сигнатуры, которые binwalk знает

Binwalk не просто «ищет ZIP». Он знает сотни сигнатур. Вот основные, которые чаще всего встречаются в PE-файлах:

Тип файла Сигнатура (первые байты) Где может быть спрятан
ZIP 50 4B 03 04 Внутри ресурсов, после кода
7z 37 7A BC AF 27 1C В бинарных данных, встраивается как «дополнение»
PNG 89 50 4E 47 0D 0A 1A 0A Логотипы, фоновые изображения
JPEG FF D8 FF В ресурсах, иногда как «водяной знак»
LZMA 5D 00 00 00 00 Сжатые конфиги, скрипты
ELF 7F 45 4C 46 Скрытые Linux-модули в Windows-оболочке
SQLite 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 Базы данных с настройками, логами
Python bytecode (.pyc) 03 F3 0D 0A Скрытые скрипты, особенно в майнерах

Если ты видишь в выводе binwalk что-то неизвестное — не игнорируй. Это может быть что-то редкое, но опасное. Например, вредоносные программы иногда встраивают обфусцированные скрипты на JavaScript или VBScript в виде бинарных блоков — binwalk их тоже найдёт, если они содержат известные сигнатуры.

Что делать, если binwalk ничего не нашёл?

Бывает. Не всегда вложение выглядит как стандартный ZIP или PNG. Иногда файлы:

  • Зашифрованы;
  • Сжаты нестандартным алгоритмом;
  • Сплющены в бинарный поток без заголовков;
  • Спрятаны в пустых участках PE-секций.

В таких случаях попробуй:

  1. Увеличь глубину поиска: binwalk -e -M suspicious.exe — флаг -M включает «многоуровневый» анализ. Binwalk будет рекурсивно анализировать извлечённые файлы. Иногда внутри ZIP-архива — ещё один ZIP, а потом — скрипт. Без -M ты остановишься на первом уровне.
  2. Проверь «сырые» данные: binwalk -B suspicious.exe — выведет только байты, без интерпретации. Ты увидишь, где в файле резко меняется структура — например, после 1,5 МБ появляется длинная последовательность нулей, а потом — опять байты. Это может быть место, где спрятано что-то.
  3. Ищи вручную: Открой файл в hexdump или HxD и ищи известные сигнатуры вручную. Например, ищи 50 4B 03 04 — начало ZIP. Если найдёшь — скопируй оттуда до конца файла и сохрани как .zip.

Частые ошибки — и как их избежать

  1. Игнорируешь вывод без распаковки. Ты видишь, что binwalk нашёл «ZIP archive», но не запускаешь -e. Результат: ты не знаешь, что внутри. Проверяй всегда извлечённые файлы.
  2. Думаешь, что binwalk «разархивирует» всё. Он не распаковывает архивы — он только вытаскивает их как файлы. Тебе нужно самому открыть 0x400.zip и посмотреть содержимое. Binwalk не читает содержимое ZIP — он просто знает, где он начинается и заканчивается.
  3. Запускаешь binwalk на Windows без WSL. Скачанный .exe с GitHub может не запуститься — нет нужных библиотек. Лучше используй WSL. Это не сложнее, чем установить Java.
  4. Проверяешь только один файл. Если ты нашёл вложение — проверь его тоже. Иногда внутри извлечённого .exe — ещё один PE-файл. Просто запусти binwalk -e extracted/0x200000.exe.
  5. Считаешь, что если ничего не найдено — файл чистый. Это опасно. Binwalk не умеет искать шифрованные данные. Если в файле есть AES-шифрованный блок — он будет выглядеть как случайный мусор. Нужно анализировать уже после извлечения.

Когда использовать binwalk — а когда нет

Не каждый PE-файл требует такого разбора. Вот когда он действительно нужен:

  • Ты анализируешь подозрительный софт — майнер, троян, рекламный агент. Там почти всегда есть вложения.
  • Ты работаешь с упакованными приложениями — например, обфусцированные .NET-приложения, которые встраивают DLL или скрипты.
  • Ты проверяешь firmware — даже если это .exe, но он предназначен для прошивки устройства (например, роутер или IP-камера).
  • Ты ищешь скрытые ресурсы — логотипы, шрифты, аудио, которые не отображаются в ресурсах PE-редактора.

А вот когда не нужен:

  • Ты просто хочешь посмотреть, какие DLL подгружаются — используй Dependency Walker или Process Monitor.
  • Ты ищешь строки с URL или ключами — используй strings suspicious.exe | grep -i "http".
  • Ты проверяешь легальный софт — например, установщик от Adobe. Там вложения — это норма, и ты не будешь их анализировать.

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

  1. Всегда работай в изолированной среде. Даже если ты просто извлекаешь файлы — не открывай их на основном ПК. Используй виртуалку или контейнер.
  2. После извлечения — сначала смотри размеры файлов. Если внутри ZIP-архива 10 МБ, а исходный файл был 2 МБ — это красный флаг. Значит, вложение было сжато, и его размер сильно отличается от ожидаемого.
  3. Если нашёл .exe внутри .exe — не запускай. Проверь его хешем на VirusTotal. Или используй pefile (Python) для анализа заголовков — без запуска.
  4. Сохраняй все извлечённые файлы с именами, которые содержат смещение (например, 0x100000.png). Это поможет тебе потом восстановить структуру, если что-то пойдёт не так.
  5. Если binwalk нашёл много мусора — не паникуй. Иногда это просто паддинг или остатки от сборки. Сравни с известными чистыми PE-файлами — например, с notepad.exe из Windows. Увидишь, что там тоже есть «лишние» блоки, но они пустые.

Что выбрать: binwalk или другие инструменты?

Вот когда что использовать:

Ситуация Что выбрать Почему
Нужно быстро найти вложенные архивы, картинки, скрипты binwalk Специализирован на сигнатурах. Быстро, автоматически, без настройки.
Хочешь посмотреть структуру PE: секции, импорты, ресурсы PE-bear или CFF Explorer Binwalk не показывает импорты или таблицы экспорта — он не PE-анализатор.
Нужно найти строки с URL, ключами, IP strings + grep Binwalk не ищет текст — только бинарные сигнатуры.
Файл зашифрован или упакован (UPX, Themida) Unpacker (например, UPX -d) + binwalk Сначала распакуй, потом анализируй. Binwalk не умеет распаковывать упаковщики.
Ты на Windows и не хочешь ставить Linux 7-Zip + Resource Hacker 7-Zip может открыть вложенные архивы в PE. Resource Hacker — для ресурсов. Но не найдёт LZMA или скрытые ELF.

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

Если ты держишь в руках подозрительный .exe и хочешь понять, что внутри — сделай так:

  1. Открой терминал в папке с файлом.
  2. Запусти: binwalk suspicious.exe.
  3. Если есть что-то, кроме PE-заголовка — запусти: binwalk -e -M suspicious.exe.
  4. Зайди в папку suspicious.exe.extracted/.
  5. Проверь все извлечённые файлы: архивы — открой, изображения — посмотри, .exe — проверь на VirusTotal.
  6. Если внутри — ещё один .exe — повтори процесс для него.

Это не магия. Это методика. Binwalk — не волшебная палочка, а лупа. Он не говорит, что там вредоносно. Он показывает, что есть. А уже тебе — анализировать, проверять, думать.

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

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

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