16 de mar. de 2019

Implantar e executar o Splunk Enterprise dentro de um contêiner Docker + conectar-se a openvas

Mais uma vez, 

olá, meu caro!!

O post não começa aqui 


Como vocês perceberam os assuntos do blog estão muito diversificados e isso é legal, quanto mais tecnologias conhecermos melhor, sem via de dúvidas. No post de hoje eu decidi abordar esse assunto de "Splunk+Docker+Openvas" pois no post anterior eu mencionei a respeito dele. Durante minhas buscas eu não consegui identificar este assunto agrupado em um só lugar e em português, lendo documentações e relatos em fóruns e após implantar está arquitetura algumas vezes, 
eu me senti preparado para compartilhar e facilitar a vida dos interessados. Ao final do post eu sempre recomendo leitura, não deixe de ler! 





Por que utilizar Splunk no docker? 


Com a aplicação rodando em micro serviço torna muito fácil a escalação de clusters, replicação do ambiente, obtemos tbm uma redução de recursos e custos de hardware. Após a configuração inicial os clusters podem ser criados sob demanda.


Etapas: 

  1. Obter o docker 
  2. Obter a imagem do splunk 
  3. Rodar a imagem do splunk 
  4. Instalar componente do GSM  no splunk 
  5. Configurar índices
  6. Configurar alertas do splunk 
  7. Disparar alerta do GSM para o splunk

1. Obter o docker 


Caso você não tenha o docker instalado comece por aqui, faça o download e instalação do docker em seu sistema, os links oficiais para download estão logo abaixo:

Website oficial

Community Edition

As instalções estão disponíveis para: 
  • Windows
  • Mac
  • Linux
  • AWS & Azure

Instalação do docker

2. Obtendo a imagem do splunk 

Uma imagem do Docker é uma coleção de binários e configurações a serem usadas ao iniciar um contêiner

Existem imagens oficiais do Splunk Docker

Faça o download da imagem conforme oweb comando abaixo:

#docker pull splunk/splunk:latest

Obtendo a imagem do splunk


Para utilizar a image contida no github declare o comando abaixo:

#git clone https://github.com/splunk/docker-splunk


3. Rodar a imagem do splunk 


Execute o comando abaixo para rodar a imagem do splunk. Repare que a porta 7680 ficará exposta, isto justamente por que precisaremos dela para escutar as conexões advindas do openvas.

docker run -d -p 8000:8000 -p 7680:7680 -e 'SPLUNK_START_ARGS=--accept-license' -e 'SPLUNK_PASSWORD=<password>' splunk/splunk:latest
Onde está <password> você deve declarar um novo password para acessar o splunk pela primeira vez. O usuário é admin, após o primeiro acesso as credenciais podem ser alteradas.


Status Contêiner

 #docker ps 
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                   PORTS                                                                                                             NAMES
283ce7035651        splunk/splunk:latest   "/sbin/entrypoint...."   6 minutes ago       Up 6 minutes (healthy)   0.0.0.0:7680->7680/tcp, 4001/tcp, 8065/tcp, 8088-8089/tcp, 8191/tcp, 9887/tcp, 9997/tcp, 0.0.0.0:8000->8000/tcp   tender_ramanujan



Gerenciamento de portas do docker - Contêineres do Docker são executados em uma rede virtual isolada

A saída do comando acima exibirá uma hash de números e letras que representam o ID do contêiner que é a sua aplicação splunk. Execute o comando abaixo para verificar o status do contâiner.

#docker ps -a -f id=<contêiner_id>




Quando o status do contêiner estiver como healthy, significa que ele já está disponível e você poderá acessá-lo com o comando abaixo através de seu navegador.

#localhost:8000



4. Instalar componente do GSM no splunk 

A integração do Splunk requer a instalação do aplicativo Greenbone-Splunk no servidor splunk. O download e instalação do aplicativo são explicados na seção Aplicação Splunk.

Depois que o aplicativo é instalado no servidor splunk, o GSM pode ser instruído a enviar os resultados para o servidor splunk. Esta seção cobrirá a configuração do GSM.


A Greenbone Networks oferece um pequeno aplicativo para integração com o Splunk. O aplicativo está atualmente disponível em https://download.greenbone.net/tools/Greenbone-Splunk-App-1.0.1.tar.gz.


Para instalar o aplicativo no seu servidor splunk. Navegue até Splunk-> App-> ManagerApps > Install app from file  I



Gerenciamento de aplicativos



Upload de aplicativo


Aplicativo instalada com sucesso


Verifique a porta do Greenbone-Splunk-App após a instalação. Você pode acessar a porta na GUI Web através de Settings-> Data inputs-> TCP.



A porta do aplicativo é necessária para a configuração no GSM.


5. Configurar índices


Para configurar o índice acesse settings > indexes > New Index




Criando um novo índice para receber os dados do openvas

Para configurar o índice para receber os dados do openvas acesse settings> data input > 7680 > more settings > index



Adicionando o índice aos dados de entrada do openvas

6. Configurar alertas do splunk 

Para configurar o GSM, navegue até Configuration > Alerts. Crie um novo alerta clicando no ícone novo.
Role para baixo até a opção Enviar para o host. Preencha o endereço IP do servidor splunk e a porta do aplicativo Greenbone. Esta porta TCP é 7680 por padrão. Escolha o formato XML.


Configurações para o novo alerta


Para testar o alerta criado navegue até a aba actions ainda em alerts e clique sobre Test Alert



Validando a conexão do alerta criado




Alerta validado com sucesso


7. Disparar alerta do GSM para o splunk

