
Der OSINT Omnibus (Beta-Version)
Ein Omnibus ist definiert als ein Band, das mehrere Romane oder andere zuvor separat veröffentlichte Werke enthält, und genau das soll das InQuest Omnibus-Projekt für Open Source Intelligence-Sammlung, -Recherche und Artefaktverwaltung sein.
Durch die Bereitstellung einer benutzerfreundlichen interaktiven Befehlszeilenanwendung können Benutzer Sitzungen erstellen, um verschiedene Artefakte wie IP-Adressen, Domainnamen, E-Mail-Adressen, Benutzernamen, Datei-Hashes, Bitcoin-Adressen und mehr zu untersuchen – und wir erweitern das Angebot stetig.
Dieses Projekt wurde von den Großen inspiriert, die vor uns kamen, wie SpiderFoot, Harpoon und DataSploit. Vielen Dank an diese großartigen Autoren für ihren Beitrag zur Welt der Open-Source-Software.
Die Anwendung ist für Python 2.7 geschrieben und wurde erfolgreich auf OSX- und Ubuntu 16.04-Umgebungen getestet.
Dies ist eine Beta der endgültigen Anwendung, daher kann es zu Fehlern oder anderen Unregelmäßigkeiten während der Nutzung kommen. Größtenteils ist Omnibus voll funktionsfähig und kann sofort für OSINT-Untersuchungen verwendet werden.
Omnibus ist modular aufgebaut, sodass einfach neue OSINT-Datenquellenmodule sowie Import-/Exportmodule hinzugefügt werden können. Jedes Modul pro Kategorie befindet sich in einem eigenen Verzeichnis, und mit nur wenigen Codezeilen könnte Ihr Modul das nächste sein!
Während das Wiki weiter wächst, werden wir vollständige Beispiele zum Schreiben eigener Plugins bereitstellen.
Sollten Sie Fehler oder andere Probleme bemerken, erstellen Sie bitte ein Issue und/oder einen Pull-Request. Wir freuen uns auch über Community-Unterstützung bei der Erstellung weiterer Module und der Erweiterung der Omnibus-Anwendungsfälle. Forks und Pull Requests für neue Funktionen sind mehr als willkommen!
Diese README-Datei dient als kurzer Überblick über Omnibus und seine Funktionen. Die vollständige Dokumentation finden Sie im Ordner 'docs' dieses Repositorys.
Bevor wir beginnen, müssen wir einige von Omnibus verwendete Begriffe erklären.
new oder durch Entdeckung während der ModulausführungUm Omnibus für Untersuchungen zu starten, genügt es, dieses GitHub-Repository zu klonen, die Python-Anforderungen mit pip install -r requirements.txt zu installieren und python omnibus-cli.py auszuführen.
Omnibus Shell - Hauptstart

