Ускоряем реверс-инжиниринг: обзор инструмента SightHouse

Ускоряем реверс-инжиниринг: обзор инструмента SightHouse

SightHouse – открытый инструмент для реверс-инжиниринга, который собирает сведения и метаданные из программ и помогает находить похожие функции. Проект развивает Quarkslab. Основная задача SightHouse – ускорить распознавание уже известных функций и сократить ручную работу при разборе двоичных файлов и прошивок. Репозиторий проекта распространяется по лицензии MIT.

Кратко о проекте

Параметр Описание
Назначение Поиск похожих и уже известных функций в программах и прошивках
Основной сценарий Сопоставление функций исследуемого файла с базой сигнатур
Поддерживаемые среды IDA Pro, Ghidra, Binary Ninja
Компоненты Клиенты, серверная часть, конвейер сигнатур
Установка PyPI, исходный код, контейнерные образы
Лицензия MIT
Схема работы SightHouse.

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

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

Проект распространяется по лицензии MIT. Лицензия допускает свободное изучение, изменение и использование кода в рамках её условий.

Как работает SightHouse

SightHouse построен как система из нескольких связанных компонентов.

  1. Клиенты. Надстройки для IDA Pro, Ghidra и Binary Ninja. Они работают в привычной среде анализа и отправляют на сервер двоичный файл и метаданные.
  2. Серверная часть. Принимает запросы от клиентов, обрабатывает файлы и запускает поиск сигнатур.
  3. Конвейер сигнатур. Ищет новые проекты, загружает их, компилирует, анализирует и добавляет извлечённые сигнатуры в базу.

Внутри серверной части проект использует Ghidra в безголовом режиме и возможности BSim. Документация также показывает, что архитектура включает очередь задач Celery, базу серверной части, базу BSim, общую файловую область и отдельные модули для сбора, компиляции и анализа проектов.

Сценарий использования выглядит так:

  1. Исследователь открывает файл в IDA Pro, Ghidra или Binary Ninja.
  2. Клиент SightHouse отправляет на сервер двоичный файл и сведения о программе, секциях и функциях.
  3. Сервер сопоставляет функции с базой сигнатур.
  4. Если совпадение найдено, клиент добавляет комментарий и пометку с названием функции и её источником.
  5. Исследователь быстрее отделяет известные библиотечные части от кода, который требует ручного анализа.

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

Схема архитектуры SightHouse.

Кому подходит инструмент

  • специалистам по реверс-инжинирингу, которые работают с большими двоичными файлами и прошивками;
  • исследователям вредоносных программ;
  • командам, которые используют IDA Pro, Ghidra или Binary Ninja и хотят ускорить распознавание библиотечных функций;
  • лабораториям, готовым поддерживать собственную базу сигнатур и серверную часть.

Документация отдельно делит пользователей на три роли. Обычному пользователю нужен клиент и доступ к готовой базе сигнатур. Администратору серверной части нужен собственный сервер с уже существующей базой. Администратору конвейера нужен полный набор компонентов, если задача состоит в создании и постоянном пополнении собственной базы сигнатур.

Установка и запуск

Проект можно установить через PyPI:

  • pip install sighthouse-client – только клиенты;
  • pip install sighthouse-frontend – только серверная часть;
  • pip install sighthouse-pipeline – только конвейер сигнатур;
  • pip install sighthouse[all] – полный набор.

Установка из исходного кода выглядит так:

git clone https://github.com/quarkslab/sighthouse && cd sighthouse
 make install

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

pip install sighthouse-client
  
 # Ghidra
 sighthouse client install ghidra --ghidra-install-dir /path/to/ghidra
  
 # IDA Pro
 sighthouse client install ida --ida-dir /path/to/ida_dir
  
 # Binary Ninja
 sighthouse client install binja

Документация также перечисляет готовые контейнерные образы для отдельных частей системы, включая серверную часть, конвейер, базы BSim и безголовые сборки Ghidra. Такой вариант удобен для тех, кто хочет развернуть SightHouse как полноценную инфраструктуру.

Состав служб и практические ограничения

Часть системы Состав Практический смысл
Клиенты Плагины для IDA Pro, Ghidra, Binary Ninja Быстро встраиваются в привычную среду анализа
Серверная часть Прикладной интерфейс, база серверной части, очередь задач, Ghidra runner, база BSim Требует отдельного развёртывания и сопровождения
Конвейер сигнатур Сборщики проектов, компиляторы, анализаторы, общая файловая область Автоматически пополняет базу, но усложняет инфраструктуру

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

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

Плюсы и минусы

Плюсы Минусы
Ускоряет распознавание известных функций Не заменяет ручной анализ
Поддерживает несколько популярных сред анализа Полный запуск требует отдельной серверной инфраструктуры
Разделяет клиентов, сервер и конвейер сигнатур Поддержка базы сигнатур требует ресурсов
Поддерживает автоматическое пополнение базы Полезность зависит от качества и полноты базы сигнатур
Открытая лицензия MIT Передача двоичных файлов на сервер требует доверия к инфраструктуре

Вывод

SightHouse – специализированный инструмент для распознавания известных и похожих функций в двоичных файлах и прошивках. Он не пытается заменить реверс-инжиниринг целиком, а закрывает одну конкретную и трудоёмкую задачу: быстро отделить типовые библиотечные компоненты от кода, который действительно требует ручного анализа.

Главная сильная сторона SightHouse – сочетание клиентских плагинов, серверного поиска и конвейера сигнатур. Главный практический вопрос – готовность поддерживать доверенную серверную часть и наполнять базу сигнатур. Там, где такая инфраструктура уже есть или может быть развёрнута, SightHouse выглядит полезным рабочим инструментом, а не экспериментом.

Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
GIS
Газинформ
Сервис
SafeERP
Полный контроль безопасности 1С
Мониторинг платформы и анализ кода в едином интерфейсе
Подробнее
Реклама. 18+ ООО «Газинформсервис»
ОГРН 1047833006099

Комнатный Блогер

Объясняю новую цифровую реальность