Este alerta agora pode ser adicionado às tarefas apropriadas. Navegue para Scans > Tasks e crie uma nova Task usando o alerta. O alerta pode até ser adicionado a tarefas já existentes, o alerta não modifica o comportamento da análise.

Resumo e download





Para fins de teste, relatórios existentes podem ser processados pelo alerta. Navegue para Scans > Reports. Escolha qualquer relatório existente e mude para a visualização Resumo e Download. Aqui você pode processar o relatório usando qualquer alerta configurado.


Resumo e download do relatório


Acessando as informações no Splunk

Para acessar as informações no Splunk, alterne para o painel do Greenbone. O painel do Greenbone na interface da Web do Splunk exibirá as vulnerabilidades encontradas nos últimos sete dias.





Você criar visualizações novas e adicionar aos seus dashboards conforme necessário. Abaixo um painel criado por mim para testes no ambiente interno. 






E é isso, até o próximo!



Leitura recomendada:

15 de mar. de 2019

Openvas - Análise de dados do relatório de vulnerabilidade com pandas


Olá, meu caro!

Intro 


Hoje irei apresentar para vocês um método que pode ser utilizado em Python com a biblioteca pandas para manipulação de relatórios de análise de vulnerabilidade exportado do openvas. Isto pode ser feito de várias maneiras com outras ferramentas e linguagens de programação, então não se limite à apenas um método, normalmente encontramos maior facilidade de fazer o tratamento dos dados com o Excel e/ou Powerbi, porém, quando não está automatizado está tarefa se torna massiva e nos toma horas, dias ou até mesmo semanas, vai depender de quão extenso é o teu relatório, os gráficos servem para complementar o relatório e não enche-lo de tabelas, é possível utilizar tbm outras ferramentas como o Splunk, irei criar um post mostrando como integrar o openvas ao Splunk e como manipular os dados para gerar visualizações dinâmicas e interativas.

 A etapa de transformação dos dados é a mais demorada e costuma ocupar em média 80% de todo o seu tempo de preparação dos dados. No geral, algo que aprendi durante a especialização em ciência de dados é que isso é um fato e contra fatos não há argumentos, então não adianta chorar, tratar dados requer tempo e a necessidade é a mãe das invenções. 

Por que não encaminhar o relatório original da ferramenta para o cliente? 


O relatório integro pode ser exportado da ferramenta e entregue ao seu cliente porém, como sabemos, o relatório exportado da ferramenta é imenso e não contém todos os detalhes intrínsecos que normalmente queremos apresentar de forma enxuta e direta, o que pode levar o cliente a se confundir e ao não entendimento do que se passas e o que fazer com tudo aquilo que foi apresentado diante dele. É importante sentar com o cliente, entender as necessidades, e então depois desenvolver a sua metodologia.

Se liga cara! Não exporte o relatório cru  e mande para o cliente.


Tipos de relatório

Os relatórios podem ser dos seguintes tipos:
  • Técnico
  • Gerencial

1. Conceito de relatório
"É a exposição escrita na qual se descrevem fatos verificados mediante pesquisas ou se historia a execução de serviços ou de experiências. É geralmente acompanhado de documentos demonstrativos, tais como tabelas, gráficos, estatísticas e outros." (UFPR, 1996)."

2. Objetivos

De um modo geral, podemos dizer que os relatórios são escritos com os objetivos:

divulgar os dados técnicos obtidos e analisados; registrá-los em caráter permanente.

Veja mais sobre relatório no link abaixo.


Exibindo os dados do relatório do openvas em gráficos com pandas


OBS: Os dados apresentados abaixo foram criados randomicamente para apresentação.

Importando o dataset e listando as colunas



Verificando a dimensão do arquivo que será analisado

Tratando valores nulos



Tratando o dataset


Verificando valores nulos após o tratamento dos dados





Criando a primeira visualização



Gráfico com o 10 hosts com maior quantidade de vulnerabilidade e a soma do cvss cuja a sua soma se da como score de risco



Gráfico de setores exibindo os percentuais de ações que são sugeridas pela ferramenta e o percentual de severidade por vulnerabilidade

Top vulnerabilidades únicas e severidade

Produto detectado no scan










E é isso, até o próximo!! 



Leitura recomendada: 

8 de mar. de 2019

FYI: Classes do endereço IP

Originalmente, o espaço do endereço IP foi dividido em poucas estruturas de tamanho fixo chamados de "classes de endereço". As três principais são a classe A, classe B e classe C. Examinando os primeiros bits de um endereço, o software do IP consegue determinar rapidamente qual a classe, e logo, a estrutura do endereço.

Classe A: Primeiro bit é 0 (zero)

Classe B: Primeiros dois bits são 10 (um, zero)
Classe C: Primeiros três bits são 110 (um, um, zero)
Classe D: (endereço multicast): Primeiros quatro bits são: 1110 (um, um, um, zero)
Classe E: (endereço especial reservado): Primeiros quatro bits são 1111 (um, um, um, um)

A tabela, a seguir, contém o intervalo das classes de endereços IPs:


ClassesGama de EndereçosNúmero de Endereços por RedeMáscara Padrão
A1.0.0.0 - 127.0.0.016.777.216255.0.0.0
B128.0.0.0 - 191.255.0.065.536255.255.0.0
C192.0.0.0 - 223.255.255.0256255.255.255.0
D224.0.0.0 - 239.255.255.255Multicast
E240.0.0.0 - 255.255.255.254Uso futuro, atualmente reservada a testes pela IETF.

Os endereços IP privados não podem ser utilizados diretamente na internet, são eles:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
127 é um endereço especial chamado "loopback" serve para os programas testarem sua própria interface, por isso não é usada como endereço válido.


E é isso, até o próximo ... :)

Leitura recomendada: