Docker-Image, das ein vereinfachtes OSINT-Toolset für den Import und die Analyse von Kommunikationsinhalten aus E-Mail-MBOX-Dateien und anderen CSV-Daten (z. B. Textnachrichten) mithilfe von Elasticsearch und Kibana bereitstellt. Dies stellt einen einzigen Befehl bereit, der einen vollständigen OSINT-Analysesoftware-Stack startet und Ihre gesamte Kommunikation darin importiert, bereit für die Analyse mit Kibana und ElasticSearch.
Dieses Projekt verwaltet eine Docker-Datei, um ein Image zu erstellen, das bei der Ausführung sowohl ElasticSearch als auch Kibana startet und dann optional Kommunikationsdaten mithilfe der folgenden im Container gebündelten Tools importiert:
WICHTIG: Bei den folgenden Links handelt es sich um Abzweigungen der ursprünglichen Projekte, da noch offene Probleme mit den ursprünglichen Projekten bestehen, die zum Zeitpunkt der Entwicklung dieses Projekts noch nicht behoben wurden
Von dort aus können Sie praktisch alles über Ihre Kommunikation analysieren und visualisieren. Genießen.
Bevor Sie das folgende Beispiel ausführen können, muss Docker installiert sein.
Windows-Hinweis : Wenn Sie dieses Projekt vor dem Erstellen unter Windows git clone
, stellen Sie sicher, dass Sie das Git-Clone-Flag --config core.autocrlf=input
hinzufügen. Beispiel für git clone https://github.com/bitsofinfo/comms-analyzer-toolbox.git --config core.autocrlf=input
. Lesen Sie hier mehr
Sobald Docker installiert ist, rufen Sie eine Befehlszeilen-Shell auf und geben Sie Folgendes ein, um das Docker-Image für die Toolbox zu erstellen:
docker build -t comms-analyzer-toolbox .
Docker-Toolbox für Windows-Notizen
Die default
erstellte Docker-Maschinen-VM ist wahrscheinlich nicht ausreichend leistungsfähig, um dies sofort auszuführen. Sie müssen Folgendes tun, um die CPU und den Speicher der lokalen Virtual-Box-Maschine zu erhöhen
Rufen Sie ein „Docker Quickstart Terminal“ auf.
Entfernen Sie die Standardmaschine: docker-machine rm default
Erstellen Sie es neu: docker-machine create -d virtualbox --virtualbox-cpu-count=[N cpus] --virtualbox-memory=[XXXX megabytes] --virtualbox-disk-size=[XXXXXX] default
Fehlerbehebung: „Maximale virtuelle Speicherbereiche vm.max_map_count [65530] ist zu niedrig, erhöhen Sie sie auf mindestens [262144]“
Wenn dieser Fehler beim Starten der Toolbox angezeigt wird (der Fehler wird von Elasticsearch gemeldet), müssen Sie auf dem Docker-Host, auf dem der Container gestartet wird, Folgendes tun.
sysctl -w vm.max_map_count=262144
Wenn Sie Docker Toolbox verwenden, müssen Sie zunächst eine Shell-Verbindung zur boot2docker-VM mit docker ssh default
herstellen, um diesen Befehl auszuführen. Oder gehen Sie wie folgt vor, um es dauerhaft zu machen: docker/machine#3859
Für jede E-Mail-Nachricht in Ihrer MBOX-Datei wird jede Nachricht zu einem separaten Dokument in ElasticSearch, in dem alle E-Mail-Header als einzelne Felder indiziert und der gesamte Textinhalt indiziert und von HTML/CSS/JS befreit wird.
Beispielsweise stehen für jede in den Index importierte E-Mail die folgenden Felder für die Suche und Analyse in Kibana zur Verfügung (und viele, viele mehr).
Sobald Docker auf Ihrem System verfügbar ist, benötigen Sie vor der Ausführung comms-analyzer-toolbox
einige E-Mails zur Analyse im MBOX-Format. Als Beispiel sehen Sie unten, wie Sie E-Mails aus Gmail exportieren.
Melden Sie sich mit einem Webbrowser auf einem Computer bei Ihrem Gmail-Konto an
Gehen Sie zu: https://takeout.google.com/settings/takeout
Klicken Sie auf dem Bildschirm mit der Aufschrift „Laden Sie Ihre Daten herunter“ im Abschnitt „Zu berücksichtigende Daten auswählen“ auf die Schaltfläche „Keine auswählen“ . Dadurch werden alle darunter aufgeführten „Produkte“ ausgegraut
Scrollen Sie nun nach unten, suchen Sie den ausgegrauten Abschnitt mit der Bezeichnung „Mail“ und klicken Sie auf das X- Kontrollkästchen auf der rechten Seite. Die Farbe wird nun grün, was bedeutet, dass diese Daten für den Download vorbereitet werden.
Scrollen Sie nach unten und klicken Sie auf die blaue Schaltfläche „Weiter“.
Lassen Sie die Einstellungen für „Archivformat anpassen“ unverändert und klicken Sie auf die Schaltfläche „Archiv erstellen“.
Sie gelangen nun zu der Meldung „Wir bereiten Ihr Archiv vor“. Bildschirm. Dies kann je nach Größe Ihrer E-Mails einige Stunden dauern.
Sie erhalten eine E-Mail von Google, wenn das Archiv zum Download bereitsteht. Wenn Sie es erhalten, laden Sie die ZIP-Datei auf die Festplatte Ihres lokalen Computers herunter. Sie wird etwa takeout-[YYYMMMDDD..].zip
heißen
Sobald Sie die Datei auf Ihrer Festplatte gespeichert haben, möchten Sie sie entpacken. Nach dem Entpacken werden alle Ihre aus Gmail exportierten E-Mails in einer Mbox- Exportdatei im Ordner Takeout/Mail/
gespeichert und der Dateiname aller Ihrer E-Mails lautet All mail Including Spam and Trash.mbox
. All mail Including Spam and Trash.mbox
Sie sollten diese Datei in einen einfacheren Namen wie my-email.mbox
umbenennen
Notieren Sie sich den Speicherort Ihrer .mbox -Datei, da Sie ihn unten beim Ausführen der Toolbox verwenden werden.
Bevor Sie das folgende Beispiel ausführen können, muss Docker installiert sein.
Rufen Sie ein Terminal oder eine Eingabeaufforderung auf Ihrem Computer auf und führen Sie Folgendes aus. Bevor Sie dies tun, müssen Sie PATH/TO/YOUR/email.mbox
und PATH/TO/ELASTICSEARCH_DATA_DIR
unten durch die entsprechenden Pfade auf Ihrem lokalen System ersetzen.
Hinweis: Bei Verwendung von Docker Toolbox für Windows : Alle unten gemounteten Volumes sollten sich aufgrund von Berechtigungsproblemen irgendwo in Ihrem Home-Verzeichnis unter c:Users[your username]...
befinden.
docker run --rm -ti
--ulimit nofile=65536:65536
-v PATH/TO/YOUR/my-email.mbox:/toolbox/email.mbox
-v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
comms-analyzer-toolbox:latest
python /toolbox/elasticsearch-gmail/src/index_emails.py
--infile=/toolbox/email.mbox
--init=[True | False]
--index-bodies=True
--index-bodies-ignore-content-types=application,image
--index-bodies-html-parser=html5lib
--index-name=comm_data
Durch die Einstellung --init=True
wird der Index comm_data
gelöscht und neu erstellt. Durch die Einstellung --init=False
werden alle bereits vorhandenen Daten beibehalten
Die Konsole protokolliert die Ausgabe aller Vorgänge. Wenn das System hochgefahren ist, können Sie einen Webbrowser auf Ihrem Desktop aufrufen und zu http://localhost:5601 gehen, um Kibana zur Analyse Ihrer Daten zu verwenden. Hinweis: Wenn Sie die Docker-Toolbox ausführen; „localhost“ funktioniert möglicherweise nicht. Führen Sie einen docker-machine env default
aus, um die IP-Adresse Ihres Docker-Hosts zu ermitteln, und gehen Sie dann zu http://[machine-ip]:5601.
Auf dem ersten Bildschirm mit der Aufschrift „ Configure an index pattern
geben Sie in das Feld Index name or pattern
comm_data
ein. Anschließend wird das Feld date_ts
automatisch ausgewählt. Klicken Sie dann auf die Schaltfläche Create
. Von da an ist Kibana einsatzbereit!
Beim Starten werden mehrere Dinge in der folgenden Reihenfolge ausgeführt
Wenn dann der Mbox-Importer ausgeführt wird, werden in den Protokollen die folgenden Einträge angezeigt, während das System seine Arbeit verrichtet und Ihre E-Mails aus den Mbox-Dateien importiert
...
[I 170825 18:46:53 index_emails:96] Upload: OK - upload took: 467ms, total messages uploaded: 1000
[I 170825 18:48:23 index_emails:96] Upload: OK - upload took: 287ms, total messages uploaded: 2000
...
Beim Ausführen des comms-analyzer-toolbox
Images besteht eines der Argumente darin, das Elasticsearch-Gmail-Skript aufzurufen, das die folgenden Argumente akzeptiert. Sie können den docker run
-Ausführungsbefehl oben anpassen, um die folgenden Flags nach Belieben zu übergeben:
Usage: /toolbox/elasticsearch-gmail/src/index_emails.py [OPTIONS]
Options:
--help show this help information
/toolbox/elasticsearch-gmail/src/index_emails.py options:
--batch-size Elasticsearch bulk index batch size (default
500)
--es-url URL of your Elasticsearch node (default
http://localhost:9200)
--index-bodies Will index all body content, stripped of
HTML/CSS/JS etc. Adds fields: 'body',
'body_size' and 'body_filenames' for any
multi-part attachments (default False)
--index-bodies-html-parser The BeautifulSoup parser to use for
HTML/CSS/JS stripping. Valid values
'html.parser', 'lxml', 'html5lib' (default
html.parser)
--index-bodies-ignore-content-types
If --index-bodies enabled, optional list of
body 'Content-Type' header keywords to match
to ignore and skip decoding/indexing. For
all ignored parts, the content type will be
added to the indexed field
'body_ignored_content_types' (default
application,image)
--index-name Name of the index to store your messages
(default gmail)
--infile The mbox input file
--init Force deleting and re-initializing the
Elasticsearch index (default False)
--num-of-shards Number of shards for ES index (default 2)
--skip Number of messages to skip from the mbox
file (default 0)
Beim Importieren von MBOX-E-Mail-Daten werden in der Protokollausgabe möglicherweise Warnungen/Fehler wie die folgenden angezeigt.
Sie werden erwartet und sind in Ordnung, es handelt sich lediglich um Warnungen vor einigen Sonderzeichen, die nicht dekodiert werden können usw.
...
/usr/lib/python2.7/site-packages/bs4/__init__.py:282: UserWarning: "https://someurl.com/whatever" looks like a URL. Beautiful Soup is not an HTTP client. You should probably use an HTTP client like requests to get the document behind the URL, and feed that document to Beautiful Soup.
' that document to Beautiful Soup.' % decoded_markup
[W 170825 18:41:56 dammit:381] Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER.
[W 170825 18:41:56 dammit:381] Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER.
...
Das in der Toolbox eingebettete CSV-Importtool csv2es
kann JEDE CSV-Datei importieren, nicht nur dieses Beispielformat unten.
Für jede Datenzeile in einer CSV-Datei wird jede Zeile zu einem separaten Dokument in ElasticSearch, in dem alle CSV-Spalten als einzelne Felder indiziert werden
Beispielsweise verfügt jede Zeile in der folgenden CSV-Datendatei (Textnachrichten von einem iPhone), die in den Index importiert wird, über die folgenden Felder, die für die Suche und Analyse in Kibana verfügbar sind
"Name","Address","date_ts","Message","Attachment","iMessage"
"Me","+1 555-555-5555","7/17/2016 9:21:39 AM","How are you doing?","","True"
"Joe Smith","+1 555-444-4444","7/17/2016 9:38:56 AM","Pretty good you?","","True"
"Me","+1 555-555-5555","7/17/2016 9:39:02 AM","Great!","","True"
....
Der obige CSV-Export von Textnachrichten ist nur ein Beispiel. Das mit der Toolbox gebündelte Tool csv2es
kann JEDEN gewünschten Datensatz importieren, nicht nur das oben genannte Beispielformat.
Sobald Docker auf Ihrem System verfügbar ist, müssen Sie vor der Ausführung comms-analyzer-toolbox
einige Daten zur Analyse im CSV-Format haben. Im Folgenden erfahren Sie als Beispiel, wie Sie Textnachrichten von einem iPhone in eine CSV-Datei exportieren.
Exportieren Sie iPhone-Nachrichten mit iExplorer für Mac oder Windows
Bearbeiten Sie die generierte CSV-Datei und ändern Sie den Header-Wert der ersten Zeile von "Time"
in "date_ts"
, speichern Sie und beenden Sie den Vorgang.
Notieren Sie sich den Speicherort Ihrer CSV- Datei, da Sie ihn unten beim Ausführen der Toolbox verwenden werden.
Bevor Sie das folgende Beispiel ausführen können, muss Docker installiert sein.
Das folgende Beispiel bezieht sich speziell auf eine CSV-Datendatei mit Textnachrichtendaten, die mit IExplorer exportiert wurden
Inhalt von data.csv
"Name","Address","date_ts","Message","Attachment","iMessage"
"Me","+1 555-555-5555","7/17/2016 9:21:39 AM","How are you doing?","","True"
"Joe Smith","+1 555-444-4444","7/17/2016 9:38:56 AM","Pretty good you?","","True"
"Me","+1 555-555-5555","7/17/2016 9:39:02 AM","Great!","","True"
....
Inhalt von csvdata.mapping.json
{
"dynamic": "true",
"properties": {
"date_ts": {"type": "date" },
"name": {"type": "string", "index" : "not_analyzed"},
"address": {"type": "string", "index" : "not_analyzed"},
"imessage": {"type": "string", "index" : "not_analyzed"}
}
}
Rufen Sie ein Terminal oder eine Eingabeaufforderung auf Ihrem Computer auf und führen Sie Folgendes aus. Bevor Sie dies tun, müssen Sie PATH/TO/YOUR/data.csv
, PATH/TO/YOUR/csvdata.mapping.json
und PATH/TO/ELASTICSEARCH_DATA_DIR
ersetzen unten mit den entsprechenden Pfaden auf Ihrem lokalen System.
Hinweis: Bei Verwendung von Docker Toolbox für Windows : Alle unten gemounteten Volumes sollten sich aufgrund von Berechtigungsproblemen irgendwo in Ihrem Home-Verzeichnis unter c:Users[your username]...
befinden.
docker run --rm -ti -p 5601:5601
-v PATH/TO/YOUR/data.csv:/toolbox/data.csv
-v PATH/TO/YOUR/csvdata.mapping.json:/toolbox/csvdata.mapping.json
-v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
comms-analyzer-toolbox:latest
python /toolbox/csv2es/csv2es.py
[--existing-index ]
[--delete-index ]
--index-name comm_data
--doc-type txtmsg
--mapping-file /toolbox/csvdata.mapping.json
--import-file /toolbox/data.csv
--delimiter ','
--csv-clean-fieldnames
--csv-date-field date_ts
--csv-date-field-gmt-offset -1
Wenn Sie mit einem bereits vorhandenen comm_data
-Index arbeiten, stellen Sie sicher, dass Sie nur das Flag --existing-index
einschließen. Wenn Sie den comm_data
-Index vor dem Import neu erstellen möchten, schließen Sie nur das Flag --delete-index
ein.
Die Konsole protokolliert die Ausgabe aller Vorgänge. Wenn das System hochgefahren ist, können Sie einen Webbrowser auf Ihrem Desktop aufrufen und zu http://localhost:5601 gehen, um Kibana zur Analyse Ihrer Daten zu verwenden. Hinweis: Wenn Sie die Docker-Toolbox ausführen; „localhost“ funktioniert möglicherweise nicht. Führen Sie einen docker-machine env default
aus, um die IP-Adresse Ihres Docker-Hosts zu ermitteln, und gehen Sie dann zu http://[machine-ip]:5601.
Auf dem ersten Bildschirm mit der Meldung „ Configure an index pattern
geben Sie in das Feld Index name or pattern
comm_data
ein. Anschließend wird das Feld date_ts
automatisch ausgewählt. Klicken Sie dann auf die Schaltfläche Create
. Von da an ist Kibana einsatzbereit!
Beim Starten werden mehrere Dinge in der folgenden Reihenfolge ausgeführt
Wenn dann der Mbox-Importer ausgeführt wird, werden in den Protokollen die folgenden Einträge angezeigt, während das System seine Arbeit verrichtet und Ihre E-Mails aus den Mbox-Dateien importiert
Beim Ausführen des comms-analyzer-toolbox
Images besteht eines der Argumente darin, das csv2es-Skript aufzurufen, das die folgenden Argumente akzeptiert. Sie können den docker run
-Ausführungsbefehl oben anpassen, um die folgenden Flags nach Belieben zu übergeben:
Usage: /toolbox/csv2es/csv2es.py [OPTIONS]
Bulk import a delimited file into a target Elasticsearch instance. Common
delimited files include things like CSV and TSV.
Load a CSV file:
csv2es --index-name potatoes --doc-type potato --import-file potatoes.csv
For a TSV file, note the tab delimiter option
csv2es --index-name tomatoes --doc-type tomato --import-file tomatoes.tsv --tab
For a nifty pipe-delimited file (delimiters must be one character):
csv2es --index-name pipes --doc-type pipe --import-file pipes.psv --delimiter '|'
Options:
--index-name TEXT Index name to load data into
[required]
--doc-type TEXT The document type (like user_records)
[required]
--import-file TEXT File to import (or '-' for stdin)
[required]
--mapping-file TEXT JSON mapping file for index
--delimiter TEXT The field delimiter to use, defaults to CSV
--tab Assume tab-separated, overrides delimiter
--host TEXT The Elasticsearch host
(http://127.0.0.1:9200/)
--docs-per-chunk INTEGER The documents per chunk to upload (5000)
--bytes-per-chunk INTEGER The bytes per chunk to upload (100000)
--parallel INTEGER Parallel uploads to send at once, defaults
to 1
--delete-index Delete existing index if it exists
--existing-index Don't create index.
--quiet Minimize console output
--csv-clean-fieldnames Strips double quotes and lower-cases all CSV
header names for proper ElasticSearch
fieldnames
--csv-date-field TEXT The CSV header name that represents a date
string to parsed (via python-dateutil) into
an ElasticSearch epoch_millis
--csv-date-field-gmt-offset INTEGER
The GMT offset for the csv-date-field (i.e.
+/- N hours)
--tags TEXT Custom static key1=val1,key2=val2 pairs to
tag all entries with
--version Show the version and exit.
--help Show this message and exit.
Bei der Ausführung in diesem Modus werden lediglich Elasticsearch und Kibana gestartet und nichts importiert. Es öffnet sich lediglich die Toolbox, sodass Sie zuvor importierte Daten analysieren können, die sich in Elasticsearch befinden.
Hinweis: Bei Verwendung von Docker Toolbox für Windows : Alle unten gemounteten Volumes sollten sich aufgrund von Berechtigungsproblemen irgendwo in Ihrem Home-Verzeichnis unter c:Users[your username]...
befinden.
docker run --rm -ti -p 5601:5601
-v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
comms-analyzer-toolbox:latest
analyze-only
Wenn Sie die standardmäßigen JVM-Speicherheap-Optionen von ElasticSearch steuern möchten, können Sie dies über eine Docker-Umgebungsvariable tun, z. B. -e ES_JAVA_OPTS="-Xmx1g -Xms1g"
usw.
Für Hotmail/Outlook müssen Sie in PST exportieren und dann im zweiten Schritt in MBOX konvertieren
Die Verwendung dieses Tools erfolgt vollständig lokal auf dem Computer, auf dem Sie dieses Tool ausführen (z. B. Ihrem Docker-Host). Wenn Sie es auf Ihrem Laptop oder Desktop-Computer ausführen, ist es zu 100 % lokal.
Es werden keine Daten hochgeladen oder irgendwohin übertragen.
Die Daten werden nirgendwo anders als lokal auf der Festplatte des Docker-Hosts gespeichert, auf dem sie ausgeführt werden.
Um die analysierten Daten vollständig zu entfernen, können Sie rm -f [container-id] des auf Ihrem Computer ausgeführten comms-analyzer-toolbox
Containers docker rm -f [container-id]
.
Wenn Sie das Elasticsearch-Datenverzeichnis über ein Volume auf dem Host gemountet haben (z. B. -v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
), befinden sich in diesem lokalen Verzeichnis alle indizierten Daten lokal auf der Festplatte.