
モジュール式のPythonアプリケーションで、悪意のあるファイルに関するインテリジェンスを取得します。
このツールは、指定されたファイルに関する様々なインテリジェンスソースを収集するために使用されます。 Fileintel はモジュール方式で記述されているため、新しいインテリジェンスソースを簡単に追加できます。
ファイルはファイルハッシュ(MD5、SHA1、SHA256)で識別されます。出力はCSV形式でSTDOUTに送られるため、データを保存したり他のプログラムにパイプしたりできます。CSV形式なので、Excelなどのスプレッドシートやデータベースシステムで簡単にインポートできます。
このツールはPython v2で動作しますが、Python v3でも動作するはずです。Python v3で動作しない場合は、Issueを投稿してください。
このコードはWindows 7およびMac OSX El Capitanでテストされています。他の種類のマシンで試した場合は、ぜひお知らせください!
fileintelの紹介動画: https://youtu.be/MgJoy2fD0ZY
最初のツール hostintel の背景: https://github.com/keithjjones/hostintel
$ python fileintel.py -h
usage: fileintel.py [-h] [-a] [-v] [-n] [-o] [-t] [-r]
ConfigurationFile InputFile
Modular application to look up file intelligence information. Outputs CSV to
STDOUT.
positional arguments:
ConfigurationFile Configuration file
InputFile Input file, one hash per line (MD5, SHA1, SHA256)
optional arguments:
-h, --help show this help message and exit
-a, --all Perform All Lookups.
-v, --virustotal VirusTotal Lookup.
-n, --nsrl NSRL Lookup for SHA-1 and MD5 hashes ONLY!
-o, --otx OTX by AlienVault Lookup.
-t, --threatcrowd ThreatCrowd Lookup for SHA-1 and MD5 hashes ONLY!
-r, --carriagereturn Use carriage returns with new lines on csv.
まず、設定ファイルがお使いのコンピュータ/インストール環境に正しいことを確認してください。設定ファイルにAPIキーとユーザー名を適宜追加してください。このツールを実行するにはPythonとPipが必要です。GitHubからインストールする必要のあるモジュールがあるので、gitコマンドがコマンドラインから利用可能であることを確認してください。Gitはどのプラットフォームでも簡単にインストールできます。次に、Pythonの要件をインストールします(このリポジトリをgit pullするたびに、こちらも実行してください):
$ pip install -r requirements.txt
Mac OSXの標準バージョンのPythonにはいくつかの問題がありました (http://stackoverflow.com/questions/31649390/python-requests-ssl-handshake-failure)。 次のコマンドでrequestsライブラリのセキュリティ部分をインストールする必要があるかもしれません:
$ pip install requests[security]
NSRLデータベースのルックアップを使用する場合は、NSRLの "Minimal" データセットをzipファイルとしてダウンロードしてください。アクセス可能なディレクトリに配置し、設定ファイルでそのzipファイルを指定してください。NSRLデータを解凍する必要はありません。
大きなNSRL zipファイルを読み取るために、内部のPython zipライブラリ(遅い)ではなく7Zip(高速)を使用したい場合は、7Zipをインストールする必要があります。Windowsへの7Zipのインストールは非常に簡単ですが、Mac OS XまたはLinuxではコマンドラインツールであるp7zipをインストールする必要があります。Mac OS Xでは、Brewを使ってこのツールをインストールできます。7Zipをインストールしたら、7z実行ファイルの場所に合わせて設定ファイルを指定する必要があります。
最後に、私はPythonのvirtualenvのファンです。このツールを実行するためのカスタマイズされたPythonのローカルインストールを作成するには、以下をお読みになることをお勧めします:
http://docs.python-guide.org/en/latest/dev/virtualenvs/
$ python fileintel.py myconfigfile.conf myhashes.txt -a > myoutput.csv
myoutput.csv を任意のデータベースやスプレッドシートプログラムにインポートできるはずです。
ネットワーク環境、APIキーの制限、検索対象のデータによっては、このスクリプトが非常に長い時間実行される可能性があることに注意してください!各モジュールは控えめに使用してください!長い待ち時間と引き換えに、このデータを手動で取得する手間を省けます。
"sampledata" ディレクトリにいくつかのサンプルデータがあります。ハッシュはランダムに選択されたものであり、いかなる組織や個人を標的にするものではありません。サンプルデータに対してこのツールを実行すると、次のように動作します:
$ python fileintel.py local/config.conf sampledata/smallerlist.txt -a > sampledata/smallerlist.csv
INFO: Using 7Zip from: /usr/local/bin/7z
Preprocessing NSRL database.... please hold...
*** Processing 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f ***
*** Processing 001025c6d4974fb2ccbea56f710282aca6c1353cc7120d5d4a7853688084953a ***
*** Processing 001025c6d4974fb2ccbea56f710282aca6c1353cc7120d5d4a7853688084953b ***
*** Processing 92945627f32dfde376ffb7091b5faad2 ***
*** Processing 92945627f32dfde376ffb7091b5faad1 ***
*** Processing CEEF161D68AE2B690FA9616361271578 ***
*** Processing D41D8CD98F00B204E9800998ECF8427E ***
*** Processing B284A42B124849E71DBEF653D30229F1 ***
*** Processing 0322A0BA58B95DB9A2227F12D193FDDEA74CFF89 ***
*** Processing E02CE6D73156A11BA84A798B26DE1D12 ***
*** Processing B4ED7AEDACD28CBBDE6978FB09C22C75 ***
*** Processing C6336EA255EFA7371337C0882D175BEE44CBBD49 ***
$ python fileintel.py local/config.conf sampledata/largerlist.txt -a > sampledata/largerlist.csv
INFO: Using 7Zip from: /usr/local/bin/7z
Preprocessing NSRL database.... please hold...
*** Processing 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f ***
*** Processing 001025c6d4974fb2ccbea56f710282aca6c1353cc7120d5d4a7853688084953a ***
*** Processing CEEF161D68AE2B690FA9616361271578 ***
*** Processing D41D8CD98F00B204E9800998ECF8427E ***
*** Processing B284A42B124849E71DBEF653D30229F1 ***
*** Processing 0322A0BA58B95DB9A2227F12D193FDDEA74CFF89 ***
*** Processing E02CE6D73156A11BA84A798B26DE1D12 ***
*** Processing B4ED7AEDACD28CBBDE6978FB09C22C75 ***
*** Processing C6336EA255EFA7371337C0882D175BEE44CBBD49 ***
...
*** Processing 09a64957060121a765185392fe2ec742 ***
*** Processing e0ab52a76073bff4a27bdf327230103d ***
*** Processing 02a5bd561c140236a3380785a3544b71 ***
*** Processing 152c3bb23cc9cb0b0112051b94f69d47 ***
*** Processing 2c9a5e7ce87259ec89e182416ac3a4f8 ***
*** Processing c777b094a3469610d81c139c952e380e ***
*** Processing aa58d9126ed96fa61f53e4f6c0bcd6b4 ***
*** Processing a68e53c42e2d0968e2fbcd168323725f ***
*** Processing a1651db6630f90b11576389aa714ad41 ***
このアプリケーションはCreative Commons BY-SAライセンスの下で提供されています。
Contributing.md を参照してください。