
L'OSINT Omnibus (version bêta)
Un Omnibus est défini comme un volume contenant plusieurs romans ou autres articles publiés séparément auparavant, et c'est exactement ce que le projet InQuest Omnibus entend être pour la collecte, la recherche et la gestion d'artefacts en matière de renseignement open source (OSINT).
En fournissant une application en ligne de commande interactive facile à utiliser, les utilisateurs sont en mesure de créer des sessions pour enquêter sur divers artefacts tels que les adresses IP, les noms de domaine, les adresses e‑mail, les noms d'utilisateur, les empreintes de fichiers, les adresses Bitcoin, et bien d'autres encore, à mesure que nous continuons à nous développer.
Ce projet s'est inspiré des grands prédécesseurs comme SpiderFoot, Harpoon et DataSploit. Un grand merci à ces auteurs remarquables pour leur contribution au monde de l'open source.
L'application est écrite pour Python 2.7 et a été testée avec succès sous OSX et Ubuntu 16.04.
Il s'agit d'une version bêta de l'application finale, il peut donc y avoir quelques bugs ou autres bizarreries lors de l'utilisation. Mais dans l'ensemble, Omnibus est entièrement fonctionnel et peut être utilisé pour commencer une investigation OSINT dès maintenant.
Omnibus est construit de manière modulaire, ce qui permet d'ajouter facilement des modules de sources de données OSINT et des modules d'import/export. Chaque module par catégorie est inclus dans un répertoire unique, et en ajoutant quelques lignes de code, votre module pourrait être le prochain !
Au fur et à mesure que le Wiki s'enrichit, nous fournirons des exemples complets de création de plugins personnalisés.
Si vous remarquez des bugs ou d'autres problèmes, veuillez créer un Issue et/ou une Pull Request. Nous serions également ravis d'obtenir le soutien de la communauté pour créer davantage de modules et étendre les cas d'utilisation d'Omnibus. Les forks et les Pull Requests pour de nouvelles fonctionnalités sont les bienvenus !
Ce fichier README sert d'aperçu rapide d'Omnibus et de ses fonctionnalités. La documentation complète est disponible dans le dossier 'docs' de ce dépôt.
Avant de commencer, nous devons couvrir quelques termes utilisés par Omnibus.
new ou en étant découverts via l'exécution d'un moduleDémarrer Omnibus pour une investigation est aussi simple que de cloner ce dépôt GitHub, installer les dépendances Python avec pip install -r requirements.txt et exécuter python omnibus-cli.py.
Omnibus Shell - Démarrage principal

Pour une référence visuelle du CLI, l'image ci-dessus montre la console Omnibus après le démarrage d'une nouvelle session, l'ajout de 2 artefacts à une session, et l'affichage du menu help.
Vous devez définir les clés API que vous souhaitez utiliser dans les modules dans le fichier omnibus/etc/apikeys.json.
Ce fichier est un document JSON avec des placeholders pour tous les services qui nécessitent des clés API, et il n'est accédé par Omnibus que par module pour récupérer la clé API exacte dont un module a besoin pour s'exécuter.
Il convient de noter que la plupart des services nécessitant des clés API proposent des comptes gratuits et des clés API. Certains comptes gratuits peuvent avoir des limites de ressources inférieures, mais cela n'a pas posé de problème lors de petites investigations quotidiennes ou de tests de l'application.
Astuce pratique : Utilisez la commande cat apikeys pour voir quelles clés vous avez effectivement stockées.
Si des modules échouent ou ne retournent aucun résultat, vérifiez d'abord ici pour vous assurer que votre clé API est correctement sauvegardée.
Lorsque vous lancez le CLI pour la première fois, un menu d'aide avec quelques informations de base vous accueille.
Omnibus essaie d'utiliser des commandes qui imitent certaines commandes Linux courantes pour plus de familiarité et de facilité d'utilisation. Par exemple, la commande cat pour afficher les informations d'un artefact, rm pour supprimer un artefact de la base de données, ls pour visualiser les artefacts de la session en cours, et la redirection de sortie pour toute commande utilisant le caractère >.
Pour illustrer la redirection de sortie, si vous souhaitez récupérer les détails d'un artefact nommé "inquest.net" et les enregistrer dans un fichier JSON sur votre disque local, il vous suffit d'exécuter la commande :
cat inquest.net > inquest-report.json et le tour est joué !
Cette fonction fonctionne également avec des chemins de fichiers complets au lieu de chemins relatifs.
Les commandes de haut niveau les plus utilisées dans Omnibus sont :
session
new <nom de l'artefact>
modules
open <chemin du fichier>
ls
rm
wipe
cat <nom de l'artefact | id de session>
<nom du module> <nom de l'artefact | id de session>
Si vous avez besoin d'une référence rapide sur les différentes commandes disponibles dans différents domaines de l'application, des sous-menus d'aide existent à cet effet. L'utilisation de ces commandes affichera uniquement les commandes pertinentes pour un domaine spécifique :
general
artifacts
sessions
modules
La plupart des enquêtes cybernétiques commencent par un ou plusieurs indicateurs techniques, comme une adresse IP, une empreinte de fichier ou une adresse e-mail. Après recherche et analyse, des relations commencent à se former et vous pouvez naviguer à travers des points de données connectés. Ces points de données sont appelés Artefacts dans Omnibus et représentent tout élément que vous souhaitez enquêter.
Les artefacts peuvent être de l'un des types suivants :
La commande "new" suivie d'un artefact créera cet artefact dans votre session Omnibus et enregistrera un enregistrement de l'artefact dans MongoDB. Cet enregistrement contient le nom de l'artefact, le type, le sous-type, les résultats du module, la source, les notes, les tags, les informations sur les enfants (si nécessaire) et la date de création. Chaque fois que vous exécutez un module sur un artefact créé ou stocké, le document de la base de données est mis à jour pour refléter les informations nouvellement découvertes.
Pour créer un nouvel artefact et l'ajouter à MongoDB pour suivi, exécutez la commande new <nom de l'artefact>. Par exemple, pour commencer l'investigation du domaine inquest.net, vous exécuteriez new inquest.net.
Omnibus détermine automatiquement le type de l'artefact et s'assure que seuls les modules de ce type sont exécutés sur l'artefact. Si vous tentez d'exécuter un artefact sur un module qui ne prend pas en charge le type de l'artefact, vous serez averti par un message qui liste les types acceptés.
Lorsqu'un module est créé, de nouveaux artefacts peuvent être découverts au cours du processus de découverte. Par exemple, l'exécution de la commande "dnsresolve" peut trouver de nouvelles adresses IPv4 non encore vues par Omnibus. Dans ce cas, ces artefacts nouvellement découverts sont automatiquement créés en tant que nouveaux artefacts dans Omnibus et liés à leur parent avec un champ supplémentaire appelé "source" pour identifier le module d'origine. Dans cet exemple, la source des artefacts nouvellement créés serait "dnsresolve".
Les artefacts peuvent être supprimés de la base de données à l'aide de la commande "rm". Si vous n'avez plus besoin d'un artefact, exécutez simplement la commande de suppression en spécifiant le nom de l'artefact ou son ID de session s'il en a un.
Omnibus utilise une fonctionnalité appelée "sessions". Les sessions sont des caches temporaires créés via Redis à chaque démarrage d'une session CLI. Chaque fois que vous créez un artefact, son nom est ajouté à la session avec une clé numérique qui facilite la récupération, la recherche et l'action sur l'artefact associé.
Par exemple, si votre session contient un seul élément "inquest.net", au lieu d'avoir besoin d'exécuter virustotal inquest.net, vous pouvez également exécuter virustotal 1 et obtenir les mêmes résultats. En fait, cela fonctionne pour tout module ou commande qui utilise un nom d'artefact comme premier argument.
Interaction avec les IDs de session au lieu des noms d'artefacts

