SightHouse es una herramienta de código abierto para ingeniería inversa, que recopila información y metadatos de programas y ayuda a encontrar funciones similares. El proyecto es desarrollado por Quarkslab. La tarea principal de SightHouse es acelerar el reconocimiento de funciones ya conocidas y reducir el trabajo manual al analizar archivos binarios y firmware. El repositorio del proyecto se distribuye bajo la licencia MIT.
Resumen del proyecto
| Parámetro | Descripción |
|---|---|
| Propósito | Búsqueda de funciones similares y ya conocidas en programas y firmware |
| Escenario principal | Comparar las funciones del archivo analizado con una base de firmas |
| Entornos compatibles | IDA Pro, Ghidra, Binary Ninja |
| Componentes | Clientes, parte de servidor, pipeline de firmas |
| Instalación | PyPI, código fuente, imágenes de contenedor |
| Licencia | MIT |
Al analizar un firmware o un archivo ejecutable, el investigador dedica tiempo no solo a analizar la lógica, sino también a separar su propio código de componentes de biblioteca y de fragmentos repetitivos. SightHouse aborda precisamente esa parte de la tarea. La herramienta consulta una base de firmas, busca coincidencias y ayuda a entender más rápidamente qué funciones ya son conocidas y cuáles requieren análisis manual.
Si el sistema encuentra una coincidencia, el cliente añade una marca y un comentario con el nombre de la función y su procedencia. Este enfoque no sustituye el análisis manual, pero acelera la fase preparatoria y permite pasar antes a las partes del código que realmente importan. Otra parte importante del proyecto es el enriquecimiento automático de la base de firmas. SightHouse no solo busca coincidencias en la base existente, sino que también puede recopilar, compilar y analizar nuevos proyectos de forma automática para ampliar el conjunto de firmas.
El proyecto se distribuye bajo la licencia MIT. La licencia permite estudiar, modificar y usar el código libremente dentro de sus condiciones.
Cómo funciona SightHouse
SightHouse se organiza como un sistema compuesto por varios componentes interconectados.
- Clientes. Complementos para IDA Pro, Ghidra y Binary Ninja. Funcionan en el entorno de análisis habitual y envían al servidor el archivo binario y los metadatos.
- Parte de servidor. Recibe solicitudes de los clientes, procesa los archivos y lanza la búsqueda de firmas.
- Pipeline de firmas. Busca nuevos proyectos, los descarga, compila, analiza y añade las firmas extraídas a la base.
Dentro de la parte de servidor, el proyecto utiliza Ghidra en modo sin interfaz gráfica y las capacidades de BSim. La documentación también muestra que la arquitectura incluye una cola de tareas Celery, la base de la parte de servidor, la base BSim, un área de archivos compartida y módulos separados para recopilar, compilar y analizar proyectos.
El escenario de uso es el siguiente:
- El investigador abre un archivo en IDA Pro, Ghidra o Binary Ninja.
- El cliente de SightHouse envía al servidor el archivo binario y la información sobre el programa, las secciones y las funciones.
- El servidor compara las funciones con la base de firmas.
- Si se encuentra una coincidencia, el cliente añade un comentario y una marca con el nombre de la función y su origen.
- El investigador separa más rápido las partes de biblioteca conocidas del código que requiere análisis manual.
El valor práctico de este escenario es evidente. SightHouse elimina el trabajo rutinario de reconocimiento de funciones típicas y ayuda a concentrarse en la lógica única del programa.
A quién va dirigida la herramienta
- especialistas en ingeniería inversa que trabajan con archivos binarios grandes y firmware;
- investigadores de malware;
- equipos que usan IDA Pro, Ghidra o Binary Ninja y quieren acelerar el reconocimiento de funciones de biblioteca;
- laboratorios dispuestos a mantener una base de firmas propia y la parte de servidor.
La documentación diferencia a los usuarios en tres roles. El usuario estándar necesita un cliente y acceso a una base de firmas ya existente. El administrador de la parte de servidor necesita un servidor propio con una base ya configurada. El administrador del pipeline necesita el conjunto completo de componentes si la tarea es crear y mantener de forma continua una base de firmas propia.
Instalación y ejecución
El proyecto se puede instalar desde PyPI:
pip install sighthouse-client– solo los clientes;pip install sighthouse-frontend– solo la parte de servidor;pip install sighthouse-pipeline– solo el pipeline de firmas;pip install sighthouse[all]– conjunto completo.
La instalación desde el código fuente se realiza así:
git clone https://github.com/quarkslab/sighthouse && cd sighthouse
make install
Para integrar los clientes en los entornos de análisis se usan comandos separados:
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
La documentación también enumera imágenes de contenedor listas para las distintas partes del sistema, incluyendo la parte de servidor, el pipeline, las bases BSim y compilaciones de Ghidra sin interfaz. Esta opción resulta cómoda para quien quiera desplegar SightHouse como una infraestructura completa.
Composición de los servicios y limitaciones prácticas
| Parte del sistema | Composición | Significado práctico |
|---|---|---|
| Clientes | Complementos para IDA Pro, Ghidra, Binary Ninja | Se integran rápidamente en el entorno de análisis habitual |
| Parte de servidor | Interfaz de aplicación, base de la parte de servidor, cola de tareas, ejecutor de Ghidra, base BSim | Requiere despliegue y mantenimiento separados |
| Pipeline de firmas | Herramientas para recopilar proyectos, compiladores, analizadores, área de archivos compartida | Rellena la base automáticamente, pero complica la infraestructura |
SightHouse se puede usar en dos niveles. El primer nivel es solo el cliente para buscar coincidencias en una base ya disponible. El segundo nivel es el circuito completo con servidor y pipeline de firmas. En este segundo caso las capacidades son mayores, pero el coste inicial también es más alto.
Los desarrolladores advierten claramente que hay que usar únicamente instancias de SightHouse en las que el investigador confíe. La razón es sencilla: el servidor recibe los archivos binarios de los programas analizados. Si se trabaja con muestras sensibles, enviar esos archivos a un servidor ajeno puede ser inaceptable. En esos casos tiene sentido desplegar una instancia de servidor propia.
Ventajas y desventajas
| Ventajas | Desventajas |
|---|---|
| Acelera el reconocimiento de funciones conocidas | No sustituye el análisis manual |
| Soporta varios entornos populares de análisis | El despliegue completo requiere infraestructura de servidor separada |
| Separa clientes, servidor y pipeline de firmas | Mantener la base de firmas requiere recursos |
| Soporta el enriquecimiento automático de la base | La utilidad depende de la calidad y la cobertura de la base de firmas |
| Licencia abierta MIT | Enviar archivos binarios al servidor requiere confianza en la infraestructura |
Conclusión
SightHouse es una herramienta especializada para reconocer funciones conocidas y similares en archivos binarios y firmware. No pretende sustituir por completo la ingeniería inversa, sino resolver una tarea concreta y laboriosa: separar rápidamente los componentes de biblioteca típicos del código que realmente requiere análisis manual.
La principal fortaleza de SightHouse es la combinación de complementos cliente, búsqueda en el servidor y pipeline de firmas. La cuestión práctica clave es la disposición a mantener una parte de servidor de confianza y a nutrir la base de firmas. En entornos donde ya existe esa infraestructura o es posible desplegarla, SightHouse se presenta como una herramienta útil de trabajo en lugar de un experimento.