Usando SIEM para treinar hackers éticos: abrindo o laboratório prático

Como treinamos hackers éticos em nossas universidades e centros de treinamento? Como regra, nós fornecemos Kali Linux ou Scanner-VSque inclui um conjunto de ferramentas de teste de segurança e uma máquina com muitas vulnerabilidades. Como resultado, os ouvintes podem obter uma compreensão bastante superficial de como o teste de penetração é realmente feito, uma vez que em projetos reais, os pentesters lidam com infraestruturas que incluem ferramentas de segurança da informação e sistemas de monitoramento de eventos de segurança da informação (SIEM). Para remediar a situação e proporcionar aos iniciantes a oportunidade de estudar métodos de teste de segurança e ferramentas para monitorar eventos de segurança da informação em um complexo, iniciamos com este artigo a publicação de trabalhos práticos de laboratório.







Nosso laboratório introdutório se concentra na identificação de um incidente relacionado ao acesso ao painel de administração de um servidor web.



Caso



Durante as férias do ISA, desenvolvedores terceirizados foram contratados para criar um aplicativo da web a ser hospedado no servidor da web Tomcat. Por conveniência, os desenvolvedores disponibilizaram o console da web para gerenciar aplicativos de servidor para o mundo externo e criaram uma conta "não trivial" admin: admin.



A ameaça



O invasor, enquanto verifica os hosts externos da organização, encontra a porta 8080 do servidor da web em questão, verifica se o console administrativo está disponível e, após algumas tentativas, destrói com êxito a senha da conta do administrador.



Tarefa



É necessário determinar como o administrador de segurança da informação poderia configurar o SIEM antes de suas férias para registrar oportunamente um incidente relacionado à ameaça em questão. Depois disso, você precisa implementar este cenário de ataque e certificar-se de que as diretivas de correlação funcionam corretamente.



Infraestrutura virtual



A situação está se desenvolvendo na seguinte infraestrutura de TI implantada no VirtualBox:







  1. Máquina do invasor (Kali Linux, IP: 8.8.8.10, 4 GB de RAM, kali: kali);
  2. Firewall com sistema de detecção de intrusão (pfSense, IP externo: 8.8.8.1, IP da rede interna: 192.168.1.1, IP DMZ: 192.168.2.1, 1 GB de RAM, admin: pfsense);
  3. Servidor Web (Ubuntu Server 18.04 com Tomcat, IP 192.168.2.15, 2 GB de RAM, usuário: usuário);
  4. Sistema SIEM de servidor "KOMRAD" (Ubuntu 20.04, IP 192.168.1.99, 4 GB de RAM, usuário: usuário).


Se você está interessado em implantar essa infraestrutura por conta própria, pode seguir as instruções , mas se quiser economizar tempo, postamos as máquinas virtuais configuradas no formato OVA . O sistema SIEM deverá ser obtido adicionalmente, mas isso será descrito a seguir.



Solução: configurar um sistema SIEM



Para resolver o problema, executaremos sequencialmente as ações do invasor, analisaremos como elas se refletem nos logs do firewall e do servidor web, configuraremos a coleta, análise e filtragem de eventos e também criaremos as diretivas de correlação necessárias no sistema SIEM.

O guia de nosso laboratório fornece etapas detalhadas para resolver este problema, no artigo, vamos nos concentrar apenas nos pontos-chave.



1. Envio de eventos do firewall



O firewall pfSense permite que você envie seus logs através do protocolo Syslog para um servidor remoto, para isso você só precisa definir o endereço IP e a porta do coletor de syslog SIEM "KOMRAD", bem como adicionar uma regra que permite o envio de logs da rede 192.168.2.0/24 para a rede interna 192.168 .1.0 / 24.







O sistema SIEM receberá eventos do seguinte tipo:



<134> 1 2020-10-18T02: 33: 40.684089 + 00: 00 pfSense.localdomain filterlog 9761 - - 4 ,,, 1000000103, em0, corresponder, bloquear , em, 4, 0x0 ,, 64,25904,0, DF, 6, tcp, 60, 8.8.8.10 , 8.8.8.1 , 35818,1721,0, S, 1017288379 ,, 64240 ,, mss; sackOK; TS; nop; wscale



Como você pode ver, esta entrada contém informações importantes como o endereço IP do host que iniciou a conexão, o endereço IP do host ao qual a conexão está sendo tentada e uma indicação de que a tentativa de conexão foi bloqueada.



2. Envio de eventos de um servidor web



O servidor da web Tomcat registra solicitações de http em logs locais, que podem ser redirecionados via rsyslog para o sistema SIEM. Para resolver este problema, você também pode usar o coletor de arquivos, que faz parte do sistema SIEM "KOMRAD". Nos registros, você pode ver que o endereço IP do host do qual a solicitação foi recebida está registrado, bem como a conta do usuário em caso de autorização bem-sucedida:







3. Recebendo um fluxo de eventos pelo sistema SIEM "KOMRAD"



Os eventos considerados são registrados automaticamente pelo sistema SIEM "KOMRAD":







Os dois tipos de eventos mencionados são suficientes para detectar as seguintes situações:



  • Bloqueio de conexão - baseado em bloqueio;
  • Varredura de portas - em caso de bloqueio múltiplo de tentativas de conexão iniciadas pelo mesmo host;
  • Suspeita de acesso não autorizado - verificação de porta e obtenção de acesso administrativo.


