Detecção e classificação de malware com Amazon Rekognition PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Detecção e classificação de malware com o Amazon Rekognition

De acordo com um artigo pela Cybersecurity Ventures, os danos causados ​​pelo Ransomware (um tipo de malware que pode impedir que os usuários acessem seus dados, a menos que paguem um resgate) aumentaram 57 vezes em 2021 em comparação com 2015. Além disso, prevê-se que custe às vítimas $ 265 bilhões ( USD) anualmente até 2031. No momento da redação deste artigo, o custo financeiro dos ataques de Ransomware cai um pouco acima dos 50th posição em uma lista de países classificados por seus PIB.

Dada a ameaça representada pelo malware, várias técnicas foram desenvolvidas para detectar e conter ataques de malware. As duas técnicas mais comuns usadas atualmente são detecção baseada em assinatura e comportamento.

A detecção baseada em assinatura estabelece um identificador exclusivo sobre um objeto malicioso conhecido para que o objeto possa ser identificado no futuro. Pode ser um padrão único de código anexado a um arquivo ou pode ser o hash de um código de malware conhecido. Se um identificador de padrão conhecido (assinatura) for descoberto durante a verificação de novos objetos, o objeto será sinalizado como malicioso. A detecção baseada em assinatura é rápida e requer baixo poder de computação. No entanto, ele luta contra tipos de malware polimórficos, que mudam continuamente de forma para evitar a detecção.

A detecção baseada em comportamento julga os objetos suspeitos com base em seu comportamento. Artefatos que podem ser considerados por produtos antimalware são interações de processo, consultas de DNS e conexões de rede do objeto. Essa técnica funciona melhor na detecção de malware polimórfico em comparação com a baseada em assinatura, mas tem algumas desvantagens. Para avaliar se um objeto é malicioso, ele deve ser executado no host e gerar artefatos suficientes para que o produto antimalware o detecte. Esse ponto cego pode permitir que o malware infecte o host e se espalhe pela rede.

As técnicas existentes estão longe de serem perfeitas. Como resultado, a pesquisa continua com o objetivo de desenvolver novas técnicas alternativas que melhorem nossas capacidades de combate ao malware. Uma nova técnica que surgiu nos últimos anos é a detecção de malware baseada em imagem. Esta técnica propõe treinar uma rede de aprendizagem profunda com binários de malware conhecidos convertidos em imagens em escala de cinza. Nesta postagem, mostramos como realizar a detecção de malware baseada em imagem com Reconhecimento da Amazônia Etiquetas personalizadas.

Visão geral da solução

Para treinar um modelo de classificação múltipla e um modelo de detecção de malware, primeiro preparamos os conjuntos de dados de treinamento e teste que contêm diferentes tipos de malware, como flooder, adware, spyware, etc., bem como objetos benignos. Em seguida, convertemos os objetos portáteis executáveis ​​(PE) em imagens em escala de cinza. Em seguida, treinamos um modelo usando as imagens com o Amazon Rekognition.

O Amazon Rekognition é um serviço que simplifica a execução de diferentes tipos de análise visual em seus aplicativos. O Rekognition Image ajuda você a criar aplicativos poderosos para pesquisar, verificar e organizar milhões de imagens.

O Amazon Rekognition Custom Labels se baseia nos recursos existentes do Rekognition, que já são treinados em dezenas de milhões de imagens em várias categorias.

O Amazon Rekognition Custom Labels é um serviço totalmente gerenciado que permite aos usuários analisar milhões de imagens e utilizá-las para resolver diversos problemas de machine learning (ML), incluindo classificação de imagens, detecção facial e moderação de conteúdo. Nos bastidores, o Amazon Rekognition é baseado em uma tecnologia de aprendizado profundo. O serviço emprega uma rede neural de convolução (CNN), que é pré-treinada em um grande conjunto de dados rotulados. Ao ser exposto a esses dados reais, o algoritmo pode aprender a reconhecer padrões em imagens de muitos domínios diferentes e pode ser usado em muitos casos de uso do setor. Como a AWS se responsabiliza pela criação e manutenção da arquitetura do modelo e pela seleção de um método de treinamento apropriado para a tarefa em questão, os usuários não precisam perder tempo gerenciando a infraestrutura necessária para as tarefas de treinamento.

Arquitetura da solução

O diagrama de arquitetura a seguir fornece uma visão geral da solução.

