Admin
Администратор
инструментарий для реализации и разработки 1-day эксплойтов
BINDIFF
Первым в нашем списке идет BinDiff — инструмент, выпущенный небезызвестной компанией Zynamics, которую в марте 2013 года купила Google. Это единственный платный (но доставаемый
) представитель в сегодняшнем обзоре. После покупки компании Google цена на BinDiff уменьшилась с 900 до 200 долларов, правда, софт теперь стал доступен только для клиентов из Америки.
Данный инструмент написан на Java и представляет собой plugin для IDA Pro, который можно запускать как из Иды, так и отдельно от нее. В случае отдельного запуска необходимо указать два idb-файла для сравнения. В результате работы BinDiff проанализирует функции и разделит их на три категории, подсветит базовые блоки функций разными цветами. Зеленые блоки означают, что в обеих версиях файла существуют базовые блоки с идентичными мнемониками инструкций, но при этом операнды в инструкциях могут отличаться. Красный цвет означает, что соответствующий ББ отсутствует в другом файле. И наконец, желтый цвет говорит о том, что найден эквивалентный ББ, но в нем изменены какие-то инструкции. Из данной градации соответствия можно сделать вывод, что BinDiff основывает свой анализ эквивалентности функций только на ББ, ветвях и мнемониках инструкций.
Для определения эквивалентности функций используется около 13 подходов, а для определения эквивалентности ББ 14 подходов. Хочется отметить, что это единственный инструмент, который осилил сравнить файлы размером 9 Мб с 10 031 функцией на борту, на что у него ушло 15 минут (если кому интересно, то это были файлы ядра SAP-системы).
_zynamics.com/bindiff.html
TURBODIFF
Turbodiff - так же, как и BinDiff, представляет собой плагин для замечательного
дизассемблера IDA Pro. Как можно заметить, все программы данного класса имеют очень схожий интерфейс: экран, разделенный пополам, где слева представление одного бинарного файла, а справа другого и цветом выделены отличия между ними. Однако парни из CoreSecurity подумали и решили, что это абсолютно не догма, да и вообще не всегда удобно, и сделали Aureliax (bit.ly/UkYgyR) — расширение для Turbodiff, которое показывает все отличия между бинарными файлами на одном графе. При использовании чистого Turbodiff (без надстройки Aureliax) белым цветом отображаются базовые блоки, имеющие одинаковую контрольную сумму и число инструкций, зеленым — имеющие одинаковое число инструкций, желтым — разное число инструкций, красным — отсутствующие в одном из файлов. При использовании Aureliax все различия отображаются на едином графе.
Инструкции внутри каждого ББ могут подсвечиваться следующими цветами: красным (в новом файле данная инструкция отсутствует (удалена)), зеленым (в новом файле добавлена данная инструкция) и серым (те инструкции, что остались
без изменения).
Turbodiff имеет несколько интересных особенностей, о которых нельзя не сказать. К примеру, ведение своей собственной базы данных для хранения информации из idb-файла. Что еще можно отнести к его сильным сторонам? Вопервых, его код полностью открыт. Во-вторых, он использует свое представление ББ, функции, списков (чтобы узнать какое — загляни в файлы turbodiff.cpp, list.cpp). В-третьих, использует собственный алгоритм «потерянных» функций. Эта функциональность иногда очень сильно помогает в локализации уязвимости. Пример из жизни: IDA проанализировала огромный объем свежего кода Adobe Flash Player и определила 100500 функций. Однако на самом деле IDA не смогла определить функцию(ии) по некоторым адресам. А securityfix как раз исправлял код в этой самой «неопределенной» функции. Соответственно, ты никогда не увидишь, что изменяет патч, так как этой функции как бы нету. Вот в таких случаях Turbodiff просто выручает! Ну и конечно, как и у любого инструмента, у него есть свои минусы. Первый и основной — плагин работает только на IDA 5.X, а на 6-й линейке падает и останавливает процесс «диффинга». Еще одно, за что его можно упрекнуть, — это скорость работы. Из-за того что используется своя файловая БД, процесс анализа файлов очень медленный. Плюс очень простые алгоритмы, что приводит к «шуму» (много исправлений кода, которые не меняют смысл кода).
_coresecurity.com/corelabs-research/open-source-tools/turbodiff
PATCHDIFF2
Любимый многими (и мной в том числе) за свою скорость работы плагин для IDA Pro, поддерживающий весь необходимый функционал для сравнения двух исполняемых файлов. Обладает стандартным для таких программ интерфейсом, разделенным на две части. К положительным чертам относится то, что проект полностью открытый, а также его высокая скорость работы — алгоритм сравнения достаточно простой, хотя и имеет нtсколько уровней. На мой субъективный взгляд, этому плагину не хватает только хорошего собственного GUI, такого, например, как у BinDiff.
_code.google.com/p/patchdiff2
BOKKEN
Bokken представляет собой GUI для двух хорошо известных проектов Pyew и Radare и является единственным представителем из мира UNIX в текущем обзоре. Не вдаваясь в подробности, можно сказать, что это своего рода швейцарский нож для реверсера в *nix-системе. Он имеет в своем составе: дизассемблер, граф передачи управления, hexdump и многое другое. Что особенно радует и вселяет оптимизм — в своей последней версии он уже начинает отдаленно напоминать IDA Pro. К тому же в последнем релизе появилась возможность для сравнения двух бинарных файлов — как раз то, что нам надо.
_inguma.eu/projects/bokken
DARUNGRIM
DarunGrim написан человеком по имени Чон Ук О (Jeong Wook Oh), который начинал свою работу в eEye Digital Security над проектом EBDS (eEye Binary Diffing Suite). Данный инструмент обладает удобным веб-интерфейсом с продуманной навигацией, но основным преимуществом перед конкурентами является наличие автоматизации многих рутинных задач: скачивания патчей, их сортировки, определения вероятности наличия security-исправления внутри измененной функции. Данный функционал сложно переоценить. А еще добавь к этому несколько способов запуска (Handy, Batch-able, Quick, Really scriptable) и возможность создания своих паттернов поиска security-фиксов на Python. В общем, неудивительно, что данный проект активно развивается, имеет хорошее community вокруг себя, а workshop’ы по нему проходят на BlackHat. Для него также есть очень полезное расширение — DarunGrimScript (code.google.com/p/darun-grim-script), которое предоставляет скриптовый интерфейс к программе, что в результате позволяет еще больше автоматизировать работу с DarunGrim3 при анализе патчей.
_darungrim.org
BINDIFF
Первым в нашем списке идет BinDiff — инструмент, выпущенный небезызвестной компанией Zynamics, которую в марте 2013 года купила Google. Это единственный платный (но доставаемый
Данный инструмент написан на Java и представляет собой plugin для IDA Pro, который можно запускать как из Иды, так и отдельно от нее. В случае отдельного запуска необходимо указать два idb-файла для сравнения. В результате работы BinDiff проанализирует функции и разделит их на три категории, подсветит базовые блоки функций разными цветами. Зеленые блоки означают, что в обеих версиях файла существуют базовые блоки с идентичными мнемониками инструкций, но при этом операнды в инструкциях могут отличаться. Красный цвет означает, что соответствующий ББ отсутствует в другом файле. И наконец, желтый цвет говорит о том, что найден эквивалентный ББ, но в нем изменены какие-то инструкции. Из данной градации соответствия можно сделать вывод, что BinDiff основывает свой анализ эквивалентности функций только на ББ, ветвях и мнемониках инструкций.
Для определения эквивалентности функций используется около 13 подходов, а для определения эквивалентности ББ 14 подходов. Хочется отметить, что это единственный инструмент, который осилил сравнить файлы размером 9 Мб с 10 031 функцией на борту, на что у него ушло 15 минут (если кому интересно, то это были файлы ядра SAP-системы).
_zynamics.com/bindiff.html
TURBODIFF
Turbodiff - так же, как и BinDiff, представляет собой плагин для замечательного
дизассемблера IDA Pro. Как можно заметить, все программы данного класса имеют очень схожий интерфейс: экран, разделенный пополам, где слева представление одного бинарного файла, а справа другого и цветом выделены отличия между ними. Однако парни из CoreSecurity подумали и решили, что это абсолютно не догма, да и вообще не всегда удобно, и сделали Aureliax (bit.ly/UkYgyR) — расширение для Turbodiff, которое показывает все отличия между бинарными файлами на одном графе. При использовании чистого Turbodiff (без надстройки Aureliax) белым цветом отображаются базовые блоки, имеющие одинаковую контрольную сумму и число инструкций, зеленым — имеющие одинаковое число инструкций, желтым — разное число инструкций, красным — отсутствующие в одном из файлов. При использовании Aureliax все различия отображаются на едином графе.
Инструкции внутри каждого ББ могут подсвечиваться следующими цветами: красным (в новом файле данная инструкция отсутствует (удалена)), зеленым (в новом файле добавлена данная инструкция) и серым (те инструкции, что остались
без изменения).
Turbodiff имеет несколько интересных особенностей, о которых нельзя не сказать. К примеру, ведение своей собственной базы данных для хранения информации из idb-файла. Что еще можно отнести к его сильным сторонам? Вопервых, его код полностью открыт. Во-вторых, он использует свое представление ББ, функции, списков (чтобы узнать какое — загляни в файлы turbodiff.cpp, list.cpp). В-третьих, использует собственный алгоритм «потерянных» функций. Эта функциональность иногда очень сильно помогает в локализации уязвимости. Пример из жизни: IDA проанализировала огромный объем свежего кода Adobe Flash Player и определила 100500 функций. Однако на самом деле IDA не смогла определить функцию(ии) по некоторым адресам. А securityfix как раз исправлял код в этой самой «неопределенной» функции. Соответственно, ты никогда не увидишь, что изменяет патч, так как этой функции как бы нету. Вот в таких случаях Turbodiff просто выручает! Ну и конечно, как и у любого инструмента, у него есть свои минусы. Первый и основной — плагин работает только на IDA 5.X, а на 6-й линейке падает и останавливает процесс «диффинга». Еще одно, за что его можно упрекнуть, — это скорость работы. Из-за того что используется своя файловая БД, процесс анализа файлов очень медленный. Плюс очень простые алгоритмы, что приводит к «шуму» (много исправлений кода, которые не меняют смысл кода).
_coresecurity.com/corelabs-research/open-source-tools/turbodiff
PATCHDIFF2
Любимый многими (и мной в том числе) за свою скорость работы плагин для IDA Pro, поддерживающий весь необходимый функционал для сравнения двух исполняемых файлов. Обладает стандартным для таких программ интерфейсом, разделенным на две части. К положительным чертам относится то, что проект полностью открытый, а также его высокая скорость работы — алгоритм сравнения достаточно простой, хотя и имеет нtсколько уровней. На мой субъективный взгляд, этому плагину не хватает только хорошего собственного GUI, такого, например, как у BinDiff.
_code.google.com/p/patchdiff2
BOKKEN
Bokken представляет собой GUI для двух хорошо известных проектов Pyew и Radare и является единственным представителем из мира UNIX в текущем обзоре. Не вдаваясь в подробности, можно сказать, что это своего рода швейцарский нож для реверсера в *nix-системе. Он имеет в своем составе: дизассемблер, граф передачи управления, hexdump и многое другое. Что особенно радует и вселяет оптимизм — в своей последней версии он уже начинает отдаленно напоминать IDA Pro. К тому же в последнем релизе появилась возможность для сравнения двух бинарных файлов — как раз то, что нам надо.
_inguma.eu/projects/bokken
DARUNGRIM
DarunGrim написан человеком по имени Чон Ук О (Jeong Wook Oh), который начинал свою работу в eEye Digital Security над проектом EBDS (eEye Binary Diffing Suite). Данный инструмент обладает удобным веб-интерфейсом с продуманной навигацией, но основным преимуществом перед конкурентами является наличие автоматизации многих рутинных задач: скачивания патчей, их сортировки, определения вероятности наличия security-исправления внутри измененной функции. Данный функционал сложно переоценить. А еще добавь к этому несколько способов запуска (Handy, Batch-able, Quick, Really scriptable) и возможность создания своих паттернов поиска security-фиксов на Python. В общем, неудивительно, что данный проект активно развивается, имеет хорошее community вокруг себя, а workshop’ы по нему проходят на BlackHat. Для него также есть очень полезное расширение — DarunGrimScript (code.google.com/p/darun-grim-script), которое предоставляет скриптовый интерфейс к программе, что в результате позволяет еще больше автоматизировать работу с DarunGrim3 при анализе патчей.
_darungrim.org