Todas as três situações podem ser incidentes de segurança da informação, mas é claro com diferentes níveis de gravidade.



Antes de registrar os incidentes, precisamos aprender como extrair as informações úteis acima dos eventos.



4. Análise de eventos pelo sistema SIEM "KOMRAD" (análise)



Para analisar eventos de origem em um sistema SIEM, você precisa criar um plugin que inclui um conjunto de expressões regulares. Para as fontes mais populares, COMRAD já tem plugins prontos. Na ausência de um plug-in, o usuário pode criar um.



Abaixo está um exemplo de design de uma expressão regular para extrair campos do evento de firewall acima. Como ferramenta de depuração, utilizamos o portal https://regex101.com/







Após a criação do plug-in, os dados dos eventos são extraídos em campos separados, como você pode ver no cartão de eventos a seguir:







5. Configurar filtros para extrair eventos de segurança da informação de interesse do fluxo



Para identificar os eventos de nosso interesse no fluxo de eventos que entram no sistema SIEM, precisamos configurar filtros. No sistema SIEM, os filtros "KOMRAD" são formados usando a popular linguagem de script Lua (os especialistas em segurança da informação já estão familiarizados com ela do Nmap e Suricata).



Para selecionar eventos de firewall relacionados ao bloqueio da conexão, criaremos o seguinte filtro:



--  filter  
function filter(event)
--    ,     IP- ,  
    action = event:getString ('Action')
    ip = event:getString ('IpSrc')
--     IP-,      
    if action == 'block' then
        return {IP=ip}
    end
end


O filtro para o evento Tomcat parece um pouco mais complicado, no qual verificamos se a conta recuperada do evento corresponde ao valor "admin". Nesse caso, também retornamos o endereço IP.



function filter(event)
    journal = event:getString ('Journal')
    login = event:getString ('Username')
    ip = event:getString ('IpSrc')
    
    if journal == 'tomcat-access' and login == 'admin' then
        return {IP=ip}
    end
end


Quando usado em um ambiente de produção, para melhorar o desempenho do sistema, pode ser necessário verificar um ID de coletor específico no início de cada filtro para limitar o escopo do filtro.



6. Criação de diretivas de correlação



Vamos criar diretivas de correlação para as situações consideradas com os seguintes níveis de gravidade:



  1. Bloqueio de conexão - "insignificante";
  2. Port Scan - Low;
  3. O envio de solicitações HTTP usando a conta de administrador é "alto".


Para criar um incidente se a conexão for bloqueada, basta indicar na diretiva de correlação o único filtro aplicado:



filter 5


A segunda diretiva, que deve criar um incidente no caso de bloqueio três vezes de uma conexão iniciada pelo mesmo host, terá a seguinte aparência:



/*  ip,   ,        .*/
var ip
filter 5 export ip = ep.IP
/*         IP.
    notforking,       .*/
filter 5 +1m where ep.IP==ip notforking
//   .
filter 5 +1m where ep.IP==ip notforking


Na terceira diretiva, adicionamos outra linha, na qual utilizamos o filtro com ID 6, criado para selecionar as solicitações ao servidor web com a conta de administrador.




var ip
filter 5 export ip = ep.IP
filter 5 +1m where ep.IP==ip notforking
filter 5 +1m where ep.IP==ip notforking
filter 6 +1m where ep.IP==ip notforking


No exemplo do tutorial, a janela de tempo foi deixada igual a 1 minuto; na vida real, faz sentido aumentá-la para vários minutos.



Solução: realizar um ataque e identificá-lo



Depois de configurar as fontes de eventos e o sistema SIEM, é hora de realizar um ataque simulado. Primeiro, vamos verificar as portas:







Em seguida, vamos para a porta 8080 e passamos pela autorização com a conta admin: admin:







Essas ações são registradas pelo sistema SIEM "KOMRAD": todas as três diretivas de correlação são acionadas:







Conclusão



Assim, neste trabalho laboratorial, vimos a sequência de ações de recolha e análise de eventos de segurança da informação em caso de obtenção de acesso administrativo ao servidor web. No próximo laboratório, o invasor desenvolverá o ataque e usará o acesso administrativo obtido para coletar informações sobre a infraestrutura de destino.



Como obter uma versão demo do sistema SIEM "KOMRAD"



No momento, estamos em um teste beta de nosso produto, no qual qualquer pessoa pode participar. Para fazer isso, fornecemos a versão atual do sistema SIEM na forma de um contêiner Docker. Existem apenas duas limitações na versão demo: a taxa de processamento de eventos é reduzida para 1000 EPS e não há autorização e sistema de controle de acesso.



Para receber um arquivo com uma versão de demonstração, escreva para nós no endereço de e-mail getkomrad@npo-echelon.ru da caixa de correio de sua organização (estamos interessados ​​em quem participará). Também o convidamos para nosso grupo Telegram, onde você pode obter ajuda em caso de qualquer dificuldade: https://t.me/komrad4



Links



  1. Máquinas virtuais para organizar a infraestrutura de treinamento no VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
  2. , : https://yadi.sk/i/tD8nxckjYwr_6Q
  3. №1: https://yadi.sk/i/ffztj2XQMPD-xw



All Articles