Docker 映像提供了簡化的 OSINT 工具集,用於使用 Elasticsearch 和 Kibana 匯入和分析電子郵件 MBOX 檔案以及其他 CSV 資料(例如文字訊息)中的通訊內容。這提供了一個命令,可以啟動完整的 OSINT 分析軟體堆疊,並將所有通訊導入其中,準備使用 Kibana 和 ElasticSearch 進行分析。
該專案管理 Dockerfile 以產生映像,該映像在運行時啟動 ElasticSearch 和 Kibana,然後可以選擇使用容器中捆綁的以下工具導入通訊資料:
重要的是,由於原始專案在該專案開發時尚未解決的突出問題,以下連結是原始專案的分支
從那裡......好吧,您幾乎可以分析和視覺化有關您的通訊的任何內容。享受。
在運行下面的範例之前,您需要安裝 Docker。
Windows 注意:當您在建置之前在 Windows 上git clone
這個專案時,請務必新增 git clone 標誌--config core.autocrlf=input
。範例git clone https://github.com/bitsofinfo/comms-analyzer-toolbox.git --config core.autocrlf=input
。在這裡閱讀更多內容
安裝 Docker 後,將啟動命令列 shell 並輸入以下內容來為工具箱建立 docker 映像:
docker build -t comms-analyzer-toolbox .
適用於 Windows 的 Docker 工具箱筆記
建立的default
docker 機器虛擬機器可能不足以開箱即用。您需要執行以下操作來增加本機虛擬機器的 CPU 和記憶體
開啟“Docker 快速啟動終端”
刪除預設機器: docker-machine rm default
重新建立它: docker-machine create -d virtualbox --virtualbox-cpu-count=[N cpus] --virtualbox-memory=[XXXX megabytes] --virtualbox-disk-size=[XXXXXX] default
故障排除錯誤:“最大虛擬記憶體區域 vm.max_map_count [65530] 太低,至少增加到 [262144]”
如果您在啟動工具箱時看到此錯誤(該錯誤是從 Elasticsearch 報告的),您將需要在正在啟動容器的 docker 主機上執行下列操作。
sysctl -w vm.max_map_count=262144
如果您使用 Docker Toolbox,則必須先使用docker ssh default
下 shell 進入 boot2docker VM 才能執行此命令。或執行以下操作使其永久化:docker/machine#3859
對於 MBOX 文件中的每封電子郵件,每個訊息都會成為 ElasticSearch 中的單獨文檔,其中所有電子郵件標頭都作為單獨欄位進行索引,所有正文內容都進行索引並刪除 html/css/js。
例如,導入索引的每封電子郵件都有以下欄位可用於在 Kibana 中搜尋和分析(還有更多)
一旦 Docker 在您的系統上可用,在運行comms-analyzer-toolbox
之前,您需要一些 MBOX 格式的電子郵件進行分析。作為範例,以下是如何從 Gmail 匯出電子郵件。
使用電腦上的網頁瀏覽器登入您的 Gmail 帳戶
前往:https://takeout.google.com/settings/takeout
在顯示「下載您的資料」的畫面上,在「選擇要包含的資料」部分下,按一下「不選擇」按鈕。這將使下面列出的所有“產品”變灰
現在向下捲動並找到標有「郵件」的灰色部分,然後點擊右側的X複選框。現在它會變成綠色,表示該資料已準備好供您下載。
向下捲動並點擊藍色的“下一步”按鈕
保留「自訂存檔格式」設定不變,然後按一下「建立存檔」按鈕
現在,您將進入「我們正在準備您的檔案」。螢幕.這可能需要幾個小時,具體取決於您擁有的所有電子郵件的大小。
當存檔可供下載時,您將收到來自 Google 的電子郵件。取得後,將 zip 檔案下載到本機的硬碟上,其名稱將類似於takeout-[YYYMMMDDD..].zip
儲存到硬碟後,您需要解壓縮該文件,解壓縮後,從 Gmail 匯出的所有郵件都將保存在Takeout/Mail/
資料夾中的mbox匯出文件中,並且包含所有郵件的文件名稱位於: All mail Including Spam and Trash.mbox
您應該將此檔案重新命名為更簡單的名稱,例如my-email.mbox
記下.mbox檔案的位置,因為您將在下面運行工具箱時使用它。
在運行下面的範例之前,您需要安裝 Docker。
在電腦上開啟終端或命令提示字元並執行以下命令,在此之前,您需要將下方的PATH/TO/YOUR/email.mbox
和PATH/TO/ELASTICSEARCH_DATA_DIR
替換為本機系統上的正確路徑。
注意:如果使用適用於 Windows 的 Docker Toolbox :由於權限問題,下面所有已安裝的磁碟區都應位於c:Users[your username]...
下的主目錄下的某個位置。
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
設定--init=True
將刪除並重新建立comm_data
索引。設定--init=False
將保留已存在的任何數據
控制台將記錄正在發生的情況的輸出,當系統啟動時,您可以在桌面上開啟 Web 瀏覽器並前往http://localhost:5601開始使用 Kibana 分析資料。注意:如果運行 docker toolbox; ‘localhost’可能不起作用,執行docker-machine env default
以確定您的 docker 主機 IP 位址,然後前往 http://[machine-ip]:5601”
在顯示Configure an index pattern
的第一個畫面上,在標記為Index name or pattern
欄位中鍵入comm_data
然後您將看到自動選擇的date_ts
字段,然後按一下Create
按鈕。從那裡 Kibana 就可以使用了!
啟動按以下順序執行幾件事
當 mbox 匯入程式執行時,您將在日誌中看到以下條目,因為系統正在從 mbox 檔案匯入您的郵件
...
[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
...
執行comms-analyzer-toolbox
映像時,參數之一是呼叫採用下列參數的 elasticsearch-gmail 腳本。您可以根據需要調整上面的docker run
命令以傳遞以下標誌:
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)
匯入 MBOX 電子郵件資料時,在日誌輸出中您可能會看到以下警告/錯誤。
它們是預期的並且沒問題,它們只是關於某些無法解碼的特殊字元的警告等。
...
/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.
...
工具箱中嵌入的 CSV 匯入工具csv2es
可以匯入任何 CSV 文件,而不僅僅是下面的範例格式。
對於 CSV 文件中的每一行數據,每一行都成為 ElasticSearch 中的單獨文檔,其中所有 CSV 列都作為單獨的欄位進行索引
例如,導入到索引的下面的 CSV 資料檔案(來自 iphone 的簡訊)中的每一行都有以下欄位可用於在 Kibana 中搜尋和分析
"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"
....
上述簡訊導出CSV只是一個範例。與工具箱捆綁在一起的csv2es
工具可以匯入您想要的任何資料集,而不僅僅是上面的範例格式。
一旦 Docker 在您的系統上可用,在運行comms-analyzer-toolbox
之前,您需要一些 CSV 格式的資料進行分析。作為範例,以下介紹如何將 iPhone 上的簡訊匯出到 CSV 檔案。
使用適用於 Mac 或 Windows 的 iExplorer 匯出 iPhone 訊息
編輯產生的CSV文件,將第一行的標題值"Time"
更改為"date_ts"
,儲存並退出。
記下.csv檔案的位置,因為您將在下面運行工具箱時使用它。
在運行下面的範例之前,您需要安裝 Docker。
下面的範例專門針對包含使用 IExplorer 匯出的文字訊息資料的 CSV 資料文件
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"
....
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"}
}
}
在電腦上開啟終端或命令提示字元並執行以下命令,在此之前,您需要替換PATH/TO/YOUR/data.csv
、 PATH/TO/YOUR/csvdata.mapping.json
和PATH/TO/ELASTICSEARCH_DATA_DIR
下面根據需要新增本機系統上的正確路徑。
注意:如果使用適用於 Windows 的 Docker Toolbox :由於權限問題,下面所有已安裝的磁碟區都應位於c:Users[your username]...
下的主目錄下的某個位置。
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
如果針對預先存在的comm_data
索引運行,請確保僅包含--existing-index
標誌。如果您想在匯入之前重新建立comm_data
索引,請僅包含--delete-index
標誌。
控制台將記錄正在發生的情況的輸出,當系統啟動時,您可以在桌面上開啟 Web 瀏覽器並前往http://localhost:5601開始使用 Kibana 分析資料。注意:如果運行 docker toolbox; ‘localhost’可能不起作用,執行docker-machine env default
以確定您的 docker 主機 IP 位址,然後前往 http://[machine-ip]:5601”
在顯示Configure an index pattern
的第一個畫面上,在標記為Index name or pattern
欄位中鍵入comm_data
然後您將看到自動選擇的date_ts
字段,然後按一下Create
按鈕。從那裡 Kibana 就可以使用了!
啟動按以下順序執行幾件事
當 mbox 匯入程式執行時,您將在日誌中看到以下條目,因為系統正在從 mbox 檔案匯入您的郵件
執行comms-analyzer-toolbox
映像時,參數之一是呼叫採用下列參數的 csv2es 腳本。您可以根據需要調整上面的docker run
命令以傳遞以下標誌:
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.
在此模式下執行只會啟動 elasticsearch 和 kibana,不會匯入任何內容。它只是打開工具箱,以便您可以分析先前匯入的位於 elasticsearch 中的資料。
注意:如果使用適用於 Windows 的 Docker Toolbox :由於權限問題,下面所有已安裝的磁碟區都應位於c:Users[your username]...
下的主目錄下的某個位置。
docker run --rm -ti -p 5601:5601
-v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
comms-analyzer-toolbox:latest
analyze-only
想要控制預設的 ElasticSearch JVM 記憶體堆選項,您可以透過 docker 環境變數來實現,即-e ES_JAVA_OPTS="-Xmx1g -Xms1g"
等。
對於hotmail/outlook,您需要匯出到PST,然後作為第二步轉換為MBOX
使用此工具對於您執行此工具的任何機器(即您的 Docker 主機)來說完全是本機的。如果在筆記型電腦或桌上型電腦上執行它,則它是 100% 本地的。
資料不會上傳或傳輸到任何地方。
除了運行該資料的 Docker 主機本機磁碟上之外,資料不會傳輸到任何其他地方。
要完全刪除分析的數據,您可以對電腦上執行的comms-analyzer-toolbox
容器執行docker rm -f [container-id]
。
如果您透過主機上的磁碟區安裝了elasticsearch資料目錄(即-v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
),則本機目錄是所有索引資料本機駐留在磁碟上的位置。