Utilizando o Defender EASM e o Defender TI

Já comentei em posts passados sobre o MDTI (Microsoft Defender for Threat Intelligence) quando integrado com o Sentinel para detectar com KQL indicadores de ataque ou comprometimento (https://www.marcelosincic.com.br/post/Utilizando-os-IoCs-do-Microsoft-Defender-Threat-Intelligence.aspx).

Desta vez vamos introduzir uma nova ferramenta que é o EASM (Defender External Attack Surface Management) onde ao indicar um “seed” que podem ser nomes de domínios, IPs de hosts ou DNS ele faz a procura por indicadores de possível ataque.

Ele é abrangente por não apenas olhar os Threat Indicators na base do MDTI, mas incluir na analise os certificados vencidos, CVEs que estão expostos, técnicas OWASP, postura de segurança nas configurações e aderência ao GDPR.

O melhor de tudo: O EASM É GRATUITO NOS PRIMEIROS 30 DIAS!

Habilitando e Configuração Inicial

O processo é muito simples, segue um passo a passo:

  1. Crie o recurso no Azure, onde informará subscrição, grupo de recursos e tags basicamente
  2. Entre nas configurações em “Discovery” e crie a raiz de procura (ou seed) com o “Discovery Group”
  3. Nas configurações da procura indique a periodicidade e o que quer procurar
    Aqui tem um ponto interessante, onde empresas e organizações conhecidas podem ser pré-carregadas na opção de “Import…” que são empresas já conhecidas por bases de internet comum
  4. Lembre-se de colocar exclusões caso possua servidores honeypot para não gerar alertas desnecessários

0

Agora é só aguardar de 48 a 72 horas para que a descoberta gere os dados.

Analisando os dados gerados

No Overview já é possível detectar os diferentes itens que precisam ser observados na forma de listas em tabs. Nesta lista eu já detecto IPs suspeitos por ser utilizado em distribuição de malware na base do MDTI.

Olhando ali descobrimos um IP antigo que utilizei em um servidor que hoje é um indicador de ataque:

1

Aqui já pode ser visto um resumo e o indicativo de que um dos IPs é suspeito:

2

O próprio EASM já carrega as informações indicando qual tipo de ataque este IP está sujeito e está registrado no MDTI:

3

Abrindo as tabs de obervação do host podemos ver o que este host hospeda, certificados, reputação e todos os detalhes:

4

Também já tenho uma visão de todos os certificados usados no host para os diferentes domínios, o que me permite detectar certificados internos e externos que estejam vencidos ou próximos de vencer:

5

Neste exemplo descobri mais tarde investigando que um dos dominios hospedados no mesmo servidor estava com vulnerabilidades e sendo usado para distribuição de um site de videos.

Alterei o host e removi o registro DNS que apontava para este host, que na verdade era apenas um registro de verify antigo e não estava mais ativo.

Conclusão

Com o uso do EASM podemos monitorar nossos recursos que estão expostos na internet e assim proteger a nós mesmos e aos nossos clientes!

Utilizando os IoCs do Microsoft Defender Threat Intelligence no Sentinel

A alguns anos que a Microsoft adquiriu a RiskIQ e lançou recentemente o Microsoft Defender for Threat Intel (MDTI).

O que é o MDTI?

Já tratei algumas vezes sobre IoCs, ou indicadores de comprometimento em inglês, e como eles podem ser integrados como o caso do VirusTotal (Marcelo Sincic | Enriquecendo o Sentinel com dados do Virus Total).

Nesse post vamos falar da solução do MDTI e como integrar a base dele ao Senitnel e utilizar para hunting e análise de incidentes e alertas em seu ambiente.

Primeiramente é importante saber que o serviço MDTI é pago por usuário em um modelo de licenciamento por contrato, mas a base de dados pode ser importada para o Sentinel por meio de um conector.

Conectando o Sentinel a base do MDTI

Para isso você precisará instalar a solução Microsoft Defender for Threat Intel no Sentinel a paritr do Content Hub e depois configurar o Data Connector como abaixo:

8

Uma vez configurado será feita a ingestão diária os dados do MDTI para a base Threat Intelligence do Sentinel:

7

Importante lembrar que os IoCs ingeridos do MDTI irão se somar aos IoCs customizados ou importados de outras bases que você tenha configurado.

Configurando as integrações de Log com TIs

Ao instalar a solução e fazer a configuração do conector de dados, o passo seguinte é configurar e instalar as regras de cruzamento de dados utilizando o Analytics do Sentinel.

São varias regras diferentes que você poderá utilizar que já estão prontas:

9

Estas regras são compostas de consultas KQL que analisar um alerta e incidente para cruzar co ma base de IoCs importadas, resultando em um enriquecimento de dados ao validar que um determinado IP ou URL maliciosa foi acessada ou tentou acessar seu ambiente.

Claro que isso pode ser feito manualmente, bastaria rodar uma query KQL manual ou customizada no Sentinel em hunting queries para cruzar IPs e URLs com os diferentes logs do Sentinel existentes. Um exemplo disso foi um recente cliente onde discutimos o cruzamento do log do Umbrella DNS com o MDTI para detectar sites maliciosos acessados pelos usuários.

Visualizando os incidentes com os dados do MDTI

Agora vem a parte prática. Tudo configurado você terá alertas e incidentes novos em seu ambiente:

6

Vamos abrir os detalhes do primeiro e ver o IP que indica um ataque potencial:

1

Uma vez que no proprio incidente já sei que o IP é considerado suspeito, podemos investigar os detalhes importados na base para visualizar os detalhes:

5

E por fim, vou utilizar a interface do MDTI para consultar os dados do IP, lembrando que neste caso preciso ter uma licença de MDTI para ver os detalhes:

3

Vamos agora fazer o mesmo processo com o segundo incidente de exemplo que tenho na minha lista e abrir os detalhes no MDTI:

2

4

Conclusão

O serviço Microsoft Defender for Threat Intel (MDTI) irá ajudá-lo a detectar diversas formas de ataques vindas de ofensores e grupos profissionais ou previamente identificados.

Alem disso, sua base é rica em detalhes do tipo de ataque, alvos e grupos que atuam com aquele IoC especifico que foi utilizado para tentar acesso ao seu ambiente.

Protegendo o log do WAF contra vazamentos e exfiltração de dados

Pode parecer uma proteção desnecessária, mas proteger o log do WAF é um item importante na preservação de dados pessoas (PII) ou mesmo corporativos de seus clientes e parceiros.

Cenário

Como seu site precisa receber dados de login (sejam clientes, parceiros ou fornecedores) nas chamadas POST ou JSON com nome de usuário e senha, você poderá ter um vazamento caso o log caia em mãos de um agente malicioso que pode ser um funcionário ou externo.

Um exemplo que tive a alguns anos atras foi em um sistema de consulta de crédito integrado a parceiros de cadastro como SERASA e Associações Comerciais. O log de erros do sistema guardava em formato plain text no banco de dados os chamados com erros para que os desenvolvedores e o SAC pudessem encontrar erros no retorno de consultas.
Porém, nesse log muitas vezes o problema era erro na senha e nome de usuário enviados e com isso bastaria usar a lógica para deduzir que o usuário escreveu uma letra ou digito a mais ou diferente para conseguir saber sua senha.
E pior ainda, no log completo do serviço de autenticação era possível ver no GET os dados enviados para o cliente. Ou seja, se um parceiro consultar o meu CPF ou de alguém que me interesse, eu poderia procurar no log o retorno que foi enviado a performance nos serviços de crédito desta pessoa sem que isso fosse logado em qualquer lugar já que acessei diretamente o log.

Agora no Azure podemos deixar isso no passado, uma vez que não precisamos mais guardar logs programáticos já que ele armazena tudo no Log Analytics. Mas ainda temos um log onde qualquer operador de segurança pode usar um KQL e ver os dados, até mesmo utilizar um usuário valido para consultar dados no sistema.

Solução

Na época que notamos este problema a solução teve que ser manual, remover programaticamente nas funções a gravação de log para usuário e senha, além de mascarar CPF e CNPJ. Mas obviamente este não era uma solução definitiva, já que o log do WAF e do IIS ainda guardariam os dados brutos.

Agora no Azure WAF é possível criar regras de mascaramento para o log, ou seja, poderei identificar os dados no JSON e no POST que preciso proteger e proibir que sejam usados em consultas KQL.

Configuração

Nas propriedades da política do WAF use o menu "Sensitive Data" para acessar o log scrubbing como a minha configuração abaixo:

Em meu exemplo utilizei os parâmetros e variáveis que são utilizadas pelos meus desenvolvedores para identificar usuário, senha, número de contrato e ID do cliente. Aqui poderia acrescentar CPF, CNPJ ou outros documentos que sejam argumentos recebidos e enviados.

Abaixo temos a lista de tipos de variáveis que podem ser mascaradas atualmente:

Com exceção do IP Address todos os outros tipos permitem a opção "Equal" e "Equal any" onde a primeira permite indicar uma informação nomeada e a segunda mascara qualquer que seja o conteudo no item selecionado. No caso do "Equal any" é importante lembrar que ele irá criptografar todas as variaveis daquele formato, o que pode ser ruim para debug futuro.

Referência

A Microsoft já liberou a documentação do recurso no Learn, para isso utilize o anuncio Azure WAF – Masking Sensitive Data - Microsoft Community Hub