
Una aplicación modular en Python para obtener inteligencia sobre archivos maliciosos.
Esta es una herramienta utilizada para recopilar diversas fuentes de inteligencia para un archivo determinado. Fileintel está escrito de forma modular para que se puedan agregar fácilmente nuevas fuentes de inteligencia.
Los archivos se identifican por su hash (MD5, SHA1, SHA256). La salida está en formato CSV y se envía a STDOUT para que los datos se puedan guardar o canalizar a otro programa. Dado que la salida está en formato CSV, las hojas de cálculo como Excel o los sistemas de bases de datos podrán importar los datos fácilmente.
Esto funciona con Python v2, pero también debería funcionar con Python v3. Si ves que no funciona con Python v3, por favor crea un issue.
Este código ha sido probado en Windows 7 y Mac OSX El Capitan. Si lo pruebas en cualquier otro tipo de máquina, ¡por favor házmelo saber!
Un video de introducción para fileintel: https://youtu.be/MgJoy2fD0ZY
Antecedentes de mi primera herramienta 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.
Primero, asegúrate de que tu archivo de configuración sea correcto para tu computadora/instalación. Agrega tus claves API y nombres de usuario según corresponda en el archivo de configuración. Se requieren Python y Pip para ejecutar esta herramienta. Hay módulos que deben instalarse desde GitHub, así que asegúrate de que el comando git esté disponible desde tu línea de comandos. Git es fácil de instalar en cualquier plataforma. A continuación, instala los requisitos de Python (ejecuta esto cada vez que hagas git pull de este repositorio también):
$ pip install -r requirements.txt
Ha habido algunos problemas con la versión estándar de Python en Mac OSX (http://stackoverflow.com/questions/31649390/python-requests-ssl-handshake-failure). Es posible que tengas que instalar la parte de seguridad de la librería requests con el siguiente comando:
$ pip install requests[security]
Si estás utilizando las consultas de la base de datos NSRL, descarga el conjunto de datos "Mínimo" de NSRL como archivo zip. Colócalo en un directorio al que puedas acceder y apunta tu archivo de configuración a ese archivo zip. No es necesario descomprimir los datos de NSRL.
Si deseas usar 7Zip (rápido) en lugar de la librería zip interna de Python (lenta) para leer el archivo zip grande de NSRL, necesitarás instalar 7Zip. La instalación de 7Zip en Windows es bastante simple, pero Mac OX X o Linux necesitarán instalar p7zip, la herramienta de línea de comandos. Para Mac OS X, puedes instalar esta herramienta con Brew. Una vez que instales 7Zip, deberás apuntar tu archivo de configuración al lugar donde se encuentre el ejecutable 7z.
Por último, soy fan de virtualenv para Python. Para hacer una instalación local personalizada de Python para ejecutar esta herramienta, te recomiendo leer:
http://docs.python-guide.org/en/latest/dev/virtualenvs/
$ python fileintel.py myconfigfile.conf myhashes.txt -a > myoutput.csv
Deberías poder importar myoutput.csv a cualquier base de datos o programa de hoja de cálculo.
Ten en cuenta que dependiendo de tu red, los límites de tu clave API y los datos que estés buscando, ¡este script puede ejecutarse durante mucho tiempo! Usa cada módulo con moderación. A cambio de la larga espera, te ahorras tener que extraer estos datos manualmente.
Hay algunos datos de muestra en el directorio "sampledata". Los hashes se eligieron al azar y de ninguna manera pretenden apuntar a ninguna organización o individuo. Ejecutar esta herramienta sobre los datos de muestra funciona de la siguiente manera:
$ 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 ***