Binwalk linux что это

Как извлечь образ прошивки с помощью Binwalk

Binwalk создан в далеком 2010 году Крейгом Хеффнером, но до сих пор не теряет актуальности. Это бесплатный, но мощный инструмент с открытым исходным кодом для анализа, извлечения и реверс-инжиниринга образов прошивок.

Вы можете использовать Binwalk для извлечения компонентов из образа прошивки и реверс-инжиниринга, чтобы понять как она устроена. Искать в бинарных файлах уязвимости, извлекать файлы и искать бекдоры или цифровые сертификаты.

Инструмент можно установить и использовать в операционных системах Linux, OSX, FreeBSD, Cygwin и Windows.

Binwalk в Windows

В этой главе я покажу, как установить Binwalk в Windows, но имейте ввиду, если вы хотите использовать все функции, лучше его использовать в Linux.

Установка Binwalk в Windows

Чтобы установить в Windows, вам необходимо сначала загрузить и установить Python. Следующим шагом будет установка модуля python-lzma. После успешного выполнения вышеуказанных шагов необходимо загрузить архив Binwalk из репозитория на GitHub.

Затем нужно распаковать загруженный файл и открыть его. Теперь откройте командную строку.

Введите следующую команду:

После выполнения этой команды будет установлен Binwalk.

На следующем этапе необходимо скачать скрипт binwalk.py. Обратите внимание, что этот файл будет помещен в отдельную папку на рабочем столе.

Следует отметить, что вы должны открыть командную строку в указанной выше папке. Затем для установки pyinstaller введите следующую команду.

Чтобы создать исполняемый файл (.exe) из binwalk.py, вы должны ввести следующую команду:

Вы можете найти исполняемый файл, перейдя в текущую папку. Затем вам нужно скопировать его в C:\Windows\System32 .

После того, были выполнены предыдущие шаги, можно удалить папку, созданную на рабочем столе.

Использование Binwalk в Windows

В этой главе покажу пример использования. Как вы можете видеть на изображении ниже, у нас есть файл изображения с именем brain.jpg.

Чтобы проанализировать это изображение с помощью Binwalk, надо использовать следующую команду:

Выполнив указанную выше команду, вы увидите следующее:

Как видите, это не просто изображение, оно содержит ZIP-архив с файлом flag.txt. Извлечь из образа файлы, можно командой:

Тулза извлекает содержимое изображения и помещает в папку с именем _brain.jpg.extracted.

Binwalk в Kali Linux / Linux

Установить Binwalk в Linux просто, но немного сложнее чем установка в Windows.

Использование плагина Binwalk IDA

Установите плагин Binwalk IDA с помощью setup.py. В нем будет указан путь к вашему установочному каталогу IDA.

Когда вы устанавливаете плагин IDA, появятся два пункта меню в раскрывающемся списке меню поиска IDA:

  1. Binwalk signatures — сканирует загруженный IDB на предмет подписей файлов.
  2. Binwalk opcodes — сканирует загруженный IDB на предмет общих подписей опкодов.

Установка Binwalk в Kali Linux

Инструмент установлен в Kali Linux по умолчанию. Чтобы установить Binwalk и любые другие пакеты, от которых он зависит, используйте следующую команду:

Заключение

Я показал, как установить Binwalk и, как с его помощью извлекать файлы. Вы также можете использовать Binwalk для выполнения анализа энтропии. Если вы занимаетесь реверсом, тогда, рекомендую прочитать статью «Лучшие инструменты для реверс-инжиниринга».

Источник

Инструменты Kali Linux

Список инструментов для тестирования на проникновение и их описание

Binwalk

Описание Binwalk

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

Кроме прошивок, Binwalk может сканировать файлы и образы файловых систем для поиска множества различных встроенных типов файлов и файловых систем.

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

Читайте также:  Windows wireless keyboard 800

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

Binwalk умеет вычислять энтропию участков файла и строит график энтропии — это может помочь не упустить интересный участок если поиск по сигнатурам пропустил его.

Автор: Craig Heffner, ReFirmLabs

Справка по Binwalk

Руководство по Binwalk

Страница man отсутствует.

-B, —signature

Выполняется сигнатурный анализ указанных файлов; если другие параметры анализа не указаны, это значение по умолчанию.

Используйте эту опцию, если хотите объединить сигнатурный анализ с дополнительными анализаторами, такими как —entropy:

-R, —raw=СТРОКА

Это позволяет вам искать в файле (файлах) указанную строку. Строка для поиска может включать в себя восьмеричные и/или шестнадцатеричные значения с экранированием.

Используйте эту опцию, когда вам нужно найти определённую последовательность сырых байтов:

-A, —opcodes

Эта опция инструктирует binwalk искать в указанном файле (файлах) исполняемых кодов операций (opcode), общих для различных архитектур ЦП. Обратите внимание, что некоторые сигнатуры опкодов короткие и поэтому могут давать ложноположительные результаты.

Используйте это, когда вам нужно найти исполняемый код в файле или если вам нужно определить архитектуру исполняемого файла:

-m, —magic=ФАЙЛ

Загрузить альтернативный файл с набором сигнатур вместо файла по умолчанию.

Используйте это, если у вас есть собственный файл сигнатур, содержащий подписи, которые вы хотите найти:

-b, —dumb

Отключает «умное» сопоставление подписей.

Полезно, когда ключевые слова умной подписи в ложноположительных подписях вызывают пропуск других действительных подписей (например, через ключевое слово jump-to-offset):

-I, —invalid

Отображает все результаты, даже отмеченные как неверные.

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

-x, —exclude=ФИЛЬТР

Исключает подписи, соответствующие указанному фильтру исключения. Фильтры — это регулярные выражения в нижнем регистре; можно указать несколько фильтров.

Магические подписи, первая строка которых соответствует заданному фильтру, не загружаются вообще; таким образом, использование этого фильтра может помочь сократить время сканирования сигнатур.

Полезно для исключения ненужных или неинтересных результатов:

Исключить подписи вычислителя HP и OSX mach-o:

-y, —include=ФИЛЬТР

Включает только подписи, соответствующие указанному фильтру включения. Фильтры — это регулярные выражения в нижнем регистре; можно указать несколько фильтров.

Будут загружены только магические подписи, первая строка которых соответствует указанному фильтру; таким образом, использование этого фильтра может помочь сократить время сканирования сигнатур.

Полезно при поиске только определённых подписей или типов подписей:

Искать только сигнатуры файловой системы:

-Y, —disasm

Пытается определить архитектуру ЦП исполняемого кода, содержащегося в файле, с помощью дизассемблера Capstone.

Указание —verbose для этого сканирования дополнительно распечатает дизассемблированные инструкции.

Обычно более надёжен, чем простой анализ сигнатур, выполняемый —opcodes, но поддерживает меньшее количество архитектур:

-T, —minsn

Установит минимальное количество последовательных инструкций, чтобы результат —disasm считался действительным. По умолчанию 500 инструкций:

-k, —continue

Даёт команду —disasm не останавливаться на первом результате:

-E, —entropy

Выполняет энтропийный анализ входных файлов, печатает сырые данные энтропии и генерирует энтропийные графики.

Энтропийный анализ можно комбинировать с —signature, —raw или —opcodes для лучшего понимания целевого файла(ов).

Полезно для определения частей интересных данных, которые могли быть пропущены сканированием сигнатур:

В сочетании с параметром —verbose выводится необработанная энтропия, рассчитанная для каждого блока данных:

ПРЕДУПРЕЖДЕНИЕ API PYTHON: модуль построения графиков, используемый binwalk (pyqtgraph), по завершении вызывает os._exit; это очевидно необходимо для решения различных проблем QT. При запуске binwalk из командной строки энтропийный анализ всегда выполняется в последнюю очередь, что не вызывает беспокойства. Однако при вызове энтропийного анализа через API обязательно отключите построение графиков (—nplot), чтобы предотвратить преждевременный выход из скрипта.

-J, —save

Автоматически сохраняет график энтропии, созданный с помощью —entropy, в файл PNG вместо его отображения.

-Q, —nlegend

Опускает легенду из графиков энтропии, созданных с помощью —entropy:

-N, —nplot

Отключает графические графики энтропии для сканирования —entropy.

-H, —high=ЧИСЛО_С_ПЛАВАЮЩЕЙ_ЗАПЯТОЙ

Устанавливает восходящий уровень порогового уровня энтропии. Действительно только при использовании с —entropy. Указанное значение должно быть от 0 до 1:

Читайте также:  Как поменять тип диска при установке windows

-L, —low=ЧИСЛО_С_ПЛАВАЮЩЕЙ_ЗАПЯТОЙ

Устанавливает нисходящий уровень порогового уровня энтропии. Действительно только при использовании с —entropy. Указанное значение должно быть от 0 до 1:

-W, —hexdump

Выполняет шестнадцатеричный дамп входных файлов и цветовую кодировку байтов следующим образом:

  • Зелёный — эти байты были одинаковыми во всех файлах.
  • Красный — эти байты были разными во всех файлах
  • Синий — эти байты были разными только в некоторых файлах.

Можно искать различия в любом произвольном количестве файлов; дополнительные полезные параметры —block, —offset, —length и —terse:

Примечание: если вам нужно разбить вывод на страницы, установите утилиту most, так как она лучше поддерживает разбиение на страницы цветного вывода.

-G, —green

Отображать только строки, содержащие зелёные (одинаковые во всех файлах) байты во время —hexdump:

-i, —red

Отображать только строки, содержащие красные (разные во всех файлах) байты во время —hexdump:

-U, —blue

Отображать только строки, содержащие синие (разные в некоторых файлах) байты во время —hexdump:

-w, —terse

При выполнении —hexdump отображать только шестнадцатеричный дамп первого файла.

Полезно при просмотре большого количества файлов, которые не помещаются на экране:

-e, —extract

Загружает общие правила извлечения —dd из предопределённого файла и пользовательские правила из

-D, —dd=

Извлекает файлы, идентифицированные во время сканирования —signature. Можно указать несколько параметров —dd.

  • type — это строка *в нижнем регистре*, содержащаяся в описании подписи (поддерживаются регулярные выражения)
  • ext — это расширение файла, которое следует использовать при сохранении диска с данными (по умолчанию нет)
  • cmd — это необязательная команда для выполнения после сохранения данных на диск

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

В следующем примере демонстрируется указание правила извлечения с помощью параметра —dd, который будет извлекать любую подпись, содержащую строку «zip archive» с расширением файла «zip», а затем выполнять команду «unzip». Кроме того, изображения PNG извлекаются «как есть» с расширением файла «PNG».

Обратите внимание на использование заполнителя «%e». Этот заполнитель будет заменён относительным путём к извлечённому файлу при выполнении команды unzip:

-M, —matryoshka

Эта опция будет рекурсивно сканировать извлечённые файлы во время сканирования —signature. Допустимо только при использовании с —extract или —dd.

-C, —directory=СТРОКА

Устанавливает выходной каталог для извлечённых данных (по умолчанию: текущий рабочий каталог).

Применимо только при использовании с параметрами —extract или —dd:

-d, —depth=ЦЕЛОЕ_ЧИСЛО

Ограничивает глубину рекурсии —matryoshka. По умолчанию глубина установлена на 8.

Применимо только при использовании с параметром —matryoshka:

-j, —size=ЦЕЛОЕ_ЧИСЛО

Ограничивает размер данных, вырезанных из целевого файла(ов). По умолчанию ограничений по размеру нет.

Допустимо только при использовании с —extract или —dd.

Обратите внимание, что этот параметр не ограничивает размер данных, извлекаемых/распаковываемых внешними утилитами извлечения.

Полезно при вырезании или извлечении данных из больших файлов при ограниченном дисковым пространстве:

-r, —rm

Очищает файлы нулевого размера и файлы, которые не могли быть обработаны утилитами извлечения во время извлечения.

Допустимо только при использовании с —extract или —dd.

Полезно для очистки ложноположительных файлов, скопированных из целевого файла(ов) во время извлечения:

-z, —carve

Выполняет только вырезание данных, не запускает внешние утилиты извлечения.

Допустимо только при использовании с —extract или —dd.

Полезно, когда вы хотите просто вырезать данные из целевого файла(ов), но не извлекать/распаковывать эти данные автоматически:

-X, —deflate

Определяет вероятные потоки необработанных сжатых сжатых данных методом грубой силы.

Полезно для восстановления данных из файлов с повреждёнными/изменёнными/отсутствующими заголовками. Можно комбинировать с —lzma.

Это сканирование может быть медленным, поэтому полезно ограничить область сканирования с помощью —offset и/или —length:

-Z, —lzma

Определяет возможные потоки необработанных сжатых данных LZMA методом грубой силы.

Полезно для восстановления данных из файлов с повреждёнными/изменёнными/отсутствующими заголовками. Можно комбинировать с —deflate.

Из-за различного количества опций сжатия LZMA это сканирование может быть очень медленным, поэтому полезно ограничить сканируемую область с помощью —offset и/или —length:

