
Модульное 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
Были некоторые проблемы со стандартной версией Python на Mac OSX (http://stackoverflow.com/questions/31649390/python-requests-ssl-handshake-failure). Возможно, вам придется установить часть библиотеки requests, связанную с безопасностью, с помощью следующей команды:
$ pip install requests[security]
Если вы используете запросы к базе данных NSRL, загрузите набор данных NSRL "Minimal" в виде zip-файла. Поместите его в каталог, к которому у вас есть доступ, и укажите путь к этому zip-файлу в конфигурационном файле. Распаковывать данные NSRL не нужно.
Если вы хотите использовать 7Zip (быстро) вместо внутренней библиотеки Python zip (медленно) для чтения большого zip-файла NSRL, вам потребуется установить 7Zip. Установка 7Zip в Windows довольно проста, но Mac OS X или Linux потребуют установки p7zip, инструмента командной строки. Для Mac OS X вы можете установить этот инструмент с помощью Brew. После установки 7Zip вам нужно будет указать в конфигурационном файле путь к исполняемому файлу 7z.
Наконец, я поклонник virtualenv для Python. Чтобы создать настраиваемую локальную
установку Python для запуска этого инструмента, рекомендую прочитать:
http://docs.python-guide.org/en/latest/dev/virtualenvs/
$ python fileintel.py myconfigfile.conf myhashes.txt -a > myoutput.csv
Вы сможете импортировать myoutput.csv в любую базу данных или программу для работы с электронными таблицами.
Обратите внимание, что в зависимости от вашей сети, ограничений вашего API-ключа и данных, которые вы ищете, этот скрипт может выполняться очень долго! Используйте каждый модуль с осторожностью! Взамен долгого ожидания вы избавляете себя от необходимости получать эти данные вручную.
В каталоге "sampledata" есть несколько примеров данных. Хеши были выбраны случайным образом и никоим образом не предназначены для targeting какой-либо организации или лица. Запуск этого инструмента на примерах данных работает следующим образом:
$ 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