Detección y clasificación de malware con Amazon Rekognition PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Detección y clasificación de malware con Amazon Rekognition

De acuerdo con un artículo por Cybersecurity Ventures, el daño causado por Ransomware (un tipo de malware que puede impedir que los usuarios accedan a sus datos a menos que paguen un rescate) aumentó 57 veces en 2021 en comparación con 2015. Además, se prevé que le cueste a sus víctimas $ 265 mil millones ( USD) anualmente para 2031. Al momento de escribir este artículo, el costo financiero de los ataques de Ransomware cae justo por encima de los 50th posición en una lista de países clasificados por su PIB.

Dada la amenaza que representa el malware, se han desarrollado varias técnicas para detectar y contener ataques de malware. Las dos técnicas más comunes utilizadas hoy en día son la detección basada en firmas y en el comportamiento.

La detección basada en firmas establece un identificador único sobre un objeto malicioso conocido para que el objeto pueda identificarse en el futuro. Puede ser un patrón único de código adjunto a un archivo, o puede ser el hash de un código de malware conocido. Si se descubre un identificador de patrón conocido (firma) mientras se escanean objetos nuevos, el objeto se marca como malicioso. La detección basada en firmas es rápida y requiere poca potencia informática. Sin embargo, lucha contra los tipos de malware polimórficos, que cambian continuamente de forma para evadir la detección.

La detección basada en el comportamiento juzga los objetos sospechosos en función de su comportamiento. Los artefactos que pueden tener en cuenta los productos antimalware son las interacciones de procesos, las consultas de DNS y las conexiones de red del objeto. Esta técnica funciona mejor para detectar malware polimórfico en comparación con el basado en firmas, pero tiene algunas desventajas. Para evaluar si un objeto es malicioso, debe ejecutarse en el host y generar suficientes artefactos para que el producto antimalware lo detecte. Este punto ciego puede permitir que el malware infecte al host y se propague a través de la red.

Las técnicas existentes están lejos de ser perfectas. Por ello, continúa la investigación con el objetivo de desarrollar nuevas técnicas alternativas que mejoren nuestras capacidades de lucha contra el malware. Una técnica novedosa que ha surgido en los últimos años es la detección de malware basada en imágenes. Esta técnica propone entrenar una red de aprendizaje profundo con binarios de malware conocidos convertidos en imágenes en escala de grises. En esta publicación, mostramos cómo realizar la detección de malware basada en imágenes con Reconocimiento de amazonas Etiquetas personalizadas.

Resumen de la solución

Para entrenar un modelo de clasificación múltiple y un modelo de detección de malware, primero preparamos los conjuntos de datos de entrenamiento y prueba que contienen diferentes tipos de malware como flooder, adware, spyware, etc., así como objetos benignos. Luego convertimos los objetos ejecutables portátiles (PE) en imágenes en escala de grises. A continuación, entrenamos un modelo usando las imágenes con Amazon Rekognition.

Amazon Rekognition es un servicio que simplifica la realización de diferentes tipos de análisis visual en sus aplicaciones. Rekognition Image lo ayuda a crear potentes aplicaciones para buscar, verificar y organizar millones de imágenes.

Las etiquetas personalizadas de Amazon Rekognition se basan en las capacidades existentes de Rekognition, que ya están entrenadas en decenas de millones de imágenes en muchas categorías.

Las etiquetas personalizadas de Amazon Rekognition son un servicio completamente administrado que permite a los usuarios analizar millones de imágenes y utilizarlas para resolver muchos problemas diferentes de aprendizaje automático (ML), incluida la clasificación de imágenes, la detección de rostros y la moderación de contenido. Detrás de escena, Amazon Rekognition se basa en una tecnología de aprendizaje profundo. El servicio emplea una red neuronal de convolución (CNN), que se entrena previamente en un gran conjunto de datos etiquetados. Al estar expuesto a tales datos reales, el algoritmo puede aprender a reconocer patrones en imágenes de muchos dominios diferentes y puede usarse en muchos casos de uso de la industria. Dado que AWS asume la responsabilidad de crear y mantener la arquitectura del modelo y seleccionar un método de capacitación adecuado para la tarea en cuestión, los usuarios no necesitan dedicar tiempo a administrar la infraestructura necesaria para las tareas de capacitación.

Arquitectura de soluciones

El siguiente diagrama de arquitectura proporciona una descripción general de la solución.

La solución se construye usando Lote de AWS, AWS Fargatey Reconocimiento de amazonas. AWS Batch le permite ejecutar cientos de trabajos informáticos por lotes en Fargate. Fargate es compatible con ambos Servicio de contenedor elástico de Amazon (Amazon ECS) y Servicio Amazon Elastic Kubernetes (Amazon EKS). Las etiquetas personalizadas de Amazon Rekognition le permiten usar AutoML para visión artificial a fin de entrenar modelos personalizados para detectar malware y clasificar varias categorías de malware. Las funciones de pasos de AWS se utilizan para orquestar el preprocesamiento de datos.

Para esta solución, creamos los recursos de preprocesamiento a través de Formación en la nube de AWS. La plantilla de pila de CloudFormation y el código fuente de las funciones de AWS Batch, Fargate y Step están disponibles en un Repositorio GitHub.

Conjunto de datos

Para entrenar el modelo en este ejemplo, usamos los siguientes conjuntos de datos públicos para extraer el malicioso y benigno Ejecutable portátil (PE):

Le recomendamos que lea detenidamente la documentación de los conjuntos de datos (LÉAME de Sophos/Reversing Labs, Conjunto de datos de aprendizaje automático de malware PE) para manejar con seguridad los objetos de malware. Según sus preferencias, también puede usar otros conjuntos de datos siempre que proporcionen malware y objetos benignos en formato binario.

A continuación, lo guiaremos a través de los siguientes pasos de la solución:

  • Preprocesar objetos y convertirlos en imágenes
  • Implemente recursos de preprocesamiento con CloudFormation
  • Elige el modelo
  • Entrenar a la modelo
  • Evaluar el modelo
  • Costo y rendimiento

Preprocesar objetos y convertirlos en imágenes

Usamos Step Functions para orquestar el flujo de trabajo de preprocesamiento de objetos que incluye los siguientes pasos:

  1. Asuma el meta.db base de datos sqllite de Sorel-20m S3 bucket y conviértalo en un archivo .csv. Esto nos ayuda a cargar el archivo .csv en un contenedor Fargate y consultar los metadatos mientras procesamos los objetos de malware.
  2. Tome los objetos del cubo sorel-20m S3 y cree una lista de objetos en formato csv. Al realizar este paso, estamos creando una serie de archivos .csv que se pueden procesar en paralelo, lo que reduce el tiempo necesario para el preprocesamiento.
  3. Convierta los objetos del cubo sorel-20m S3 en imágenes con una variedad de trabajos. Los trabajos de matriz de AWS Batch comparten parámetros comunes para convertir los objetos de malware en imágenes. Se ejecutan como una colección de trabajos de conversión de imágenes que se distribuyen en varios hosts y se ejecutan simultáneamente.
  4. Elija un número predeterminado de imágenes para el entrenamiento del modelo con una variedad de trabajos correspondientes a las categorías de malware.
  5. Al igual que en el Paso 2, tomamos los objetos benignos del depósito benigno-160k S3 y creamos una lista de objetos en formato csv.
  6. Al igual que en el Paso 3, convertimos los objetos del depósito S160 benigno de 3k en imágenes con una variedad de trabajos.
  7. Debido a la cuota predeterminada de Amazon Rekognition para el entrenamiento de etiquetas personalizadas (250 XNUMX imágenes), elija una cantidad predeterminada de imágenes benignas para el entrenamiento del modelo.
  8. Como se muestra en la siguiente imagen, las imágenes se almacenan en un depósito S3 dividido primero por malware y carpetas benignas y, posteriormente, el malware se divide por tipos de malware.
    Cubo de entrenamiento S3
    Conjunto de datos de entrenamiento

Implemente los recursos de preprocesamiento con CloudFormation

Requisitos previos

Se requieren los siguientes requisitos previos antes de continuar:

Despliegue de recursos

La pila de CloudFormation creará los siguientes recursos:

parámetros

  • NOMBRE_PILA – Nombre de la pila de CloudFormation
  • AWS_REGION – Región de AWS donde se implementará la solución
  • PERFIL_AWS – Perfil con nombre que se aplicará al comando AWS CLI
  • ARTEFACT_S3_CUBO – S3 bucket donde se almacenará el código de infraestructura. (El depósito debe crearse en la misma región donde vive la solución).
  • CUENTA_AWS – ID de la cuenta de AWS.

Use los siguientes comandos para implementar los recursos

Asegúrese de que el agente de la ventana acoplable se esté ejecutando en la máquina. Las implementaciones se realizan mediante scripts bash, y en este caso usamos el siguiente comando:

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

Esto crea e implementa los artefactos locales a los que hace referencia la plantilla de CloudFormation (p. ej., cloudformation.yaml).

Entrenar a la modelo

Dado que Amazon Rekognition se encarga de la capacitación de modelos por usted, no se requiere visión artificial ni conocimientos de ML altamente especializados. Sin embargo, deberá proporcionar a Amazon Rekognition un cubo lleno de imágenes de entrada debidamente etiquetadas.

En esta publicación, entrenaremos dos modelos de clasificación de imágenes independientes a través de la función de etiquetas personalizadas:

  1. Modelo de detección de malware (clasificación binaria): identifique si el objeto dado es malicioso o benigno
  2. Modelo de clasificación de malware (clasificación multiclase): identifique la familia de malware para un objeto malicioso determinado

Tutorial de entrenamiento de modelos

Los pasos enumerados en el siguiente tutorial se aplican a ambos modelos. Por lo tanto, deberá realizar los pasos dos veces para entrenar ambos modelos.

  1. Inicia sesión en el Consola de administración de AWS y abre Amazon Rekognition un mueble consola.
  2. En el panel izquierdo, elija Usar etiquetas personalizadas. Se muestra la página de inicio de etiquetas personalizadas de Amazon Rekognition.
  3. En la página de inicio de etiquetas personalizadas de Amazon Rekognition, elija ¡Empieza aquí!.
  4. En el panel izquierdo, elija Proyectos.
  5. Elige crear un proyecto.
  6. In Nombre del proyecto, ingresa un nombre para tu proyecto.
  7. Elige Crear proyecto para crear tu proyecto.
  8. En Proyectos página, elija el proyecto al que desea agregar un conjunto de datos. Se muestra la página de detalles de su proyecto.
  9. Elige Crear conjunto de datos. Crear conjunto de datos se muestra la página.
  10. In Iniciando configuración, escoger Comience con un solo conjunto de datos para permitir que Amazon Rekognition divida el conjunto de datos para entrenamiento y prueba. Tenga en cuenta que podría terminar con diferentes muestras de prueba en cada iteración de entrenamiento del modelo, lo que generaría resultados y métricas de evaluación ligeramente diferentes.
  11. Elige Importar imágenes del bucket de Amazon S3.
  12. In URI de S3, ingrese la ubicación del depósito S3 y la ruta de la carpeta. El mismo depósito de S3 proporcionado en el paso de preprocesamiento se usa para crear ambos conjuntos de datos: detección de malware y clasificación de malware. El conjunto de datos de detección de malware apunta a la raíz (es decir, s3://malware-detection-training-{account-id}-{region}/) del depósito S3, mientras que el conjunto de datos de clasificación de malware apunta a la carpeta de malware (es decir, s3://malware-detection-training-{account-id}-{region}/malware) del depósito S3. Datos de entrenamiento
  13. Elige Adjunte automáticamente etiquetas a las imágenes en función de la carpeta.
  14. Elige Crear conjuntos de datos. Se abre la página de conjuntos de datos para su proyecto.
  15. En Modelo de tren página, elige Modelo de tren. El nombre de recurso de Amazon (ARN) de su proyecto debe estar en el Elige proyecto cuadro de edición De lo contrario, ingrese el ARN para su proyecto.
  16. En ¿Quieres entrenar a tu modelo? cuadro de diálogo, elija Modelo de tren.
  17. Después de completar el entrenamiento, elija el nombre del modelo. El entrenamiento finaliza cuando el estado del modelo es ENTRENAMIENTO_COMPLETADO.
  18. En fexibles sección, elija el Modelo de uso pestaña para comenzar a usar el modelo.

Para obtener más detalles, consulte las etiquetas personalizadas de Amazon Rekognition Cómo comenzar guía.

Evaluar el modelo

Cuando los modelos de entrenamiento estén completos, puede acceder a las métricas de evaluación seleccionando Comprobar métricas en la página del modelo. Amazon Rekognition le proporciona las siguientes métricas: puntaje F1, precisión promedio y recuperación general, que se usan comúnmente para evaluar el rendimiento de los modelos de clasificación. Estos últimos son métricas promediadas sobre el número de etiquetas.

En Rendimiento por etiqueta sección, puede encontrar los valores de estas métricas por etiqueta. Además, para obtener los valores de Verdadero positivo, Falso positivo y Falso negativo, seleccione el Ver los resultados de la prueba.

Métricas del modelo de detección de malware

En el conjunto de datos equilibrado de 199,750 XNUMX imágenes con dos etiquetas (benigno y malware), recibimos los siguientes resultados:

  • Puntuación F1 - 0.980
  • Precisión media – 0.980
  • Recuerdo general – 0.980

Métricas del modelo de detección de malware

Métricas del modelo de clasificación de malware

En el conjunto de datos equilibrado de 130,609 11 imágenes con 11 etiquetas (XNUMX familias de malware), recibimos los siguientes resultados:

  • Puntuación F1 - 0.921
  • Precisión media – 0.938
  • Recuerdo general – 0.906

Métricas del modelo de clasificación de malware

Para evaluar si el modelo está funcionando bien, recomendamos comparar su rendimiento con otros puntos de referencia de la industria que han sido entrenados en el mismo conjunto de datos (o al menos similar). Desafortunadamente, al momento de escribir esta publicación, no existen cuerpos comparativos de investigación que resuelvan este problema utilizando la misma técnica y los mismos conjuntos de datos. Sin embargo, dentro de la comunidad de ciencia de datos, se considera que un modelo con una puntuación F1 superior a 0.9 funciona muy bien.

Costo y rendimiento

Debido a la naturaleza sin servidor de los recursos, el costo total está influenciado por la cantidad de tiempo que se usa cada servicio. Por otro lado, el rendimiento se ve afectado por la cantidad de datos que se procesan y el tamaño del conjunto de datos de entrenamiento que se envía a Amazon Rekognition. Para nuestro ejercicio de estimación de costos y desempeño, consideramos el siguiente escenario:

  • Se catalogan y procesan 20 millones de objetos a partir del conjunto de datos de Sorel.
  • Se catalogan y procesan 160,000 XNUMX objetos a partir del conjunto de datos de aprendizaje automático de malware de PE.
  • Se escriben aproximadamente 240,000 3 objetos en el depósito S160,000 de entrenamiento: 80,000 XNUMX objetos de malware y XNUMX XNUMX objetos benignos.

Según este escenario, el costo promedio para preprocesar e implementar los modelos es de $510.99 USD. Se le cobrará adicionalmente $4 USD/h por cada hora que use el modelo. Puede encontrar el desglose detallado de los costos en el estimación generada a través de la Calculadora de precios de AWS.

En cuanto al rendimiento, estos son los resultados de nuestra medición:

  • ~2 h para que se complete el flujo de preprocesamiento
  • ~40 h para que se complete el entrenamiento del modelo de detección de malware
  • ~40 h para completar el entrenamiento del modelo de clasificación de malware

Limpieza

Para evitar incurrir en cargos futuros, detener y borrar los modelos de Amazon Rekognition y elimine los recursos de preprocesamiento mediante el destruir.sh guion. Se requieren los siguientes parámetros para ejecutar el script con éxito:

  • NOMBRE_PILA – El nombre de la pila de CloudFormation
  • AWS_REGION – La Región donde se implementa la solución
  • PERFIL_AWS – El perfil con nombre que se aplica al comando AWS CLI

Utilice los siguientes comandos para ejecutar el ./malware_detection_deployment_scripts/destroy.sh script:

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

Conclusión

En esta publicación, demostramos cómo realizar la detección y clasificación de malware con Amazon Rekognition. Las soluciones siguen un patrón sin servidor y aprovechan los servicios gestionados para el preprocesamiento de datos, la orquestación y la implementación de modelos. Esperamos que esta publicación lo ayude en sus esfuerzos continuos para combatir el malware.

En una publicación futura, mostraremos un caso de uso práctico de detección de malware mediante el consumo de los modelos implementados en esta publicación.


Sobre los autores

Edvin HallvaxhiuEdvin Hallvaxhiu es arquitecto sénior de seguridad global con AWS Professional Services y le apasiona la ciberseguridad y la automatización. Ayuda a los clientes a crear soluciones seguras y compatibles en la nube. Fuera del trabajo, le gusta viajar y hacer deporte.

raul shauryaraul shaurya es Arquitecto Principal de Datos con Servicios Profesionales de AWS. Ayuda y trabaja en estrecha colaboración con los clientes en la creación de plataformas de datos y aplicaciones analíticas en AWS. Fuera del trabajo, a Rahul le encanta dar largos paseos con su perro Barney.

Bruno DheftoBruno Dhefto es Arquitecto de Seguridad Global con Servicios Profesionales de AWS. Se enfoca en ayudar a los clientes a construir arquitecturas seguras y confiables en AWS. Fuera del trabajo, le interesan las últimas actualizaciones tecnológicas y viajar.

Nadim MajedNadim Majed es un arquitecto de datos dentro de los servicios profesionales de AWS. Trabaja codo con codo con los clientes que construyen sus plataformas de datos en AWS. Fuera del trabajo, Nadim juega tenis de mesa y le encanta ver fútbol.

Sello de tiempo:

Mas de Aprendizaje automático de AWS