SightHouse – открытый инструмент для реверс-инжиниринга, который собирает сведения и метаданные из программ и помогает находить похожие функции. Проект развивает Quarkslab. Основная задача SightHouse – ускорить распознавание уже известных функций и сократить ручную работу при разборе двоичных файлов и прошивок. Репозиторий проекта распространяется по лицензии MIT.
Кратко о проекте
| Параметр | Описание |
|---|---|
| Назначение | Поиск похожих и уже известных функций в программах и прошивках |
| Основной сценарий | Сопоставление функций исследуемого файла с базой сигнатур |
| Поддерживаемые среды | IDA Pro, Ghidra, Binary Ninja |
| Компоненты | Клиенты, серверная часть, конвейер сигнатур |
| Установка | PyPI, исходный код, контейнерные образы |
| Лицензия | MIT |
При разборе прошивки или исполняемого файла исследователь тратит время не только на анализ логики, но и на отделение собственного кода от библиотечных и повторяющихся компонентов. SightHouse решает именно эту часть задачи. Инструмент обращается к базе сигнатур, ищет совпадения и помогает быстрее понять, какие функции уже известны, а какие требуют ручного разбора.
Если система находит совпадение, клиент добавляет отметку и комментарий с названием функции и указанием её происхождения. Такой подход не заменяет анализ, но ускоряет подготовительный этап и позволяет быстрее перейти к действительно важным фрагментам кода. Ещё одна важная часть проекта – автоматическое пополнение базы сигнатур. SightHouse не только ищет совпадения в уже накопленной базе, но и может автоматически собирать, компилировать и анализировать новые проекты, чтобы расширять набор сигнатур.
Проект распространяется по лицензии MIT. Лицензия допускает свободное изучение, изменение и использование кода в рамках её условий.
Как работает SightHouse
SightHouse построен как система из нескольких связанных компонентов.
- Клиенты. Надстройки для IDA Pro, Ghidra и Binary Ninja. Они работают в привычной среде анализа и отправляют на сервер двоичный файл и метаданные.
- Серверная часть. Принимает запросы от клиентов, обрабатывает файлы и запускает поиск сигнатур.
- Конвейер сигнатур. Ищет новые проекты, загружает их, компилирует, анализирует и добавляет извлечённые сигнатуры в базу.
Внутри серверной части проект использует Ghidra в безголовом режиме и возможности BSim. Документация также показывает, что архитектура включает очередь задач Celery, базу серверной части, базу BSim, общую файловую область и отдельные модули для сбора, компиляции и анализа проектов.
Сценарий использования выглядит так:
- Исследователь открывает файл в IDA Pro, Ghidra или Binary Ninja.
- Клиент 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 выглядит полезным рабочим инструментом, а не экспериментом.