Como construir um sandbox de análise de malware com o Elastic Security
Sou analista de segurança da equipe de segurança das informações (InfoSec) da Elastic, e um cenário comum que vemos são os usuários perguntarem à nossa equipe: “É seguro abrir esse arquivo?” Ou um usuário relata um e-mail de phishing com um anexo que ele não abriu, mas vemos nos logs que outros dez usuários também receberam o mesmo e-mail, mas não o relataram, e nenhum alerta foi disparado em seus sistemas. Um ataque comum que vemos é de e-mails de phishing com anexos que não contêm código malicioso e, portanto, não disparam nenhum alerta, mas usam engenharia social (ou seja, manipulam o usuário de forma a persuadi-lo a executar uma ação) com um usuário para roubar sua senha.
Nessas situações, a equipe de segurança precisa descobrir rapidamente o que ocorreu em um de seus sistemas quando um arquivo é executado para determinar se ele teria sido detectado ou barrado. Se não foi, eles precisam entender rapidamente quais ações foram realizadas no host. Nesses casos, a equipe de segurança precisa ter um sandbox de máquina virtual (VM) bem instrumentado que possa usar para executar com segurança o arquivo em questão e observar o que acontece. A equipe de InfoSec da Elastic está sempre testando os limites dos produtos Elastic como parte de nosso esforço de sermos uma empresa Cliente Zero. Por isso, decidimos construir um sandbox usando produtos Elastic.
Neste post do blog, vou demonstrar como a equipe de InfoSec da Elastic usa o Fleet e o Elastic Stack como um sandbox para malware totalmente instrumentado. Além de a Elastic ser uma opção natural para instrumentar e coletar dados de um sandbox, ele também é fácil de construir e pode ser criado em questão de minutos.
O que é a análise dinâmica de malware?
A análise dinâmica de malware é o ato de executar e observar um software suspeito dentro de uma VM isolada. O objetivo da análise dinâmica é saber:
- Quais processos o malware executa
- Quais alterações ele faz em um host
- Quais conexões de rede ele faz
- Quais arquivos ele baixa para o segundo ou o terceiro estágio do ataque
Depois de observar o malware, você pode pegar as informações aprendidas para criar novas detecções e defesas ou procurar outras atividades maliciosas na sua rede.
Por que a Elastic?
Se você já criou um ambiente de sandbox para observar e analisar malware, sabe que configurar o sandbox pode ser um processo demorado que envolve a instalação e a configuração de dezenas de softwares diferentes. Pode envolver a instalação e a configuração de uma coleção de softwares como Wireshark, Regshot e ProcMon para percorrer manualmente todas as etapas da execução do malware enquanto as ações são observadas e documentadas.
Existem sistemas avançados de sandbox para análise dinâmica de malware, como o Cuckoo Sandbox, que têm muitos recursos e funcionalidades, como a automação, mas geralmente precisam de muito mais tempo para serem instalados e configurados, além de possivelmente não serem necessários para todas as equipes de segurança das informações. Muitas das amostras de malware de phishing que vimos recentemente são tentativas de engenharia social para roubar credenciais que exigem a interação do usuário. Nesses casos, os sistemas automatizados podem não coletar todos os indicadores de comprometimento.
Algumas amostras de malware verificam a existência de muitas dessas ferramentas e interrompem a execução, tornando-as mais difíceis de analisar. Outros malwares chegam até a fazer buscas ativamente dessas ferramentas e matar os processos ou sobrescrever os logs dentro do sandbox. Por causa disso, a análise dinâmica de malware pode ser demorada quando você está trabalhando em um incidente ativo que precisa de atenção imediata.
O Elastic Endpoint Security é um único agente que coleta informações sobre as ações que estão acontecendo no sistema e apresenta rapidamente a árvore de processos para os analistas. Isso proporciona uma investigação rápida e fácil do que exatamente aconteceu e fornece os indicadores de que você precisa para melhorar suas detecções e proteções. A visualização Analyzer (Analisador) no Elastic Security apresenta toda a árvore de processos para você, mostrando todos os processos filho e seus indicadores associados criados pelo processo inicial do malware.
Criação do seu sandbox
Existem vários motivos diferentes para usar um sandbox de análise de malware. Para este caso de uso, nosso objetivo é ter um ambiente virtual semelhante a uma compilação empresarial padrão, mas que também seja totalmente instrumentado a fim de podermos observar cada ação iniciada pelo malware.
Ao criar seu sandbox, convém criar duas imagens para cada compilação: uma “imagem reforçada”, construída com as mesmas proteções que você tem na sua empresa e uma “imagem vulnerável” com a maioria das proteções desativadas. A vantagem de ter duas imagens é que a imagem reforçada mostrará o que aconteceria no seu ambiente se alguém executasse o arquivo, enquanto a imagem vulnerável mostrará a execução completa do malware. Em uma empresa grande o suficiente, quase sempre há sistemas que tiveram algumas proteções desabilitadas; por isso, recomendo os dois métodos.
Criação dos sistemas de teste
A primeira etapa é criar as VMs usadas para executar os arquivos. Qualquer software de virtualização pode ser usado para construir as imagens. Não vou mostrar o passo a passo da configuração do software de virtualização, mas é importante isolar os sistemas do seu host e da rede empresarial o máximo possível ao executar o malware. Neste cenário, vou criar uma VM do Windows 10 e uma imagem do MacOS. Se você tem uma compilação do Linux padrão para a sua empresa, também pode criar uma dessas.
Depois de criar suas VMs, recomendo instalar todos os softwares de uso comum que você tem no seu domínio, como Microsoft Office, Adobe Reader ou Python. Qualquer coisa que seus usuários utilizariam para executar um arquivo deve ser incluída no sandbox. Nas suas VMs do Windows, recomendo habilitar o logging de blocos de script do PowerShell. O logging de blocos de script salvará o texto completo de todos os scripts executados do PowerShell nos seus logs de eventos do Windows, os quais podem ser coletados com o Elastic Agent. Ao configurar sua VM “vulnerável”, você precisará alterar várias configurações para desabilitar todas as proteções integradas do sistema operacional. Alguns malwares avançados para Windows verificarão se o host faz parte de um domínio antes de baixar o segundo estágio; portanto, você pode configurar sua VM para adicioná-la a um domínio falso com um nome semelhante ao da sua empresa.
Se desejar coletar dados do Sysmon do host do Windows, você também poderá fazê-lo. O agente do Elastic Endpoint coleta a maioria das mesmas informações que o Sysmon; portanto, convém customizar a configuração do Sysmon para não duplicar os dados. Quando o Sysmon estiver instalado e configurado, o Elastic Agent poderá transmitir esses eventos para o seu cluster usando a integração do Windows.
Configuração do seu cluster do Elastic Security
Para este teste, usei o Elastic 7.10 em execução no Elastic Cloud. Configurar seu cluster no Elastic Cloud é a maneira mais fácil de criar e hospedar um novo cluster para teste, e você pode colocá-lo em funcionamento em questão de minutos com todos os recursos da assinatura Platinum. Se quiser construir um sandbox completamente isolado, você poderá configurar o seu próprio Elastic Stack local. Se optar pela implantação local, você poderá seguir estas instruções para instalar o Elastic Stack. Tudo o que é abordado neste post está incluído gratuitamente em nosso nível Basic.
Após criar o seu cluster no Elastic Cloud, você precisará fazer login e configurar o Elastic Security. Se quiser assistir a um vídeo com o passo a passo da configuração, temos um disponível aqui.
Configuração
A primeira etapa é fazer login no Kibana como administrador, navegar até Security > Administration > aba Endpoints (Segurança > Administração > aba Endpoints) e selecionar Add Endpoint Security (Adicionar Endpoint Security).
Primeiro você precisa criar uma integração de segurança. Dê um nome à sua integração e selecione Save integration (Salvar integração). Você pode criar várias integrações e políticas de agente, mas a coisa mais fácil a se fazer para este sandbox é usar uma única política para todos os seus sistemas de sandbox. Uma única política funcionará para seus sistemas Linux, Windows e MacOS.
Escolha sua integração e selecione Enroll Agent (Inscrever agente). Na tela que aparece, confirme que você quer se inscrever no Fleet (Enroll in Fleet). Isso permitirá que você configure e controle seus agentes inteiramente por meio do Kibana.
Caso também queira coletar logs de eventos do Windows, selecione Add integration (Adicionar integração), selecione Windows nas integrações predefinidas, use as configurações padrão e selecione Save Integration (Salvar integração) para coletar os eventos de segurança do Windows, eventos do Sysmon, logging de blocos de script do PowerShell e quaisquer logs de eventos do Windows configurados para serem encaminhados.
Neste ponto, você deve ter uma política padrão configurada que implantará a segurança do endpoint, o módulo do sistema e os logs de eventos do Windows a partir dos sistemas Windows.
Agora está tudo pronto para você implantar seus agentes nos seus sistemas de sandbox. Selecione a aba Agents (Agentes). Se esse for o seu primeiro agente, você precisará ser um administrador e selecionar o botão para criar automaticamente o usuário do Fleet no Kibana. Em seguida, clique em Add Agent (Adicionar agente), que o(a) direcionará para a página de download do Elastic Agent e mostrará os comandos que você precisará executar para instalar o agente nas suas VMs. Depois de baixar e instalar o agente, você deverá vê-lo aparecer automaticamente na lista Agents (Agentes).
No Elastic Security, você precisará configurar a política de integração dos agentes do Elastic Endpoint. A política do agente define a política para o Elastic Agent, enquanto a política de integração define a política para a integração da segurança do endpoint implantada pelo agente. A política de integração da segurança do endpoint pode ser definida na aba Administration (Administração) no Elastic Security. Selecione a política de integração (Integration Policy) ao lado de um dos seus agentes para abrir a visualização.
Isso abrirá a visualização Integrations Settings (Configurações de integração). Nessa visualização, a opção Malware Protections Enabled (Proteções contra malware habilitadas) deverá estar ativada, e Protection Level (Nível de proteção) deverá estar definido como Detect (Detectar), não como Prevent (Prevenir). Se as proteções contra malware estiverem ativadas, mas você as colocar no modo de detecção, você verá os alertas de detecção de malware, mas o Elastic Security não executará nenhuma ação para parar o malware.
A próxima etapa é reservar um minuto extra para configurar o seu mecanismo de detecção no Elastic Security e instalar todas as regras de detecção da Elastic pré-criadas que vêm incluídas. Você não precisa fazer isso para o seu sandbox, mas é fácil de fazer e, muitas vezes, as regras detectam as ações do malware, facilitando a triagem. Para fazer isso, selecione a aba Detections (Detecções) no Elastic Security e depois Manage detection rules (Gerenciar regras de detecção). A partir daí, clique em Load Elastic prebuilt rules and timeline templates (Carregar regras pré-criadas e modelos de linha do tempo). Você terá de fazer isso como administrador na primeira vez.
Depois que as regras forem carregadas, você precisará habilitar todas as regras que quiser ativar. Você poderá examinar as regras e selecionar apenas as que quiser habilitar ou poderá simplesmente ativar todas se desejar. Ativar todas as regras é a opção mais fácil — não faz mal nenhum ter as regras habilitadas, mesmo que não haja dados para essa regra em particular.
Coletar o tráfego de rede (opcional)
Além de capturar a atividade do malware em um host, você também pode querer coletar sua atividade de rede de um host externo. Uma das vantagens disso é a capacidade de ver os dados dentro dos eventos de rede (não simplesmente que aconteceram). Existem várias maneiras de fazer isso, mas prefiro usar uma VM separada que detecte o tráfego de rede na mesma rede virtual.
Você pode usar o Packetbeat, que fornecerá um bom resumo dos dados sem sobrecarregar a sua stack com eventos, ou o TShark e o Filebeat para transmitir uma captura de pacote completo para o Elasticsearch. Convém configurar o Packetbeat para coletar a solicitação e a resposta da maioria dos protocolos e para coletar os certificados brutos de todo o tráfego de TLS. É muito comum que o malware reutilize certificados TLS, e eles podem ser um baú do tesouro de nomes de domínio mal-intencionados.
Seu sandbox de análise de malware agora está completo e pronto para os testes. Lembre-se de fazer um snapshot das suas VMs em um estado limpo antes de iniciar a execução do malware.
Análise do malware
Observação: cuidado para nunca abrir um malware ativo no seu sistema host. Recomendamos manter o malware suspeito em um arquivo zip protegido por senha para evitar abertura acidental. Se possível, baixe o malware diretamente no sistema de sandbox. |
Para este teste, detonei um malware da família Emotet. Esse malware específico é um documento malicioso do Office que exige que o usuário habilite macros para iniciar a execução. Se você não desabilitou as proteções contra malware na política do endpoint, o malware será imediatamente colocado em quarentena pelo Elastic Security, o que tornará seu teste muito curto.
Após detonar o malware Emotet na sua VM, você pode voltar ao Elastic Security no Kibana e assistir aos fogos de artifício. Na aba Detections (Detecções), você provavelmente verá vários novos alertas da atividade do malware no host. Podemos ver na captura de tela abaixo que houve vários alertas iniciais de detecção de malware. Se a segurança do endpoint tivesse sido definida para prevenir em vez de detectar, o malware teria sido interrompido e colocado em quarentena neste ponto, e você não teria todos os dados extras.
Ao lado de um dos alertas, você pode selecionar o ícone Analyze event (Analisar evento) para abrir a visualização Analyzer (Analisador) e ver o que aconteceu em um gráfico de árvore.
Neste exemplo, decidi selecionar o comando do PowerShell de aparência estranha para ver como ele se encaixa na cadeia de execução. O Analyzer é uma visualização interativa da execução do software de forma hierárquica com base no processo pai. As linhas que conectam os processos mostram a diferença de tempo entre a hora de início do processo pai e do processo filho. Se você ampliar o zoom em um nó, poderá ver o número de eventos associados a esse processo.
Para descobrir quais ações o processo do PowerShell realizou, posso selecionar o nó e ver que há 27 eventos separados associados a esse processo. Posso então selecionar cada uma das categorias para ver quais arquivos foram criados, as conexões de rede feitas, as entradas do Registro que foram modificadas e quais bibliotecas foram carregadas na memória por esse processo.
Alguns malwares só carregam determinados recursos após uma reinicialização; portanto, é uma boa ideia reinicializar a VM e procurar mais alertas para ver se há detecções adicionais.
Como todas essas informações já estão na Elastic, também posso visualizar esses eventos em qualquer um dos outros apps do Kibana, como no Dashboard ou no Discover. Se você está usando o Packetbeat para coletar tráfego de rede, o Kibana vem com muitos dashboards integrados e visualizações para vários protocolos de rede.
Conclusão
Neste post, vimos como configurar rapidamente o seu próprio sandbox de análise de malware usando a Elastic. Em minutos, você pode construir um sandbox que lhe permite abrir e observar arquivos com segurança enquanto transmite todos os eventos para o seu Elastic Stack para uma análise offline segura. Dentro da equipe de InfoSec da Elastic, usamos as informações desses arquivos para criar novas regras de detecção e procurar ataques à rede não descobertos anteriormente.
Pronto(a) para começar? Comece a sua avaliação gratuita de 14 dias (não é necessário cartão de crédito). Ou baixe nossos produtos gratuitamente para sua implantação local.