
Uma aplicação modular em Python para coletar inteligência sobre arquivos maliciosos
Esta é uma ferramenta usada para coletar várias fontes de inteligência para um determinado arquivo. O Fileintel é escrito de forma modular para que novas fontes de inteligência possam ser facilmente adicionadas.
Os arquivos são identificados pelo hash do arquivo (MD5, SHA1, SHA256). A saída está no formato CSV e é enviada para STDOUT para que os dados possam ser salvos ou redirecionados para outro programa. Como a saída está no formato CSV, planilhas como Excel ou sistemas de banco de dados poderão importar os dados facilmente.
Isso funciona com Python v2, mas também deve funcionar com Python v3. Se você descobrir que não funciona com Python v3, por favor, abra uma issue.
Este código foi testado no Windows 7 e Mac OS X El Capitan. Se você testar isso em qualquer outro tipo de máquina, por favor me avise!
Um vídeo de introdução para o fileintel: https://youtu.be/MgJoy2fD0ZY
Contexto da minha primeira ferramenta 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.
Primeiro, certifique-se de que seu arquivo de configuração está correto para seu computador/instalação. Adicione suas chaves de API e nomes de usuário conforme apropriado no arquivo de configuração. Python e Pip são necessários para executar esta ferramenta. Existem módulos que devem ser instalados do GitHub, então certifique-se de que o comando git esteja disponível em sua linha de comando. Git é fácil de instalar em qualquer plataforma. Em seguida, instale os requisitos do python (execute isto toda vez que você fizer git pull deste repositório também):
$ pip install -r requirements.txt
Houve alguns problemas com a versão padrão do Python no Mac OS X (http://stackoverflow.com/questions/31649390/python-requests-ssl-handshake-failure). Talvez seja necessário instalar a parte de segurança da biblioteca requests com o seguinte comando:
$ pip install requests[security]
Se você estiver usando as consultas ao banco de dados NSRL, baixe o conjunto de dados "Mínimo" do NSRL como um arquivo zip. Coloque-o em um diretório ao qual você possa acessar e aponte seu arquivo de configuração para esse arquivo zip. Não é necessário descompactar os dados do NSRL.
Se você quiser usar o 7Zip (rápido) em vez da biblioteca zip interna do Python (lenta) para ler o grande arquivo zip do NSRL, você precisará instalar o 7Zip. A instalação do 7Zip no Windows é bastante simples, mas Mac OS X ou Linux precisarão instalar o p7zip, a ferramenta de linha de comando. Para Mac OS X, você pode instalar esta ferramenta com o Brew. Uma vez instalado o 7Zip, você precisará apontar seu arquivo de configuração para o local onde o executável 7z se encontra.
Por último, sou fã do virtualenv para Python. Para fazer uma instalação local personalizada do Python para executar esta ferramenta, recomendo que você leia: http://docs.python-guide.org/en/latest/dev/virtualenvs/
$ python fileintel.py myconfigfile.conf myhashes.txt -a > myoutput.csv
Você deve conseguir importar myoutput.csv para qualquer banco de dados ou programa de planilha.
Observe que, dependendo da sua rede, dos limites da sua chave de API e dos dados que você está procurando, este script pode ser executado por um tempo muito longo! Use cada módulo com moderação! Em troca da longa espera, você se poupa de ter que extrair esses dados manualmente.
Há alguns dados de exemplo no diretório "sampledata". Os hashes foram escolhidos aleatoriamente e de forma alguma têm como alvo qualquer organização ou indivíduo. Executar esta ferramenta nos dados de exemplo funciona da seguinte maneira:
$ 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 ***
Este aplicativo é coberto pela licença Creative Commons BY-SA.
Leia Contributing.md