
Eine modulare Python-Anwendung, um Informationen über schädliche Dateien abzurufen
Dieses Tool sammelt verschiedene Informationsquellen für eine bestimmte Datei. Fileintel ist modular aufgebaut, sodass neue Informationsquellen einfach hinzugefügt werden können.
Dateien werden durch ihren Hash identifiziert (MD5, SHA1, SHA256). Die Ausgabe erfolgt im CSV-Format und wird an STDOUT gesendet, sodass die Daten gespeichert oder an ein anderes Programm weitergeleitet werden können. Da die Ausgabe im CSV-Format erfolgt, können Tabellenkalkulationen wie Excel oder Datenbanksysteme die Daten problemlos importieren.
Dies funktioniert mit Python v2, sollte aber auch mit Python v3 funktionieren. Falls Sie feststellen, dass es mit Python v3 nicht funktioniert, melden Sie bitte ein Issue.
Dieser Code wurde unter Windows 7 und Mac OSX El Capitan getestet. Wenn Sie dies auf einem anderen Maschinentyp ausprobieren, lassen Sie es mich bitte wissen!
Ein Einführungsvideo für fileintel: https://youtu.be/MgJoy2fD0ZY
Hintergrundinformationen zu meinem ersten Tool 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.
Stellen Sie zunächst sicher, dass Ihre Konfigurationsdatei für Ihren Computer/Ihre Installation korrekt ist. Fügen Sie Ihre API-Schlüssel und Benutzernamen entsprechend in die Konfigurationsdatei ein. Python und Pip sind erforderlich, um dieses Tool auszuführen. Es müssen Module von GitHub installiert werden, stellen Sie daher sicher, dass der git-Befehl von Ihrer Befehlszeile aus verfügbar ist. Git ist auf jeder Plattform einfach zu installieren. Installieren Sie als Nächstes die Python-Anforderungen (führen Sie dies auch jedes Mal aus, wenn Sie dieses Repository mit git pull aktualisieren):
$ pip install -r requirements.txt
Es gab einige Probleme mit der Standardversion von Python unter Mac OSX (http://stackoverflow.com/questions/31649390/python-requests-ssl-handshake-failure). Möglicherweise müssen Sie den Sicherheitsteil der requests-Bibliothek mit dem folgenden Befehl installieren:
$ pip install requests[security]
Wenn Sie die NSRL-Datenbankabfragen verwenden, laden Sie den NSRL-Datensatz 'Minimal' als Zip-Datei herunter. Legen Sie ihn in einem zugänglichen Verzeichnis ab und verweisen Sie in Ihrer Konfigurationsdatei auf diese Zip-Datei. Es ist nicht erforderlich, die NSRL-Daten zu entpacken.
Wenn Sie 7Zip (schnell) anstelle der internen Python-Zip-Bibliothek (langsam) verwenden möchten, um die große NSRL-Zip-Datei zu lesen, müssen Sie 7Zip installieren. Die Windows-Installation von 7Zip ist recht einfach, aber unter Mac OS X oder Linux muss p7zip, das Befehlszeilentool, installiert werden. Für Mac OS X können Sie dieses Tool mit Brew installieren. Nach der Installation von 7Zip müssen Sie in Ihrer Konfigurationsdatei auf den Speicherort der 7z-Ausführungsdatei verweisen.
Zuletzt bin ich ein Fan von virtualenv für Python. Für eine angepasste lokale Python-Installation, um dieses Tool auszuführen, empfehle ich Ihnen folgende Lektüre: http://docs.python-guide.org/en/latest/dev/virtualenvs/
$ python fileintel.py myconfigfile.conf myhashes.txt -a > myoutput.csv
Sie sollten myoutput.csv in jedes Datenbank- oder Tabellenkalkulationsprogramm importieren können.
Beachten Sie, dass dieses Skript je nach Netzwerk, API-Schlüssellimits und den gesuchten Daten sehr lange laufen kann! Verwenden Sie jedes Modul sparsam! Als Gegenleistung für die lange Wartezeit ersparen Sie es sich, diese Daten manuell abrufen zu müssen.
Es gibt einige Beispieldaten im Verzeichnis "sampledata". Die Hashes wurden zufällig ausgewählt und sollen keinesfalls eine Organisation oder Einzelperson angreifen. Die Ausführung dieses Tools auf den Beispieldaten funktioniert wie folgt:
$ 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 ***
Diese Anwendung steht unter der Creative Commons BY-SA-Lizenz.
Lesen Sie Contributing.md