- Как найти вложенные файлы в PE-файле с помощью binwalk
- Почему именно binwalk, а не другие утилиты?
- Как установить binwalk
- Шаг за шагом: как искать вложенные файлы
- Что ещё можно искать? Сигнатуры, которые binwalk знает
- Что делать, если binwalk ничего не нашёл?
- Частые ошибки — и как их избежать
- Когда использовать binwalk — а когда нет
- Как лучше делать: рекомендации от практика
- Что выбрать: 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 — твой лучший выбор, если хочешь глубоко копать.
Шаг за шагом: как искать вложенные файлы
- Скачай целевой PE-файл. Назови его, например,
suspicious.exe. - Открой терминал и перейди в папку с файлом.
- Запусти базовый анализ:
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 умеет вытаскивать всё автоматически.
- Извлеки всё в отдельную папку:
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-секций.
В таких случаях попробуй:
- Увеличь глубину поиска:
binwalk -e -M suspicious.exe— флаг-Mвключает «многоуровневый» анализ. Binwalk будет рекурсивно анализировать извлечённые файлы. Иногда внутри ZIP-архива — ещё один ZIP, а потом — скрипт. Без-Mты остановишься на первом уровне. - Проверь «сырые» данные:
binwalk -B suspicious.exe— выведет только байты, без интерпретации. Ты увидишь, где в файле резко меняется структура — например, после 1,5 МБ появляется длинная последовательность нулей, а потом — опять байты. Это может быть место, где спрятано что-то. - Ищи вручную: Открой файл в
hexdumpилиHxDи ищи известные сигнатуры вручную. Например, ищи50 4B 03 04— начало ZIP. Если найдёшь — скопируй оттуда до конца файла и сохрани как .zip.
Частые ошибки — и как их избежать
- Игнорируешь вывод без распаковки. Ты видишь, что binwalk нашёл «ZIP archive», но не запускаешь
-e. Результат: ты не знаешь, что внутри. Проверяй всегда извлечённые файлы. - Думаешь, что binwalk «разархивирует» всё. Он не распаковывает архивы — он только вытаскивает их как файлы. Тебе нужно самому открыть
0x400.zipи посмотреть содержимое. Binwalk не читает содержимое ZIP — он просто знает, где он начинается и заканчивается. - Запускаешь binwalk на Windows без WSL. Скачанный .exe с GitHub может не запуститься — нет нужных библиотек. Лучше используй WSL. Это не сложнее, чем установить Java.
- Проверяешь только один файл. Если ты нашёл вложение — проверь его тоже. Иногда внутри извлечённого .exe — ещё один PE-файл. Просто запусти
binwalk -e extracted/0x200000.exe. - Считаешь, что если ничего не найдено — файл чистый. Это опасно. Binwalk не умеет искать шифрованные данные. Если в файле есть AES-шифрованный блок — он будет выглядеть как случайный мусор. Нужно анализировать уже после извлечения.
Когда использовать binwalk — а когда нет
Не каждый PE-файл требует такого разбора. Вот когда он действительно нужен:
- Ты анализируешь подозрительный софт — майнер, троян, рекламный агент. Там почти всегда есть вложения.
- Ты работаешь с упакованными приложениями — например, обфусцированные .NET-приложения, которые встраивают DLL или скрипты.
- Ты проверяешь firmware — даже если это .exe, но он предназначен для прошивки устройства (например, роутер или IP-камера).
- Ты ищешь скрытые ресурсы — логотипы, шрифты, аудио, которые не отображаются в ресурсах PE-редактора.
А вот когда не нужен:
- Ты просто хочешь посмотреть, какие DLL подгружаются — используй
Dependency WalkerилиProcess Monitor. - Ты ищешь строки с URL или ключами — используй
strings suspicious.exe | grep -i "http". - Ты проверяешь легальный софт — например, установщик от Adobe. Там вложения — это норма, и ты не будешь их анализировать.
Как лучше делать: рекомендации от практика
- Всегда работай в изолированной среде. Даже если ты просто извлекаешь файлы — не открывай их на основном ПК. Используй виртуалку или контейнер.
- После извлечения — сначала смотри размеры файлов. Если внутри ZIP-архива 10 МБ, а исходный файл был 2 МБ — это красный флаг. Значит, вложение было сжато, и его размер сильно отличается от ожидаемого.
- Если нашёл .exe внутри .exe — не запускай. Проверь его хешем на VirusTotal. Или используй
pefile(Python) для анализа заголовков — без запуска. - Сохраняй все извлечённые файлы с именами, которые содержат смещение (например,
0x100000.png). Это поможет тебе потом восстановить структуру, если что-то пойдёт не так. - Если 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 и хочешь понять, что внутри — сделай так:
- Открой терминал в папке с файлом.
- Запусти:
binwalk suspicious.exe. - Если есть что-то, кроме PE-заголовка — запусти:
binwalk -e -M suspicious.exe. - Зайди в папку
suspicious.exe.extracted/. - Проверь все извлечённые файлы: архивы — открой, изображения — посмотри, .exe — проверь на VirusTotal.
- Если внутри — ещё один .exe — повтори процесс для него.
Это не магия. Это методика. Binwalk — не волшебная палочка, а лупа. Он не говорит, что там вредоносно. Он показывает, что есть. А уже тебе — анализировать, проверять, думать.
Если ты прошёл эти шаги — ты уже знаешь больше, чем 90% тех, кто «анализирует» вредоносный код, просто запуская его в песочнице.
Информация в этой статье предназначена для образовательных и исследовательских целей. Анализ вредоносного ПО требует соблюдения правил безопасности и законодательства. Не запускайте подозрительные файлы на рабочих или личных устройствах. При работе с реальными угрозами консультируйтесь с квалифицированными специалистами по кибербезопасности.
