
El OSINT Omnibus (versión beta)
Un Omnibus se define como un volumen que contiene varias novelas u otros artículos publicados previamente por separado y eso es exactamente lo que el proyecto Omnibus de InQuest pretende ser para la recolección de Inteligencia de Fuentes Abiertas (OSINT), la investigación y la gestión de artefactos.
Al proporcionar una aplicación de línea de comandos interactiva y fácil de usar, los usuarios pueden crear sesiones para investigar diversos artefactos como direcciones IP, nombres de dominio, direcciones de correo electrónico, nombres de usuario, hashes de archivos, direcciones de Bitcoin y más, a medida que seguimos expandiendo.
Este proyecto se ha inspirado en los grandes que nos precedieron, como SpiderFoot, Harpoon y DataSploit. Muchas gracias a esos grandes autores por contribuir al mundo del código abierto.
La aplicación está escrita pensando en Python 2.7 y se ha probado con éxito en entornos OSX y Ubuntu 16.04.
Esta es una versión beta de la aplicación final, por lo que puede haber algunos errores u otras rarezas durante el uso. En su mayor parte, Omnibus es completamente funcional y se puede usar para comenzar una investigación OSINT de inmediato.
Omnibus está construido de manera modular que permite agregar fácilmente módulos de fuentes de datos OSINT y módulos de importación/exportación. Cada módulo por categoría se incluye en un solo directorio, ¡y agregando unas pocas líneas de código, tu módulo podría ser el próximo!
A medida que la Wiki continúa creciendo, tendremos ejemplos completos de cómo escribir complementos personalizados.
Si observas algún error u otro problema, por favor crea un Issue y/o Pull Request. También nos encantaría el apoyo de la comunidad para crear más módulos y expandir los casos de uso de Omnibus. ¡Las bifurcaciones (forks) y Pull Requests para nuevas funcionalidades son más que bienvenidas!
Este archivo README sirve como una visión general rápida de Omnibus y sus características. La documentación completa está disponible en la carpeta 'docs' de este repositorio.
Antes de comenzar, cubriremos alguna terminología utilizada por Omnibus.
new o siendo descubiertos mediante la ejecución de módulosIniciar Omnibus para una investigación es tan simple como clonar este repositorio de GitHub, instalar los requisitos de Python usando pip install -r requirements.txt y ejecutar python omnibus-cli.py.
Shell de Omnibus - Inicio Principal

Para una referencia visual de la CLI, en la imagen de arriba se muestra la consola de Omnibus después de que se haya iniciado una nueva sesión, se hayan agregado 2 artefactos a una sesión y se muestre el menú de help.
Debes establecer cualquier clave API que desees usar dentro de los módulos en el archivo omnibus/etc/apikeys.json.
Este archivo es un documento JSON con marcadores de posición para todos los servicios que requieren claves API, y Omnibus solo accede a él por módulo para recuperar la clave API exacta que necesita un módulo para ejecutarse.
Cabe señalar que la mayoría de los servicios que requieren claves API tienen cuentas gratuitas y claves API. Algunas cuentas gratuitas pueden tener límites de recursos más bajos, pero eso no ha sido un problema durante investigaciones diarias más pequeñas o al probar la aplicación.
Un consejo útil: Usa el comando cat apikeys para ver qué claves tienes almacenadas.
Si los módulos fallan o no devuelven resultados, verifica primero aquí para asegurarte de que tu clave API esté guardada correctamente.
Cuando ejecutes la CLI por primera vez, serás recibido por un menú de ayuda con información básica.
Omnibus intenta usar comandos que imiten algunos comandos comunes de Linux para facilitar la familiaridad y el uso. Por ejemplo, el comando cat para mostrar información sobre un artefacto, rm para eliminar un artefacto de la base de datos, ls para ver los artefactos de la sesión actual y soporte de redirección de salida para cualquier comando usando el carácter >.
Como ejemplo de redirección de salida, si deseas recuperar los detalles de un artefacto llamado "inquest.net" guardados en un archivo JSON en tu disco local, simplemente ejecutarías el comando:
cat inquest.net > inquest-report.json ¡y ahí estaría!
Esta función también funciona con rutas de archivo completas en lugar de rutas relativas.
Los comandos de alto nivel más utilizados en Omnibus son:
session
new <nombre del artefacto>
modules
open <ruta del archivo>
ls
rm
wipe
cat <nombre del artefacto | id de sesión>
<nombre del módulo> <nombre del artefacto | id de sesión>
Si alguna vez necesitas una referencia rápida sobre los diferentes comandos disponibles para diferentes áreas de la aplicación, hay menús de ayuda secundarios para este propósito exacto. Usar estos comandos te mostrará solo aquellos comandos disponibles relevantes para un área específica:
general
artifacts
sessions
modules
La mayoría de las investigaciones cibernéticas comienzan con uno o más indicadores técnicos, como una dirección IP, un hash de archivo o una dirección de correo electrónico. Después de buscar y analizar, comienzan a formarse relaciones y puedes pivotar a través de puntos de datos conectados. Estos puntos de datos se llaman Artefactos dentro de Omnibus y representan cualquier elemento que desees investigar.
Los artefactos pueden ser de los siguientes tipos:
El comando "new" seguido de un artefacto creará ese artefacto dentro de tu sesión de Omnibus y almacenará un registro del artefacto en MongoDB. Este registro contiene el nombre del artefacto, tipo, subtipo, resultados del módulo, fuente, notas, etiquetas, información de hijos (según sea necesario) y momento de creación. Cada vez que ejecutas un módulo contra un artefacto creado o almacenado, el documento de la base de datos se actualizará para reflejar la información recién descubierta.
Para crear un nuevo artefacto y agregarlo a MongoDB para su seguimiento, ejecuta el comando new <nombre del artefacto>. Por ejemplo, para comenzar a investigar el dominio inquest.net, ejecutarías new inquest.net.
Omnibus determinará automáticamente qué tipo es el artefacto y se asegurará de que solo se ejecuten módulos de ese tipo contra el artefacto. Si intentas ejecutar un artefacto contra un módulo que no puede soportar el tipo de artefacto, se te notificará con un mensaje de advertencia que lista los tipos aceptados.
Cuando se ejecuta un módulo, se pueden encontrar nuevos artefactos durante el proceso de descubrimiento. Por ejemplo, ejecutar el comando "dnsresolve" podría encontrar nuevas direcciones IPv4 no vistas previamente por Omnibus. Si es así, esos artefactos recién encontrados se crean automáticamente como nuevos artefactos en Omnibus y se vinculan a su padre con un campo adicional llamado "source" para identificar de qué módulo se encontraron originalmente. En este ejemplo, la fuente de los artefactos recién creados sería "dnsresolve".
Los artefactos se pueden eliminar de la base de datos usando el comando "rm". Si ya no necesitas un artefacto, simplemente ejecuta el comando de eliminación y especifica el nombre del artefacto o el ID de sesión si lo tiene.
Omnibus hace uso de una función llamada "sesiones". Las sesiones son cachés temporales creadas a través de Redis cada vez que inicias una sesión de CLI. Cada vez que creas un artefacto, el nombre de ese artefacto se agrega a la Sesión junto con una clave numérica que facilita la recuperación, búsqueda y acción contra el artefacto relacionado.
Por ejemplo, si tu sesión contiene un elemento "inquest.net", en lugar de necesitar ejecutar virustotal inquest.net, también podrías ejecutar virustotal 1 y recibirías los mismos resultados. De hecho, esto funciona contra cualquier módulo o comando que use un nombre de artefacto como su primer argumento.
Interactuando con IDs de Sesión en lugar de nombres de artefactos