Zur visuellen Referenz der CLI: oben abgebildet ist die Omnibus-Konsole, nachdem eine neue Sitzung gestartet wurde, 2 Artefakte zur Sitzung hinzugefügt wurden und das help-Menü angezeigt wird.
Sie müssen alle API-Schlüssel, die Sie in Modulen verwenden möchten, in der Datei omnibus/etc/apikeys.json setzen.
Diese Datei ist ein JSON-Dokument mit Platzhaltern für alle Dienste, die API-Schlüssel benötigen, und wird von Omnibus nur modulweise abgerufen, um den genauen API-Schlüssel zu erhalten, den ein Modul zur Ausführung benötigt.
Es sei darauf hingewiesen, dass die meisten Dienste, die API-Schlüssel erfordern, kostenlose Konten und API-Schlüssel anbieten. Einige kostenlose Konten haben möglicherweise niedrigere Ressourcengrenzen, aber das war bei kleineren täglichen Untersuchungen oder beim Testen der Anwendung bisher kein Problem.
Ein praktischer Tipp: Verwenden Sie den Befehl cat apikeys, um zu sehen, welche Schlüssel Sie tatsächlich gespeichert haben.
Wenn Module fehlschlagen oder keine Ergebnisse liefern, überprüfen Sie zuerst hier, ob Ihr API-Schlüssel korrekt gespeichert ist.
Wenn Sie die CLI zum ersten Mal starten, werden Sie von einem Hilfemenü mit grundlegenden Informationen begrüßt.
Omnibus versucht, Befehle zu verwenden, die einige gängige Linux-Befehle nachahmen, um Vertrautheit und Benutzerfreundlichkeit zu gewährleisten. Zum Beispiel der Befehl cat, um Informationen über ein Artefakt anzuzeigen, rm, um ein Artefakt aus der Datenbank zu entfernen, ls zur Anzeige aktueller Sitzungsartefakte, und Unterstützung für die Umleitung der Ausgabe für jeden Befehl mit dem Zeichen >.
Als Beispiel für die Ausgabeumleitung: Wenn Sie die Details eines Artefakts namens "inquest.net" abrufen und in einer JSON-Datei auf Ihrer lokalen Festplatte speichern möchten, führen Sie einfach den Befehl aus:
cat inquest.net > inquest-report.json – und schon ist es erledigt!
Diese Funktion funktioniert auch mit vollständigen Dateipfaden anstelle von relativen Pfaden.
Die am häufigsten verwendeten Befehle auf hoher Ebene in Omnibus sind:
session
new <Artefaktname>
modules
open <Dateipfad>
ls
rm
wipe
cat <Artefaktname | Sitzungs-ID>
<Modulname> <Artefaktname | Sitzungs-ID>
Wenn Sie jemals eine kurze Referenz zu den verschiedenen Befehlen benötigen, die für verschiedene Bereiche der Anwendung verfügbar sind, gibt es dafür Unterhilfemenüs. Mit diesen Befehlen werden nur die für einen bestimmten Bereich relevanten Befehle angezeigt:
general
artifacts
sessions
modules
Die meisten Cyber-Ermittlungen beginnen mit einem oder mehreren technischen Indikatoren, wie einer IP-Adresse, einem Datei-Hash oder einer E-Mail-Adresse. Nach der Suche und Analyse beginnen sich Beziehungen herauszubilden, und Sie können durch verbundene Datenpunkte navigieren. Diese Datenpunkte werden in Omnibus als Artefakte bezeichnet und repräsentieren jedes Element, das Sie untersuchen möchten.
Artefakte können von einem der folgenden Typen sein:
Der Befehl "new" gefolgt von einem Artefakt erstellt dieses Artefakt in Ihrer Omnibus-Sitzung und speichert einen Datensatz des Artefakts in MongoDB. Dieser Datensatz enthält den Artefaktnamen, den Typ, den Subtyp, Modulergebnisse, die Quelle, Notizen, Tags, untergeordnete Informationen (falls erforderlich) und den Zeitpunkt der Erstellung. Jedes Mal, wenn Sie ein Modul gegen ein erstelltes oder gespeichertes Artefakt ausführen, wird das Datenbankdokument aktualisiert, um die neu entdeckten Informationen widerzuspiegeln.
Um ein neues Artefakt zu erstellen und es zur Nachverfolgung zu MongoDB hinzuzufügen, führen Sie den Befehl new <Artefaktname> aus. Um beispielsweise mit der Untersuchung der Domain inquest.net zu beginnen, würden Sie new inquest.net ausführen.
Omnibus bestimmt automatisch, welchen Typ das Artefakt hat, und stellt sicher, dass nur Module für diesen Typ gegen das Artefakt ausgeführt werden. Wenn Sie versuchen, ein Artefakt gegen ein Modul auszuführen, das diesen Artefakttyp nicht unterstützt, werden Sie durch eine Warnmeldung informiert, die die akzeptierten Typen auflistet.
Wenn ein Modul ausgeführt wird, können während des Erkennungsprozesses neue Artefakte gefunden werden. Wenn zum Beispiel der Befehl "dnsresolve" neue IPv4-Adressen findet, die Omnibus zuvor nicht bekannt waren, werden diese neu gefundenen Artefakte automatisch als neue Artefakte in Omnibus erstellt und mit ihrem übergeordneten Element über ein zusätzliches Feld namens "source" verknüpft, das angibt, aus welchem Modul sie ursprünglich stammen. In diesem Beispiel wäre die Quelle der neu erstellten Artefakte "dnsresolve".
Artefakte können mit dem Befehl "rm" aus der Datenbank entfernt werden. Wenn Sie ein Artefakt nicht mehr benötigen, führen Sie einfach den Löschbefehl aus und geben Sie den Namen des Artefakts oder die Sitzungs-ID an, falls vorhanden.
Omnibus nutzt eine Funktion namens "Sessions". Sessions sind temporäre Caches, die jedes Mal über Redis erstellt werden, wenn Sie eine CLI-Sitzung starten. Jedes Mal, wenn Sie ein Artefakt erstellen, wird der Name dieses Artefakts zur Sitzung hinzugefügt, zusammen mit einem numerischen Schlüssel, der das einfache Abrufen, Suchen und Aktionen gegen das zugehörige Artefakt ermöglicht.
Wenn Ihre Sitzung beispielsweise ein Element mit dem Namen "inquest.net" enthält, müssten Sie nicht virustotal inquest.net ausführen, sondern könnten auch virustotal 1 ausführen und würden die gleichen Ergebnisse erhalten. Tatsächlich funktioniert dies für jedes Modul oder jeden Befehl, der einen Artefaktnamen als erstes Argument verwendet.
Interaktion mit Sitzungs-IDs anstelle von Artefaktnamen