Les sessions sont conçues pour un accès facile aux artefacts et seront effacées à chaque fois que vous quittez la session en ligne de commande. Si vous souhaitez effacer la session prématurément, exécutez la commande "wipe" et vous repartez de zéro.
Omnibus prend actuellement en charge la liste de modules suivante. Si vous avez des suggestions de modules ou si vous souhaitez en écrire un vous-même, veuillez créer une pull request.
De plus, dans la console Omnibus, taper le nom du module affichera les informations d'aide associées à ce module.
Modules
Les machines sont un moyen simple d'exécuter tous les modules disponibles pour un type d'artefact sur un artefact donné. C'est un moyen rapide si vous souhaitez recueillir autant d'informations que possible sur une cible en une seule commande.
Pour ce faire, exécutez simplement la commande machine <nom de l'artefact|ID de session> et attendez quelques minutes que les modules aient fini de s'exécuter.
La seule mise en garde est que cela peut retourner un grand volume de données et d'artefacts enfants selon le type d'artefact et les résultats par module. Pour y remédier, nous étudions un moyen de supprimer certains champs d'artefact du document stocké dans la base de données afin de permettre aux utilisateurs d'élaguer les données indésirables.
Quelques commandes rapides à retenir :
session - démarrer un nouveau cache d'artefactscat <nom de l'artefact>|apikeys - afficher joliment un document d'artefact ou visualiser vos clés API stockéesopen <chemin du fichier> - charger une liste d'artefacts depuis un fichier texte dans Omnibus pour investigationnew <nom de l'artefact> - créer un nouvel artefact et l'ajouter à MongoDB et à votre sessionfind <nom de l'artefact> - vérifier si un artefact existe dans la base de données et afficher les résultatsLes rapports sont la sortie JSON d'un document d'artefact dans la base de données, essentiellement une version texte de la sortie de la commande "cat". Mais en utilisant la commande report, vous pouvez spécifier un artefact et un chemin de fichier où enregistrer la sortie :
omnibus >> report inquest.net /home/adam/intel/osint/reports/inq_report.jsonCette commande remplace le répertoire de rapport standard omnibus/reports. Par défaut, et si vous ne spécifiez pas de chemin de rapport, tous les rapports seront sauvegardés à cet emplacement. De plus, si vous ne spécifiez pas de nom de fichier, le rapport utilisera le format suivant :
[nom_de_l_artefact]_[horodatage].jsonLa sortie des commandes peut également être sauvegardée dans des fichiers texte arbitraires en utilisant le caractère standard Linux >.
Par exemple, si vous souhaitez stocker la sortie d'une recherche VirusTotal pour un hôte dans un fichier nommé "vt-lookup.json", il vous suffit d'exécuter :
virustotal inquest.net > vt-lookup.jsonPar défaut, les fichiers de sortie redirigés sont sauvegardés dans le répertoire de travail courant, donc "omnibus/", mais si vous spécifiez un chemin complet comme virustotal inquest.net > /home/adam/intel/cases/001/vt-lookup.json, la sortie au format JSON y sera sauvegardée.
<nom de la machine> <nom de l'artefact | id de session>