Las sesiones están aquí para un fácil acceso a los artefactos y se borrarán cada vez que cierres la sesión de línea de comandos. Si deseas limpiar la sesión anticipadamente, ejecuta el comando "wipe" y obtendrás un estado limpio.
Omnibus actualmente soporta la siguiente lista de módulos. Si tienes sugerencias o módulos, o te gustaría escribir uno propio, por favor crea un pull request.
Además, dentro de la consola de Omnibus, escribir el nombre del módulo te mostrará la información de Ayuda asociada con ese módulo.
Módulos
Las máquinas son una forma sencilla de ejecutar todos los módulos disponibles para un tipo de artefacto contra un artefacto dado. Esta es una forma rápida si deseas recopilar la mayor cantidad de información sobre un objetivo posible usando un solo comando.
Para hacer esto, simplemente ejecuta el comando machine <nombre del artefacto|ID de sesión> y espera unos minutos hasta que los módulos terminen de ejecutarse.
La única advertencia es que esto puede devolver un gran volumen de datos y artefactos hijos dependiendo del tipo de artefacto y los resultados por módulo. Para remediar esto, estamos investigando una forma de eliminar campos específicos de artefactos del documento de base de datos almacenado para facilitar a los usuarios la poda de datos no deseados.
Algunos comandos rápidos para recordar son:
session - iniciar una nueva caché de artefactoscat <nombre del artefacto>|apikeys - mostrar de forma bonita un documento de artefacto o ver tus claves API almacenadasopen <ruta del archivo> - cargar una lista de artefactos de un archivo de texto en Omnibus para investigarnew <nombre del artefacto> - crear un nuevo artefacto y agregarlo a MongoDB y a tu sesiónfind <nombre del artefacto> - verificar si un artefacto existe en la base de datos y mostrar los resultadosLos informes son la salida JSON de un documento de artefacto de la base de datos, esencialmente una versión en archivo de texto de la salida del comando "cat". Pero usando el comando report puedes especificar un artefacto y una ruta de archivo donde deseas guardar la salida:
omnibus >> report inquest.net /home/adam/intel/osint/reports/inq_report.jsonEl comando anterior anula el directorio de informes estándar de omnibus/reports. De forma predeterminada, y si no especificas una ruta de informe, todos los informes se guardarán en esa ubicación. Además, si no especificas un nombre de archivo, el informe usará el siguiente formato:
[nombre_del_artefacto]_[marca_de_tiempo].jsonLa salida de los comandos también se puede guardar en archivos de texto arbitrarios usando el carácter estándar de Linux >.
Por ejemplo, si deseas almacenar la salida de una consulta de VirusTotal para un host en un archivo llamado "vt-lookup.json", simplemente ejecutarías:
virustotal inquest.net > vt-lookup.jsonDe forma predeterminada, los archivos de salida redirigidos se guardan en el directorio de trabajo actual, por lo tanto "omnibus/", pero si especificas una ruta completa como virustotal inquest.net > /home/adam/intel/cases/001/vt-lookup.json, la salida con formato JSON se guardará allí.
<nombre de la máquina> <nombre del artefacto | id de sesión>