A solução é construída usando Lote da AWS, AWS Fargate e Reconhecimento da Amazônia. O AWS Batch permite executar centenas de trabalhos de computação em lote no Fargate. Fargate é compatível com ambos Amazon Elastic Container Service (Amazon ECS) e Serviço Amazon Elastic Kubernetes (Amazon EKS). Os rótulos personalizados do Amazon Rekognition permitem que você use AutoML para visão computacional para treinar modelos personalizados para detectar malware e classificar várias categorias de malware. O AWS Step Functions é usado para orquestrar o pré-processamento de dados.

Para esta solução, criamos os recursos de pré-processamento via Formação da Nuvem AWS. O modelo de pilha do CloudFormation e o código-fonte para as funções AWS Batch, Fargate e Step estão disponíveis em um Repositório do GitHub.

Conjunto de dados

Para treinar o modelo neste exemplo, usamos os seguintes conjuntos de dados públicos para extrair os elementos maliciosos e benignos Executável Portátil (PE):

Incentivamos você a ler atentamente a documentação dos conjuntos de dados (LEIA-ME Sophos/Reverse Labs, Conjunto de dados de aprendizado de máquina de malware PE) para lidar com segurança com os objetos de malware. Com base em sua preferência, você também pode usar outros conjuntos de dados, desde que forneçam malware e objetos benignos no formato binário.

Em seguida, vamos orientá-lo através das seguintes etapas da solução:

  • Pré-processar objetos e converter em imagens
  • Implante recursos de pré-processamento com o CloudFormation
  • Escolha o modelo
  • Treine o modelo
  • Avalie o modelo
  • Custo e desempenho

Pré-processar objetos e converter em imagens

Usamos o Step Functions para orquestrar o fluxo de trabalho de pré-processamento do objeto, que inclui as seguintes etapas:

  1. Levar a meta.db banco de dados sqllite de sorel-20m S3 e converta-o em um arquivo .csv. Isso nos ajuda a carregar o arquivo .csv em um contêiner Fargate e consultar os metadados durante o processamento dos objetos de malware.
  2. Pegue os objetos do balde sorel-20m S3 e crie uma lista de objetos no formato csv. Ao realizar esta etapa, estamos criando uma série de arquivos .csv que podem ser processados ​​em paralelo, reduzindo assim o tempo de pré-processamento.
  3. Converta os objetos do balde sorel-20m S3 em imagens com uma variedade de trabalhos. Os trabalhos de matriz do AWS Batch compartilham parâmetros comuns para converter os objetos de malware em imagens. Eles são executados como uma coleção de tarefas de conversão de imagens distribuídas em vários hosts e executados simultaneamente.
  4. Escolha um número predeterminado de imagens para o treinamento do modelo com uma variedade de trabalhos correspondentes às categorias de malware.
  5. Semelhante à Etapa 2, pegamos os objetos benignos do bucket S160 benigno de 3k e criamos uma lista de objetos no formato csv.
  6. Semelhante à Etapa 3, convertemos os objetos do bucket S160 benigno de 3k em imagens com uma matriz de tarefas.
  7. Devido à cota padrão do Amazon Rekognition para treinamento de rótulos personalizados (250 mil imagens), escolha um número predeterminado de imagens benignas para o treinamento do modelo.
  8. Conforme mostrado na imagem a seguir, as imagens são armazenadas em um depósito S3 particionado primeiro por malware e pastas benignas e, posteriormente, o malware é particionado por tipos de malware.
    Balde S3 de treinamento
    Conjunto de dados de treinamento

Implante os recursos de pré-processamento com o CloudFormation

Pré-requisitos

Os seguintes pré-requisitos são necessários antes de continuar:

Implantação de recursos

A pilha do CloudFormation criará os seguintes recursos:

parâmetros

  • STACK_NAME – Nome da pilha do CloudFormation
  • AWS_REGION – Região da AWS onde a solução será implantada
  • AWS_PROFILE – Perfil nomeado que será aplicado ao comando AWS CLI
  • ARTEFACT_S3_BUCKET – Bucket S3 onde o código de infraestrutura será armazenado. (O balde deve ser criado na mesma região onde reside a solução).
  • AWS_ACCOUNT – ID da conta da AWS.

Use os seguintes comandos para implantar os recursos

Verifique se o agente docker está em execução na máquina. As implantações são feitas usando scripts bash, e neste caso usamos o seguinte comando:

bash malware_detection_deployment_scripts/deploy.sh -s '' -b 'malware-
detection--artifacts' -p  -r "" -a

Isso cria e implanta os artefatos locais aos quais o modelo do CloudFormation (por exemplo, cloudformation.yaml) está fazendo referência.

Treine o modelo

Como o Amazon Rekognition cuida do treinamento do modelo para você, visão computacional ou conhecimento de ML altamente especializado não é necessário. No entanto, você precisará fornecer ao Amazon Rekognition um bucket preenchido com imagens de entrada devidamente rotuladas.

Nesta postagem, vamos treinar dois modelos independentes de classificação de imagens por meio do recurso de rótulos personalizados:

  1. Modelo de detecção de malware (classificação binária) – identifica se o objeto fornecido é malicioso ou benigno
  2. Modelo de classificação de malware (classificação multiclasse) – identifica a família de malware para um determinado objeto malicioso

Passo a passo de treinamento de modelo

As etapas listadas no passo a passo a seguir se aplicam a ambos os modelos. Portanto, você precisará passar pelas etapas duas vezes para treinar os dois modelos.

  1. Entre no Console de gerenciamento da AWS e abra o Amazon Rekognition consolá.
  2. No painel esquerdo, escolha Use rótulos personalizados. A página inicial de rótulos personalizados do Amazon Rekognition é mostrada.
  3. Na página inicial de rótulos personalizados do Amazon Rekognition, escolha COMECE AGORA.
  4. No painel esquerdo, escolha Projectos.
  5. Escolha Criar projeto.
  6. In Nome do Projeto, insira um nome para seu projeto.
  7. Escolha Criar projeto para criar seu projeto.
  8. No Projectos página, escolha o projeto ao qual deseja adicionar um conjunto de dados. A página de detalhes do seu projeto é exibida.
  9. Escolha Criar conjunto de dados. O Criar conjunto de dados a página é mostrada.
  10. In Iniciando a configuração, escolha Comece com um único conjunto de dados para permitir que o Amazon Rekognition divida o conjunto de dados para treinamento e teste. Observe que você pode acabar com amostras de teste diferentes em cada iteração de treinamento do modelo, resultando em resultados e métricas de avaliação ligeiramente diferentes.
  11. Escolha Importar imagens do intervalo Amazon S3.
  12. In URI S3, insira o local do depósito S3 e o caminho da pasta. O mesmo bucket do S3 fornecido na etapa de pré-processamento é usado para criar os dois conjuntos de dados: detecção de malware e classificação de malware. O conjunto de dados de detecção de malware aponta para a raiz (ou seja, s3://malware-detection-training-{account-id}-{region}/) do bucket S3, enquanto o conjunto de dados de classificação de Malware aponta para a pasta de malware (ou seja, s3://malware-detection-training-{account-id}-{region}/malware) do balde S3. Dados de treinamento
  13. Escolha Anexar rótulos automaticamente às imagens com base na pasta.
  14. Escolha Criar conjuntos de dados. A página de conjuntos de dados do seu projeto é aberta.
  15. No Modelo de trem página, escolha Modelo de trem. O nome de recurso da Amazon (ARN) do seu projeto deve estar no Escolha o projeto caixa de edição. Caso contrário, insira o ARN do seu projeto.
  16. No Quer treinar seu modelo? caixa de diálogo, escolha Modelo de trem.
  17. Após a conclusão do treinamento, escolha o nome do modelo. O treinamento é concluído quando o status do modelo é TREINAMENTO_CONCLUÍDO.
  18. No Modelos seção, escolha o Modelo de uso guia para começar a usar o modelo.

Para obter mais detalhes, verifique os rótulos personalizados do Amazon Rekognition Iniciar guia.

Avalie o modelo

Quando os modelos de treinamento estiverem concluídos, você poderá acessar as métricas de avaliação selecionando Verifique as métricas na página do modelo. O Amazon Rekognition fornece as seguintes métricas: pontuação F1, precisão média e recall geral, que são comumente usados ​​para avaliar o desempenho de modelos de classificação. Os últimos são métricas médias sobre o número de rótulos.

No Desempenho por etiqueta seção, você pode encontrar os valores dessas métricas por rótulo. Além disso, para obter os valores de Verdadeiro Positivo, Falso Positivo e Falso Negativo, selecione o Ver os resultados do teste.

Métricas do modelo de detecção de malware

No conjunto de dados balanceado de 199,750 imagens com dois rótulos (benigno e malware), recebemos os seguintes resultados:

  • Pontuação F1 - 0.980
  • Precisão média - 0.980
  • Recordação geral - 0.980

Métricas do modelo de detecção de malware

Métricas do modelo de classificação de malware

No conjunto de dados equilibrado de 130,609 imagens com 11 rótulos (11 famílias de malware), recebemos os seguintes resultados:

  • Pontuação F1 - 0.921
  • Precisão média - 0.938
  • Recordação geral - 0.906

Métricas do modelo de classificação de malware

Para avaliar se o modelo está funcionando bem, recomendamos comparar seu desempenho com outros benchmarks do setor que foram treinados no mesmo conjunto de dados (ou pelo menos semelhante). Infelizmente, no momento em que este post foi escrito, não havia corpos de pesquisa comparativos que resolvessem esse problema usando a mesma técnica e os mesmos conjuntos de dados. No entanto, dentro da comunidade de ciência de dados, um modelo com uma pontuação F1 acima de 0.9 é considerado um desempenho muito bom.

Custo e desempenho

Devido à natureza sem servidor dos recursos, o custo geral é influenciado pela quantidade de tempo que cada serviço é usado. Por outro lado, o desempenho é afetado pela quantidade de dados sendo processados ​​e pelo tamanho do conjunto de dados de treinamento alimentado para o Amazon Rekognition. Para nosso exercício de estimativa de custo e desempenho, consideramos o seguinte cenário:

  • 20 milhões de objetos são catalogados e processados ​​a partir do conjunto de dados sorel.
  • 160,000 objetos são catalogados e processados ​​a partir do conjunto de dados PE Malware Machine Learning.
  • Aproximadamente 240,000 objetos são gravados no bucket S3 de treinamento: 160,000 objetos de malware e 80,000 objetos benignos.

Com base nesse cenário, o custo médio para pré-processar e implantar os modelos é de US$ 510.99. Você será cobrado adicionalmente $ 4 USD/h para cada hora que usar o modelo. Você pode encontrar a divisão detalhada dos custos no estimativa gerado através do Calculadora de preços AWS.

Em termos de desempenho, estes são os resultados de nossa medição:

  • ~ 2 h para o fluxo de pré-processamento ser concluído
  • Aproximadamente 40 horas para o treinamento do modelo de detecção de malware ser concluído
  • Aproximadamente 40 horas para o treinamento do modelo de classificação de malware ser concluído

Limpar

Para evitar cobranças futuras, Pare e excluir os modelos do Amazon Rekognition e exclua os recursos de pré-processamento por meio do destruir.sh roteiro. Os seguintes parâmetros são necessários para executar o script com sucesso:

  • STACK_NAME – O nome da pilha do CloudFormation
  • AWS_REGION – A região onde a solução está implantada
  • AWS_PROFILE – O perfil nomeado que se aplica ao comando da AWS CLI

Use os seguintes comandos para executar o ./malware_detection_deployment_scripts/destroy.sh script:

bash malware_detection_deployment_scripts/destroy.sh -s  -p
 -r 

Conclusão

Nesta postagem, demonstramos como realizar detecção e classificação de malware usando o Amazon Rekognition. As soluções seguem um padrão sem servidor, aproveitando serviços gerenciados para pré-processamento de dados, orquestração e implantação de modelo. Esperamos que esta postagem o ajude em seus esforços contínuos para combater o malware.

Em uma postagem futura, mostraremos um caso de uso prático de detecção de malware consumindo os modelos implantados nesta postagem.


Sobre os autores

Edvin HallvaxhiuEdvin Hallvaxhiu é arquiteto de segurança global sênior da AWS Professional Services e é apaixonado por segurança cibernética e automação. Ele ajuda os clientes a criar soluções seguras e compatíveis na nuvem. Fora do trabalho, gosta de viajar e praticar esportes.

Rahul ShauryaRahul Shaurya é Arquiteto Principal de Dados da AWS Professional Services. Ele ajuda e trabalha de perto com os clientes que criam plataformas de dados e aplicativos analíticos na AWS. Fora do trabalho, Rahul adora fazer longas caminhadas com seu cachorro Barney.

Bruno DheftoBruno Dhefto é arquiteto de segurança global da AWS Professional Services. Ele está focado em ajudar os clientes a criar arquiteturas seguras e confiáveis ​​na AWS. Fora do trabalho, ele se interessa pelas atualizações tecnológicas mais recentes e por viagens.

Nadim MajedNadim Majed é arquiteto de dados nos serviços profissionais da AWS. Ele trabalha lado a lado com clientes construindo suas plataformas de dados na AWS. Fora do trabalho, Nadim joga tênis de mesa e adora assistir futebol.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS