Gambar Docker yang menyediakan perangkat OSINT yang disederhanakan untuk mengimpor dan menganalisis konten komunikasi dari file MBOX email, dan data CSV lainnya (seperti pesan teks) menggunakan Elasticsearch dan Kibana. Ini memberikan satu perintah yang meluncurkan tumpukan perangkat lunak analitik OSINT lengkap serta mengimpor semua komunikasi Anda ke dalamnya, siap untuk dianalisis dengan Kibana dan ElasticSearch.
Proyek ini mengelola Dockerfile untuk menghasilkan gambar yang ketika dijalankan akan memulai ElasticSearch dan Kibana dan kemudian secara opsional mengimpor data komunikasi menggunakan alat berikut yang disertakan dalam kontainer:
PENTING tautan di bawah ini adalah FORKS dari proyek asli karena masalah yang belum terselesaikan dengan proyek asli yang tidak diperbaiki pada saat pengembangan proyek ini
Dari sana... yah, Anda dapat menganalisis dan memvisualisasikan hampir semua hal tentang komunikasi Anda. Menikmati.
Sebelum menjalankan contoh di bawah ini, Anda perlu menginstal Docker.
Catatan Windows : Saat Anda git clone
proyek ini di Windows sebelum membangun, pastikan untuk menambahkan flag git clone --config core.autocrlf=input
. Contoh git clone https://github.com/bitsofinfo/comms-analyzer-toolbox.git --config core.autocrlf=input
. baca lebih lanjut di sini
Setelah Docker diinstal, buka shell baris perintah dan ketik yang berikut ini untuk membuat image buruh pelabuhan untuk kotak peralatan:
docker build -t comms-analyzer-toolbox .
Kotak alat Docker untuk catatan Windows
Mesin buruh pelabuhan default
yang dibuat oleh VM kemungkinan besar kekurangan daya untuk menjalankan ini secara langsung. Anda perlu melakukan hal berikut untuk meningkatkan CPU dan memori mesin kotak virtual lokal
Memunculkan "Terminal Mulai Cepat Docker"
Hapus mesin default: docker-machine rm default
Buat ulang: docker-machine create -d virtualbox --virtualbox-cpu-count=[N cpus] --virtualbox-memory=[XXXX megabytes] --virtualbox-disk-size=[XXXXXX] default
Kesalahan pemecahan masalah: "area memori virtual maks vm.max_map_count [65530] terlalu rendah, tingkatkan setidaknya menjadi [262144]"
Jika Anda melihat kesalahan ini saat memulai kotak alat (kesalahan ini dilaporkan dari Elasticsearch), Anda perlu melakukan hal berikut pada host buruh pelabuhan tempat kontainer diluncurkan.
sysctl -w vm.max_map_count=262144
Jika Anda menggunakan Docker Toolbox, Anda harus terlebih dahulu melakukan shell ke VM boot2docker terlebih dahulu dengan docker ssh default
untuk menjalankan perintah ini. Atau lakukan hal berikut untuk menjadikannya permanen: docker/machine#3859
Untuk setiap pesan email di file MBOX Anda, setiap pesan menjadi dokumen terpisah di ElasticSearch di mana semua header email diindeks sebagai bidang individual dan semua konten isi diindeks dan dihilangkan dari html/css/js.
Misalnya, setiap email yang diimpor ke indeks memiliki bidang berikut yang tersedia untuk pencarian dan analisis di Kibana (dan masih banyak lagi)
Setelah Docker tersedia di sistem Anda, sebelum menjalankan comms-analyzer-toolbox
Anda perlu memiliki beberapa email untuk dianalisis dalam format MBOX. Sebagai contoh dibawah ini adalah cara mengekspor email dari Gmail.
Masuk ke akun Gmail Anda dengan browser web di komputer
Kunjungi: https://takeout.google.com/settings/takeout
Pada layar yang bertuliskan "Unduh data Anda" , di bawah bagian "Pilih data untuk disertakan" klik tombol "Pilih Tidak Ada" . Ini akan menghilangkan semua "Produk" yang tercantum di bawahnya
Sekarang gulir ke bawah dan temukan bagian berwarna abu-abu berlabel "Mail" dan klik pada kotak centang X di sisi kanan. Sekarang akan berubah menjadi hijau yang menandakan data ini telah disiapkan untuk Anda unduh.
Gulir ke bawah dan klik tombol biru "Berikutnya".
Biarkan pengaturan "Sesuaikan format arsip" apa adanya dan tekan tombol "Buat Arsip".
Ini sekarang akan membawa Anda ke "Kami sedang mempersiapkan arsip Anda." layar. Ini mungkin memerlukan waktu beberapa jam tergantung pada ukuran semua email yang Anda miliki.
Anda akan menerima email dari Google ketika arsip siap diunduh. Ketika Anda mendapatkannya, unduh file zip ke hard drive komputer lokal Anda, itu akan diberi nama seperti takeout-[YYYMMMDDD..].zip
Setelah disimpan ke hard drive Anda, Anda ingin mengekstrak file tersebut, setelah membuka ritsleting semua email Anda yang diekspor dari Gmail akan tinggal di file ekspor mbox di folder Takeout/Mail/
dan nama file dengan semua email Anda ada di: All mail Including Spam and Trash.mbox
Anda harus mengganti nama file ini menjadi sesuatu yang lebih sederhana seperti my-email.mbox
Catat lokasi file .mbox Anda karena Anda akan menggunakannya di bawah ini saat menjalankan toolbox.
Sebelum menjalankan contoh di bawah ini, Anda perlu menginstal Docker.
Buka terminal atau command prompt di komputer Anda dan jalankan yang berikut ini, sebelum melakukannya, Anda perlu mengganti PATH/TO/YOUR/email.mbox
dan PATH/TO/ELASTICSEARCH_DATA_DIR
di bawah ini dengan jalur yang benar di sistem lokal Anda sebagaimana mestinya.
Catatan: jika menggunakan Docker Toolbox untuk Windows : Semua volume yang dipasang di bawah ini harus berada di suatu tempat di bawah direktori home Anda di bawah c:Users[your username]...
karena masalah izin.
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
Pengaturan --init=True
akan menghapus dan membuat ulang indeks comm_data
. Pengaturan --init=False
akan mempertahankan data apa pun yang sudah ada
Konsol akan mencatat keluaran dari apa yang sedang terjadi, ketika sistem di-boot, Anda dapat membuka browser web di desktop Anda dan membuka http://localhost:5601 untuk mulai menggunakan Kibana untuk menganalisis data Anda. Catatan: jika menjalankan docker toolbox; 'localhost' mungkin tidak berfungsi, jalankan docker-machine env default
untuk menentukan alamat IP host docker Anda, lalu buka http://[machine-ip]:5601"
Pada layar pertama yang bertuliskan Configure an index pattern
, pada kolom berlabel Index name or pattern
, ketik comm_data
, lalu Anda akan melihat kolom date_ts
dipilih secara otomatis, lalu tekan tombol Create
. Dari sana Kibana siap digunakan!
Peluncuran melakukan beberapa hal dengan urutan berikut
Ketika importir mbox berjalan, Anda akan melihat entri berikut di log saat sistem melakukan tugasnya mengimpor email Anda dari file 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
...
Saat menjalankan gambar comms-analyzer-toolbox
, salah satu argumennya adalah memanggil skrip elasticsearch-gmail yang menggunakan argumen berikut. Anda dapat menyesuaikan perintah docker run
di atas untuk meneruskan flag berikut sesuka Anda:
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)
Saat mengimpor data email MBOX, di output log Anda mungkin melihat peringatan/kesalahan seperti berikut.
Itu sudah diharapkan dan oke, itu hanya peringatan tentang beberapa karakter khusus yang tidak dapat diterjemahkan, dll.
...
/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.
...
Alat impor CSV csv2es
yang tertanam di kotak alat dapat mengimpor file CSV APAPUN, bukan hanya contoh format di bawah ini.
Untuk setiap baris data dalam file CSV, setiap baris menjadi dokumen terpisah di ElasticSearch di mana semua kolom CSV diindeks sebagai bidang individual
Misalnya, setiap baris dalam file data CSV di bawah (pesan teks dari iPhone) yang diimpor ke indeks memiliki bidang berikut yang tersedia untuk pencarian dan analisis di 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 ekspor pesan teks di atas hanyalah sebuah contoh. Alat csv2es
yang dibundel dengan toolbox dapat mengimpor kumpulan data APAPUN yang Anda inginkan, bukan hanya format contoh di atas.
Setelah Docker tersedia di sistem Anda, sebelum menjalankan comms-analyzer-toolbox
Anda perlu memiliki beberapa data untuk dianalisis dalam format CSV. Sebagai contoh, di bawah ini adalah cara mengekspor pesan teks dari iPhone ke file CSV.
Ekspor pesan iphone menggunakan iExplorer untuk mac atau windows
Edit file CSV yang dihasilkan dan ubah nilai header baris pertama "Time"
menjadi "date_ts"
, simpan dan keluar.
Catat lokasi file .csv Anda karena Anda akan menggunakannya di bawah ini saat menjalankan toolbox.
Sebelum menjalankan contoh di bawah ini, Anda perlu menginstal Docker.
Contoh di bawah ini khusus untuk file data CSV yang berisi data pesan teks yang diekspor menggunakan IExplorer
Isi 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"
....
Isi 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"}
}
}
Buka terminal atau command prompt di komputer Anda dan jalankan perintah berikut, sebelum melakukannya, Anda perlu mengganti PATH/TO/YOUR/data.csv
, PATH/TO/YOUR/csvdata.mapping.json
dan PATH/TO/ELASTICSEARCH_DATA_DIR
di bawah ini dengan jalur yang tepat di sistem lokal Anda sebagaimana mestinya.
Catatan: jika menggunakan Docker Toolbox untuk Windows : Semua volume yang dipasang di bawah ini harus berada di suatu tempat di bawah direktori home Anda di bawah c:Users[your username]...
karena masalah izin.
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
Jika dijalankan dengan indeks comm_data
yang sudah ada, pastikan untuk menyertakan tanda --existing-index
saja. Jika Anda ingin membuat ulang indeks comm_data
sebelum mengimpor, sertakan tanda --delete-index
saja.
Konsol akan mencatat keluaran dari apa yang sedang terjadi, ketika sistem di-boot, Anda dapat membuka browser web di desktop Anda dan membuka http://localhost:5601 untuk mulai menggunakan Kibana untuk menganalisis data Anda. Catatan: jika menjalankan docker toolbox; 'localhost' mungkin tidak berfungsi, jalankan docker-machine env default
untuk menentukan alamat IP host docker Anda, lalu buka http://[machine-ip]:5601"
Pada layar pertama yang bertuliskan Configure an index pattern
, pada kolom berlabel Index name or pattern
, ketik comm_data
, lalu Anda akan melihat kolom date_ts
dipilih secara otomatis, lalu tekan tombol Create
. Dari sana Kibana siap digunakan!
Peluncuran melakukan beberapa hal dengan urutan berikut
Ketika importir mbox berjalan, Anda akan melihat entri berikut di log saat sistem melakukan tugasnya mengimpor email Anda dari file mbox
Saat menjalankan gambar comms-analyzer-toolbox
, salah satu argumennya adalah memanggil skrip csv2es yang menggunakan argumen berikut. Anda dapat menyesuaikan perintah docker run
di atas untuk meneruskan flag berikut sesuka Anda:
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.
Menjalankan mode ini hanya akan meluncurkan elasticsearch dan kibana dan tidak akan mengimpor apa pun. Itu hanya menampilkan kotak peralatan sehingga Anda dapat menganalisis data yang diimpor sebelumnya yang berada di elasticsearch.
Catatan: jika menggunakan Docker Toolbox untuk Windows : Semua volume yang dipasang di bawah ini harus berada di suatu tempat di bawah direktori home Anda di bawah c:Users[your username]...
karena masalah izin.
docker run --rm -ti -p 5601:5601
-v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
comms-analyzer-toolbox:latest
analyze-only
Ingin mengontrol opsi tumpukan memori ElasticSearch JVM default, Anda dapat melakukannya melalui variabel lingkungan buruh pelabuhan yaitu -e ES_JAVA_OPTS="-Xmx1g -Xms1g"
dll.
Untuk hotmail/outlook, Anda perlu mengekspor ke PST, dan kemudian sebagai langkah kedua mengkonversi ke MBOX
Penggunaan alat ini sepenuhnya bersifat lokal pada mesin apa pun tempat Anda menjalankan alat ini (yaitu host Docker Anda). Jika dijalankan di laptop atau komputer desktop Anda, ini 100% lokal.
Data tidak diunggah atau ditransfer ke mana pun.
Data tidak pergi ke mana pun selain ke disk lokal ke host Docker yang menjalankannya.
Untuk menghapus sepenuhnya data yang dianalisis, Anda dapat docker rm -f [container-id]
dari container comms-analyzer-toolbox
yang berjalan di mesin Anda.
Jika Anda memasang direktori data elasticsearch melalui volume pada host (yaitu -v PATH/TO/ELASTICSEARCH_DATA_DIR:/toolbox/elasticsearch/data
) direktori lokal tersebut adalah tempat semua data yang diindeks berada secara lokal di disk.