Читайте также:  При загрузке windows меняется разрешение экрана

-P, —partial

Искать только сжатые потоки использующие популярные параметры сжатия. Может значительно повысить скорость сканирования —lzma:

-S, —stop

При использовании с параметрами —lzma и/или —deflate сканирование будет остановлено после отображения первого результата:

-l, —length=ЦЕЛОЕ_ЧИСЛО

Устанавливает количество байтов для анализа в целевом файле:

-o, —offset=ЦЕЛОЕ_ЧИСЛО

Устанавливает начальное смещение, с которого следует начать анализ целевого файла. Также можно указать отрицательное смещение (расстояние от конца файла):

-O, —base=ЦЕЛОЕ_ЧИСЛО

Устанавливает базовый адрес для всех печатаемых смещений. Это значение будет добавлено к смещению исходного файла для всех распечатанных результатов:

-K, —block=ЦЕЛОЕ_ЧИСЛО

Устанавливает размер блока в байтах, используемого во время анализа.

При использовании с —entropy это определяет размер каждого блока, анализируемого во время энтропийного анализа.

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

-g, —swap=ЦЕЛОЕ_ЧИСЛО

Возвращается на каждые n байтов перед их сканированием:

-f, —log=ФАЙЛ

Записывать результаты сканирования в указанный файл.

Данные, сохранённые в файле журнала, будут идентичны данным, отображаемым в терминале, если не указан параметр —csv.

Данные будут сохраняться в файл журнала, даже если указан параметр —quiet:

-c, —csv

Сохраняет данные журнала в формате CSV. Эта опция игнорируется, если используется с —cast или —hexdump.

Действует только в сочетании с параметром —log:

-t, —term

Форматирует вывод в соответствии с текущей шириной окна терминала.

Полезно для повышения читабельности вывода с переносом длинной строки:

-q, —quiet

Отключает вывод на стандартный вывод.

Наиболее удобно при использовании с —log или подробным сканированием, например —entropy:

-v, —verbose

Включает подробный вывод, включая MD5 целевого файла и временную метку сканирования.

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

-h, —help

Отображает вывод справки по binwalk:

-a, —finclude=СТРОКА

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

-p, —fexclude=СТРОКА

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

-s, —status=ЦЕЛОЕ_ЧИСЛО

Включите сервер состояния на указанном номере порта. Сервер состояния слушает только localhost и распечатывает удобочитаемые данные ASCII, относящиеся к текущему состоянию сканирования. Вы можете подключиться к нему с помощью telnet, netcat и так далее.

Примеры запуска Binwalk

Сканирование прошивки

Основная – и, безусловно, самая популярная – функция binwalk – это сканирование по сигнатурам.

Binwalk может сканировать образ прошивки на предмет множества различных встроенных типов файлов и файловых систем; просто дайте ему список файлов для сканирования:

Извлечение файлов

С помощью параметра -e вы можете указать binwalk извлечь любые файлы, которые он найдёт в образе прошивки:

Binwalk даже может рекурсивно сканировать файлы при их извлечении, если вы также укажете опцию -M:

И если указана опция -r, любые сигнатуры файлов, которые не удалось извлечь или которые привели к файлам нулевого размера, будут автоматически удалены:

Чтобы извлечь файлы по одному конкретному типу сигнатуры, укажите одну или несколько опций -D:

Анализ энтропии

Что произойдёт, если binwalk не сообщит ни о каких найденных сигнатурах? Или как узнать, что binwalk не пропустил ничего интересного?

Анализ энтропии может помочь выявить интересные разделы данных внутри образа прошивки:

СОВЕТ: Вы можете комбинировать другие сканирования со сканированием энтропии. Например, вы можете объединить сканирование по сигнатурам со сканированием энтропии:

Установка Binwalk

Установка в Kali Linux

Программа предустановлена в Kali Linux.

Для установки в минимальные сборки выполните:

Для установки всех рекомендуемых зависимостей выполните команды:

Если предыдущая команда завершилась ошибкой, то выполните команду:

Установка в BlackArch

Программа предустановлена в BlackArch.

Для установки в минимальные сборки выполните:

Для установки всех рекомендуемых зависимостей выполните команду:

Установка в Debian, Linux Mint, Ubuntu

Для установки всех рекомендуемых зависимостей выполните команду:

Если предыдущая команда завершилась ошибкой, то выполните команду:

Информация об установке в другие операционные системы будет добавлена позже.

Источник

Оцените статью