
Solución de colaboración de ingeniería inversa multiherramienta.

CollaRE es una herramienta para la ingeniería inversa colaborativa que pretende permitir que equipos que necesitan usar más de una herramienta durante un proyecto colaboren sin la necesidad de compartir los archivos en una ubicación separada. También contiene una gestión de usuarios muy simple y, como tal, puede usarse para un servidor multiproyecto donde diferentes equipos trabajan en distintos proyectos.
El back-end de la herramienta es una simple Flask app con nginx delante de ella que se ejecuta en Docker y que trabaja con archivos y manifiestos basados en JSON que contienen los datos relevantes. El front-end es una herramienta GUI basada en PyQT con una interfaz simple que permite gestionar los proyectos y trabajar con los archivos binarios y sus correspondientes bases de datos de ingeniería inversa. Por ahora, la herramienta soporta Binary Ninja, Cutter (Rizin), Ghidra, Hopper Dissassembler, IDA, JEB y Android Studio (Decompiled by JADX). La implementación está abstraída del funcionamiento interno de estas herramientas tanto como es posible para evitar problemas con cualquier cambio de API y, por lo tanto, no se integra directamente en esas herramientas en forma de plugin (excepto por los plugins de migración de datos descritos a continuación). El trabajo se basa puramente en la gestión de los archivos producidos por estas herramientas (literalmente solo en las extensiones de archivo conocidas) y en operaciones simples de check-out y check-in al estilo SVN.
Toma la última versión binaria de este repositorio o clona el repositorio y ejecuta sudo python3 setup.py install en Linux o usa la línea de comandos en Windows y ejecuta python3 setup.py install. En Linux esto instalará la herramienta en el PATH y podrás ejecutarla simplemente con el comando collare. En Windows esto colocará el archivo en C:\Users\<USERNAME>\AppData\Local\Programs\Python\<PYTHON_VERSION>\Scripts\collare.exe (dependiendo de cómo hayas instalado Python).
Para interfaces de escritorio basadas en Gnome puedes usar el siguiente archivo de escritorio (las rutas a los archivos pueden variar según la versión de CollaRE y Python):
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
Para habilitar el soporte para Cutter agrega un archivo Cutter a tu ruta (cuando abras cmd/terminal escribir Cutter debería iniciar la aplicación).
Al guardar proyectos de Cutter (rizin) tienes que añadir manualmente .rzdb. No elimines la extensión que el archivo ya tiene (por ejemplo, exe o so).
Para habilitar el soporte para Binary Ninja agrega un archivo binaryninja a tu ruta (cuando abras cmd/terminal escribir binaryninja debería iniciar la aplicación).
Binary Ninja elimina las extensiones de archivo por defecto; sin embargo, la herramienta tiene esto en cuenta, por lo que no es necesario volver a añadir manualmente la extensión original del archivo. Guardar los proyectos tal cual en la ruta predeterminada es suficiente para poder subir correctamente la base de datos local bndb.
Para habilitar el soporte para Hopper Disassembler agrega un archivo Hopper a tu ruta (cuando abras cmd/terminal escribir Hopper debería iniciar la aplicación).
Hopper elimina las extensiones de archivo por defecto; sin embargo, la herramienta tiene esto en cuenta, por lo que no es necesario volver a añadir manualmente la extensión original del archivo. Guardar los proyectos simplemente con Ctrl+S es suficiente para poder subir correctamente la base de datos local hop.
Para habilitar el soporte para JEB agrega un archivo jeb a tu ruta (cuando abras cmd/terminal escribir jeb debería iniciar la aplicación). Esto se puede hacer renombrando el script de ejecución predeterminado para tu sistema operativo a jeb (para Windows esto sería realmente jeb.bat).
Para habilitar el soporte para la herramienta IDA agrega los archivos ida64 e ida a tu ruta (cuando abras cmd/terminal escribir ida64/ida debería iniciar la aplicación).
Para habilitar el soporte para esta herramienta agrega los archivos ghidraRun y analyzeHeadless (.bat para Windows) a tu ruta (cuando abras cmd/terminal escribir ghidraRun debería iniciar la aplicación). Ten en cuenta que analyzeHeadless está en la carpeta support del directorio raíz de Ghidra, así que asegúrate de ajustar PATH para acomodar ambos archivos.
El proceso de inicialización de la base de datos con Ghidra es un poco más complicado, ya que no hay forma de que Ghidra procese un archivo sin crear un proyecto. Entonces, para poder subir la base de datos de Ghidra (referida como ghdb) se te pedirá que crees un proyecto manualmente cuando el procesamiento automático falle (básicamente siempre que el archivo que procesas no sea ELF/PE) y luego especifiques la ruta al archivo gpr (perdón por eso).
Como los archivos APK y JAR se encuentran a menudo durante los esfuerzos de ingeniería inversa, la herramienta CollaRE también soporta trabajar con estos tipos de archivos. Para habilitar el soporte para estas herramientas es necesario asegurarse de que los archivos android-studio y jadx estén ambos en la ruta (cuando abras cmd/terminal escribir android-studio/jadx debería iniciar la aplicación). La herramienta JADX se utiliza para realizar la descompilación del archivo JAR/APK y Android Studio se utiliza para abrir los archivos resultantes. Ten en cuenta que el uso de Android Studio es opcional, ya que puedes asignar cualquier otra herramienta que maneje proyectos Gradle al comando android-studio (como IntelliJ IDEA).
Después de implementar el lado del servidor como se menciona en su propio archivo readme, es necesario distribuir el archivo de certificado utilizado a todos los usuarios de la aplicación, así como usar la cuenta admin predeterminada con la contraseña admin para crear otras cuentas de usuario (no olvides cambiar la contraseña del usuario admin) a través de la pestaña Admin. Cuando los usuarios están configurados, cualquiera puede crear sus propios proyectos y comenzar a trabajar con la herramienta en sí.
Para crear un proyecto, el usuario primero debe autenticarse en el servidor remoto ingresando la URL, las credenciales y proporcionar un certificado para validar la identidad del servidor. Después de eso, el estado cambiará a Connected y es posible seleccionar o eliminar proyectos existentes o crear un nuevo proyecto simplemente ingresando el nombre (solo caracteres alfanuméricos y _) y seleccionando los usuarios que participarán en el proyecto (se puede cambiar más tarde en la pestaña Admin). Ten en cuenta que el usuario que crea el proyecto se agrega automáticamente a la lista de usuarios, por lo que no tienes que seleccionarte a ti mismo.

Una vez que estés en la pestaña Project View puedes crear nuevas carpetas (solo caracteres alfanuméricos y _, lo siento) y usar arrastrar y soltar para subir archivos (o carpetas).