Визуализация бинарных файлов ELF


51

Недавно я увидел более старый разговор Сергея Братуса и Грега Конти по имени Voyage of the Reverser: A Visual Study of Binary Species.

Существуют ли какие-либо средства с открытым исходным кодом/бесплатные инструменты, которые можно использовать для просмотра визуальных представлений двоичных файлов, которые подаются (подобно тому, что показано в разговоре)?


Образцы из разговора:

Windows PE visualization

Documents Format Files

12

Данные визуализации инструмент, который я видел, используемый в разговоре, кажется, почти идентичны, если не идентичен инструменту BinVis доступно на Google Code. Скриншот некоторые особенности:

enter image description here

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

+1

Да, это его работа, и я думаю, что все, что доступно, если cantor.dust не появится как с открытым исходным кодом. 02 авг. 142014-08-02 09:42:50

  0

Кажется, что текущая версия доступна в http://binvis.googlecode.com/svn/trunk/binviz_0.01/bin/Release/app.publish/Application%20Files/binviz_0.01_1_0_0_1/, просто переименовав файл .exe. развернитесь на .exe 02 авг. 142014-08-02 20:21:41


13

Это графические дампы исходных данных. Я использую этот экстенсивно, с шестнадцатеричным читателем, который я написал сам - это отличный способ быстро найти «данные» (см. Разницу между .text и .data) и более крупными структурами (которые часто содержат повторяющиеся или похожие данные на одних и тех же смещениях).

В верхних изображениях отображаются необработанные данные, сбрасываемые в виде информации в оттенках серого: каждый байт рассматривается как пиксель. Предположительно, автор выбрал оттенки серого для удобства. Я предпочитаю полный диапазон контрастных цветов, поэтому более длинные фрагменты «одинаковых» и «похожих» данных можно распознать.

Блоки сплошного цвета у основания (.rsrc) являются значками и другой графикой. Они выглядят горизонтально растянутыми, потому что они отображаются в виде одного пикселя в байтах и ​​на самом деле являются изображениями 16, 24 или 32-bpp.

(Я не верю, что весь топ .text! Исполняемый код отображается как случайные пиксели, но верхняя часть 1/3 в этом изображении менее плотная. Вероятно, это MZ и PE Executable Header, они содержат много нулей Чем более плотная часть в нижней части 1/3 является частью .text и, скорее всего, таблица Virtual Call, которая, как правило, содержит байты 0xFF.)

В нижних изображениях каждый байт отображается в монохромном режиме двоичный формат: каждый байт отображается как 8 последовательных пикселей. По соглашению они сначала отображаются с самым значительным битом. Нет необходимости проверять «endianness», поскольку это только вступает в игру при работе с одиночными значениями, превышающими один байт.