Sessions dienen dem einfachen Zugriff auf Artefakte und werden jedes Mal gelöscht, wenn Sie die Befehlszeilensitzung beenden. Wenn Sie die Sitzung vorzeitig löschen möchten, führen Sie den Befehl "wipe" aus, und Sie erhalten eine saubere Arbeitsfläche.
Omnibus unterstützt derzeit die folgende Liste von Modulen. Wenn Sie Vorschläge für Module haben oder selbst eines schreiben möchten, erstellen Sie bitte einen Pull-Request.
Innerhalb der Omnibus-Konsole zeigt die Eingabe des Modulnamens die Hilfsinformationen an, die mit diesem Modul verbunden sind.
Module
Maschinen (Machines) sind eine einfache Möglichkeit, alle verfügbaren Module für einen Artefakttyp gegen ein bestimmtes Artefakt auszuführen. Dies ist eine schnelle Methode, wenn Sie so viele Informationen wie möglich über ein Ziel mit einem einzigen Befehl sammeln möchten.
Führen Sie dazu einfach den Befehl machine <Artefaktname|Sitzungs-ID> aus und warten Sie einige Minuten, bis die Module fertig ausgeführt sind.
Der einzige Nachteil ist, dass dies je nach Artefakttyp und den Ergebnissen pro Modul eine große Datenmenge und untergeordnete Artefakte zurückgeben kann. Um dies zu beheben, untersuchen wir eine Möglichkeit, bestimmte Artefaktfelder aus dem gespeicherten Datenbankdokument zu entfernen, um es Benutzern zu erleichtern, unerwünschte Daten zu bereinigen.
Einige schnelle Befehle, die Sie sich merken sollten:
session – startet einen neuen Artefakt-Cachecat <Artefaktname>|apikeys – zeigt ein Artefaktdokument formatiert an oder zeigt Ihre gespeicherten API-Schlüsselopen <Dateipfad> – lädt eine Textdatei mit einer Liste von Artefakten in Omnibus zur Untersuchungnew <Artefaktname> – erstellt ein neues Artefakt und fügt es MongoDB und Ihrer Sitzung hinzufind <Artefaktname> – prüft, ob ein Artefakt in der Datenbank existiert, und zeigt die Ergebnisse anBerichte sind die JSON-Ausgabe eines Artefakt-Datenbankdokuments, im Wesentlichen eine Textdateiversion der Ausgabe des "cat"-Befehls. Aber mit dem Befehl report können Sie ein Artefakt und einen Dateipfad angeben, unter dem Sie die Ausgabe speichern möchten:
omnibus >> report inquest.net /home/adam/intel/osint/reports/inq_report.jsonDieser obige Befehl überschreibt das Standardberichtsverzeichnis omnibus/reports. Standardmäßig, und wenn Sie keinen Berichtspfad angeben, werden alle Berichte an diesem Ort gespeichert. Wenn Sie auch keinen Dateinamen angeben, verwendet der Bericht das folgende Format:
[Artefaktname]_[Zeitstempel].jsonDie Ausgabe von Befehlen kann auch mit dem standardmäßigen Linux-Zeichen > in beliebige Textdateien gespeichert werden.
Wenn Sie beispielsweise die Ausgabe einer VirusTotal-Abfrage für einen Host in einer Datei namens "vt-lookup.json" speichern möchten, führen Sie einfach Folgendes aus:
virustotal inquest.net > vt-lookup.jsonStandardmäßig werden die umgeleiteten Ausgabedateien im aktuellen Arbeitsverzeichnis gespeichert, also "omnibus/". Wenn Sie jedoch einen vollständigen Pfad angeben, wie z.B. virustotal inquest.net > /home/adam/intel/cases/001/vt-lookup.json, wird die JSON-formatierte Ausgabe dort gespeichert.
<Maschinenname> <Artefaktname | Sitzungs-ID>