BRIntel

Cyber Threat Intelligence (CTI) usando fontes e indicadores de ameaças nacionais, ou até globais, mas com evidencias ou indicadores nacionais do Brasil


Keywords
threat, intelligence, security, ibm, xforce, x-force, blueteam, search, query, api, exchange, otx, cti, oct, open, brazil, brasil, br, alienvault, lib, python3, threat-hunting, threat-intelligence, xfe
License
GPL-3.0
Install
pip install BRIntel==0.1

Documentation

BRIntelcollector

Pesquisa por indicadores de ameaças nacionais, através de diferentes fontes. Através da ferramenta é possível criar um banco de dados com ameaças nacionais e assim facilitar as pesquisas, identificação de organizações buscar por possíveis ameaças.

Atualmente estamos trabalhando duas fontes de dados: OTX da Alienvault e XFE da IBM

Instalação e uso

Pré requisitos: para instalar é necessário ter o python na versão 3+ e o pip correspondente. E possuir as chaves de API do Open Threat Exchange e do IBM X-Force Exchange(Lembre-se da especificidade da chave que deve ser: $chave:$senha em base64)

pip3 install BRIntel

Configure dessa forma seu .env. Claro: Substitua <sua chave e senha> pelo seu código da API e senha respectivamente.

echo "OTX_KEY = '<sua chave>'" > .env
echo "IBM_KEY = '<sua chave + senha em base64>'" >> .env

Para usar, basta importar os módulos que serão exemplificados:

from BRIntel import allSources, default

# Retornará uma list contendo a busca padrão 
# das duas fontes, todos os valores em dict
allSources("Termo de busca")

# Da mesma forma da outra função também retornará
# lista de valores em dict, mas na estrutura padrão:
default("Termo de busca")

A primeira função retorna de forma absoluta os valores das buscas, já a segunda reduz alguns dados para o trabalho na manipulação. Retorno da busca padrão (BRIntel.defaul):

  • ["title"]: Título do pulse/relatório
  • ["description"]: Descrição mais detalhada explicando o pulse/relatório
  • ["author"]: Nome do autor do pulse/relatório
  • ["created"]: Data de criação do pulse/relatório
  • ["Modified"]: Data de modificação do pulse/relatório
  • ["tlp"]: Traffic Light Protocol (TLP) de pulse/relatório
  • ["url"]: Url de pulse/relatório

É possível fazer a busca em fontes específicas, exemplo:

from BRIntel import xfe, otx

# O RETORNO SERÁ UMA LIST
# stix 2.1
xfe.search("Termo de busca")
# Formato aberto de pulse OTX
otx.search("Termo de busca")

Além de busca em fonte específica, também é possível fazer isso de forma que siga o padrão citado à cima

from BRIntel import xfe, otx

# Ambas as funções recebem o dict que corresponde a um valor
# de pulse/relatorio
xfe.show(xfe_search[x])
otx.show(otx_search[x])

Além da busca com o retorno em padrão de exibição, é possível buscar os detalhes de um pulse/relatório específico. Dessa forma:

from BRIntel import xfe, otx

# Ambas as funções recebem o ID, uma como string e outra como int, respectivamente
xfe.details(xfe_search[x]["id"])
otx.details(otx_search[x]["id"])