Написание чего-то подобного само по себе не сложно; вероятно, самое главное - сделать графические подпрограммы как можно быстрее, в частности, монохромные растровые изображения. Это также рассматривается Конти и др, Визуальная Reverse Engineering бинарного и файлов данных (http://www.rumint.org/gregconti/publications/2008_VizSEC_FileVisualization_v53_final.pdf).

При тестировании производительности мы обнаружили, что дисплей может быть обновлен в 0.03 секунд, оставляя возможность создавать визуализацию byteview при больших разрешениях, сохраняя при этом гибкий интерфейс. [...] Нам удалось достичь такого уровня производительности, избегая C# 's GetPixel и методы SetPixel и прямого доступа к памяти изображения [...]


Скриншоты из моего инструмента, очень похоже на то, приведено выше:

.text раздел CALC.EXE. Повторяющаяся структура внизу - таблица виртуального вызова.

calc.exe in binary view

Файл, содержащий RLE-кодированных изображений. Сжатие RLE может быть распознано горизонтальными полосами «когерентных» данных (лучше видно при интерактивном изменении ширины).

rle-compressed images

ГЗ сжатые данные, в монохромном режиме. Это как можно ближе к случайному статическому.

gz compressed data in monochrome

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

a tiny embedded bitmap font

Некоторые данные лучше визуализируются другими способами. Это палитра VGA старого стиля (6x6x6 RGB).

a palette visualized


39

Инструмент, который мы использовали для разговора, binviz, доступна здесь: binviz_0.zip.

Некоторые работы здесь:

И есть также ранее Black Hat говорить, в дополнение к той, которую я сделал с Сергеем:

Я гаванью» t использовал его через некоторое время, но binviz был написан на Visual C# (VS2005 или, возможно, VS2008). .zip - это файл проекта (источника), поэтому он должен загружаться в визуальную студию и запускаться. Существует также составленный .exe в ... /binviz_0.44bw/binviz_0.01/bin/Debug/. Вы должны просто удвоить щелкнуть его и запустить на компьютере под управлением Windows. Я разработал его под XP, но с тех пор использовал его под Windows 7, и он работал более или менее одинаково. (поведение события mouseover немного отличается, но все еще можно использовать).

Обратите внимание, что binviz является прототипом исследования и имеет ошибку ... он не , как небольшие файлы.Попробуем что-то 10M в размере, а затем отпустите . Я думаю, что это около 500K, где он начинает расстраиваться.

+1

Спасибо за вашу реакцию! В своей статье 2008 вы упоминаете независимые от платформы версии как «будущая работа» (стр. 8). Могли ли вы продолжить это, или же скачать еще каноническую «текущую» версию? 02 авг. 142014-08-02 13:12:26

+1

Я пошел по варианту, пытаясь включить автоматическое сопоставление произвольных двоичных файлов. [см. бинарный картографический документ] (http://www.rumint.org/gregconti/publications/dfrws_2010-301.pdf), а также не смог изучить версию независимой платформы. Так что да, это «текущая» версия. 02 авг. 142014-08-02 14:43:14

  0

@GregConti Будет ли это программное обеспечение распознавать шрифты в тексте, такие как статьи или книги? 16 апр. 152015-04-16 04:33:00


29

cantor.dust

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

cantor.dust example 1

Са Я думаю, что развитие остановилось, по крайней мере, я не слышал никаких новостей об этом проекте в последнее время.

Binwalk

enter image description here devttys0 реализовали подобную визуализацию в binwalk.

Vix/Biteye

графический (SDL основе) шестнадцатеричный инструмент свалка предназначен для GNU/Linux. Он позволяет видеть шаблоны, образованные его битами.

Github

GUI

binglide

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

enter image description here

senseye

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

Senseye

binvis.io

инструмент на основе браузера для визуализации двоичных данных.

С binvis.io, вы можете:

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

http://corte.si/posts/binvis/announce/index.html

===

BinVis

инструмент под управлением Qt для визуализации произвольных данных. BinVis обладает следующими способностями:

Визуализируйте большое количество двоичных данных (несколько TiB). Визуализировать во времени (нормальный график) и пространство (байтовый график) домены Визуализировать части файлов и сузить их в соответствующих частях файла «Шаг» через файл, чтобы посмотреть, какие типы данных содержат в каждой части файла " Обратный вывод ", чтобы выделить сильные шаблоны в визуализированных данных. Используйте фильтры, прозрачность, цветовые схемы и различные шейдеры, чтобы выделить соответствующие данные. Интенсивное использование многопоточности для повышения производительности Справедливо статического использования памяти, используя один и тот же объем памяти для визуализации файла 1GiB и файл 100TiB http://trippler.no/wpcms/?page_id=20 http://trippler.no/wpcms/wp-content/uploads/2014/06/Screenshot_2015-08-09_19-52-30.png

PortEx

Java библиотека для анализа Portable Исполняемые файлы со специальным фокусом по анализу вредоносных программ и устойчивости к аномалии PE

Veles

Binary рамки визуализации. Veles visualization


7

Я написал https://github.com/REMath/implementations/blob/master/code_examples/plot_hex.py, который реализует предложенный метод ngram Conti, а также компонент кластеризации для выделения визуальных свойств.


8

BinView является прототипом инструмента для визуализации

GitHub repository

Screen 1

Screen 2

Screen 3

Screen 4

двоичных данных

1

я был частью команды, которая построила динамический инструмент визуализации (динамический, поскольку он работает на расстрелах бинарных файлов, а не на статических бинарниках) называется Haxxis:

https://github.com/voidALPHA/cgc_viz (компонент визуализации, разработанный voidALPHA) https://github.com/Vector35/traceapi (генерирует следы используя модифицированный qemu, которые подаются в визуализатор)

Хотя он в основном работает в формате «Decree» (32-битный x86 модифицированный формат эльфов), было бы легко адаптироваться к другим бинарным форматам. Она производит некоторые изящные визуализации:

https://www.youtube.com/watch?v=6r1fOrDb80s&list=PLuDRBJDBc4F9HnfV5tQDwqhSs9a5VPegD https://www.youtube.com/watch?v=LEfejsqEucY&list=PL6wMum5UsYvZx2x9QGhDY8j3FcQUH7uY0&index=13 https://www.youtube.com/watch?v=SYYZjTx92KU&list=PL6wMum5UsYvZx2x9QGhDY8j3FcQUH7uY0&index=31 (длинный обзор самого мероприятия CGC с отрывками Haxxis по всему)