Logotipo de Zephyrnet

Detección de malware de Microsoft

Fecha:

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Introducción

Como parte de escribir un blog sobre el tema ML o DS, seleccioné un pris Detección de malware de Microsoft. Aquí este blog explica cómo resolver el problema desde cero.

En este blog, le explicaré cómo trato el problema y cómo uso la detección de malware de Microsoft.

Aquí estoy aplicando el algoritmo ML aplicado y las estadísticas para resolver el problema.

  • ¿Qué es el malware?
  • Problema de negocios
  • Resumen de datos
  • Problema de Mappin ML
  • EDA (análisis exploratorio de datos)
  • Característica de extracción
  • Función de codificación
  • Analisis multivariable
  • Aplicar modelo ML
  • Modelo final
  • Comparar modelo
  • Conclusión
  • Referencia

¿Qué es el malware?

Malware es software intrusivo que está diseñado para dañar y destruir computadoras y sistemas informáticos y Malware es una contracción de "software malicioso". Ejemplos de malware común incluyen virus, gusanos, virus troyanos, spyware, adware y ransomware.

Fuente:- haga clic aquí.

Detección de malware de Microsoft | Kaggle
Fuente Kaggle

Problema empresarial

En los últimos años, la industria del malware ha crecido muy rápidamente y los sindicatos invierten mucho en tecnologías para evadir la protección tradicional, obligando a los grupos/comunidades antimalware a crear un software más sólido para detectar y terminar estos ataques. La parte principal de la protección de un sistema informático contra un ataque de malware es identificar si un determinado archivo/software es malware.

Este conjunto de datos contiene 9 clases de malware.

Fuente: https://www.kaggle.com/c/malware-classification

Resumen de datos

En esta sección, entendimos los datos que tenemos. Así que para cada malware. Hemos dado los dos tipos de archivos. El primer archivo es el archivo .ASM. Y el segundo son los archivos .bytes.

Para obtener más información sobre los archivos .ASM, https://www.reviversoft.com/file-extensions/asm

Entonces, ASM significa archivo de código de lenguaje ensamblador, supongamos que tiene que escribir código en C ++ y el compilador de C ++ toma este código sin formato y lo convierte en un archivo ASM, y luego algo llamado es un ensamblador y se convierte en archivos de bytes y este archivo contiene solo 0 y 1

Los archivos .asm contienen este tipo de palabra clave como 'pop', 'jump', 'push', 'move', etc.

Y el archivo de bytes (los datos sin procesar contienen la representación hexadecimal del contenido binario del archivo, sin el encabezado PE) contienen valores hexadecimales y donde el el valor se encuentra entre 00 y FF

Aquí tenemos un total de 200GB de datos donde 50 GB de datos de archivos de bytes y 150 GB son archivos .asm.

Entonces, el nombre de los nueve programas maliciosos es el siguiente:

  1. Ramnit
  2. Chupete
  3. kelihos_ver3
  4. Vundo
  5. simda
  6. Tracur
  7. kelihos_ver1
  8. Ofuscador.ACY
  9. gatak

Archivo .ASM

.text:00401030 56 presionar esi .text:00401031 8B F1 mov esi, ecx .text:00401043 74 09 jz short loc_40104E .text:00401045 56 presionar esi .text:00401046 E8 6C 1E 00 00 llamar GME@dhr-rgv.com@Z; operador borrar(void *) .text:0040104B 83 C4 04 agregar esp, 4 .text:0040104E .text:0040104E loc_40104E: ; CÓDIGO XREF: .text:00401043j .text:0040104E 8B C6 mov eax, esi .text:00401050 5E pop esi .text:00401051 C2 04 00 retn 4

archivo .bytes

6A 04 68 00 10 00 00 68 66 3E 18 00 6A 00 FF 15 D0 63 52 00 8B 4C 24 04 6A 00 6A 40 68 66 3E 18 00 50 89 01 FF 15 9C 63 52 00 50 15 63 52 00 8 C07 00 00 CC CC CC CC CC CC CC B00 FE FF FF FF C2 CC CC CC CC CC CC CC CC CC B04 00 8 3 8 C09 CC CC CC CC CC CC CC CC B00 00 00 3 8 C01 CC CC CC CC CC CC CC CC CC B00 FD FF FF FF C00 00 3 CC CC CC CC CC CC CC CC 8B 2C 04 00 8D 4 D24 04D 8 F81 6 F8 82 7F 81 1B 60 C4 C15 CC CC CC CC CC CC CC CC CC CC CC CC 0B 23C 1 3 8B C4 24 04 CF 8F FE 1 C35 45 BA 3D C23 1 C25 CC CC CC CC CC CC CC CC CC CC CC 3B 5C 05 3 B8 4F CD 24 AE F04 E8 C1 EA 98E 7 D1 FA C1 D1 69D 2 9B F6 5B F56 B8 1 2 2A 8 F25 E95 2B C16 7B C1 D8 E1 2 C2 C1 E8 03C 2 C1 8 1 69 0D 84B C33 73B C1 2 F8 8 1 85 D6 F74 F06 33B C2 7E 6B 8C 2 5 8B D4 24D 04 D8 1D 8 F81 6 F8 82 7F

Mapeo en un problema de ML

Entonces, dados los archivos, tenemos que clasificar una de las nueve clases, lo que nos permite convertirlo primero en el problema de aprendizaje automático adecuado.

Así que es el problema de clasificación multiclase.

Para las métricas de rendimiento de este problema, que usamos es la pérdida de registro multiclasey también utilizamos métricas de precisión y recuperación, que dan una mejor idea de cómo son nuestros modos, precisos.

Asignación al problema de ML
Fuente medium.com 

La pérdida de registro multiclase devuelve la probabilidad de cada clase.

Para obtener más información sobre el registro, la pérdida haga clic aquí.

EDA

Así que en esta sección realizaremos un montón de EDA (análisis exploratorio de datos) operaciones.

Así que vamos a hacer EDA. Entonces, lo primero que hacemos aquí es separar los archivos de bytes de los archivos ASM. este problema son los conjuntos de datos desequilibrados, por lo que primero estamos trazando histogramas en las etiquetas de clase.

AED | Detección de malware de Microsoft
Fuente Perfil de GitHub del autor

A partir de este histograma de la etiqueta de clase, podemos decir que la clase 5 tiene muy pocos puntos de datos, y las clases 2 y 3 tienen una buena cantidad de puntos de datos disponibles.

Extraer función de archivos .bytes

Así que primero mire un archivo de bytes y haga algunos ingeniería de características

Aquí, primero observamos el tamaño del archivo como una característica y trazamos un diagrama de caja para comprender si esta característica es útil o no para determinar las etiquetas de clase, si todos los diagramas de caja de etiquetas de clase se superponen entre sí, entonces podemos decir que este tamaño de archivo es un característica no es útil.

Detección de malware de Microsoft
Fuente Perfil de GitHub del autor

A partir del diagrama de caja, podemos decir que la función de tamaño de archivo es útil para determinar la etiqueta de clase.

Entonces, nuestras segundas cosas de extracción de características son las siguientes:

Sabemos que los archivos de bytes contienen valores hexadecimales y los valores hexadecimales se encuentran entre 00 y FF, por lo que tomamos todos los valores hexadecimales como valores de entrada o características.

00,01,02,03,04,05,06,07,08,09,0a,0b,0c,0d,0e,0f,10,11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,1e,1f,20,21,22,23,24,25,26,27,28,29,2a,2b,2c,2d,2e,2f,30,31,32,33,34,35,36,37,38,39,3a,3b,3c,3d,3e,3f,40,41,42,43,44,45,46,47,48,49,4a,4b,4c,4d,4e,4f,50,51,52,53,54,55,56,57,58,59,5a,5b,5c,5d,5e,5f,60,61,62,63,64,65,66,67,68,69,6a,6b,6c,6d,6e,6f,70,71,72,73,74,75,76,77,78,79,7a,7b,7c,7d,7e,7f,80,81,82,83,84,85,86,87,88,89,8a,8b,8c,8d,8e,8f,90,91,92,93,94,95,96,97,98,99,9a,9b,9c,9d,9e,9f,a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,aa,ab,ac,ad,ae,af,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,ba,bb,bc,bd,be,bf,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,ca,cb,,cf,d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,da,db,dc,dd,de,df,e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,ea,eb,ec,ed,ee,ef,f0,f1,f2,f3,f4,f5,f6,f7,f8,f9,fa,fb,fc,fd,fe,ff

Aplicar una función de píxel en archivos de bytes

Aquí píxel básicamente significa que tomamos cada archivo y lo convertimos en una imagen y luego usamos los primeros 100 píxeles de la imagen como valor de entrada.

Referir: más sobre eso

Perfil de GitHub | Detección de malware de Microsoft
Fuente Perfil de GitHub del autor

Función de codificación

Ahora tenemos funciones. Para codificar una función, aplicamos un bi-grama ARCO (bolsa de palabras), Primero entendamos BOW,

Entonces, BOW significa que tomamos cada archivo de bytes y simplemente contamos cuántas veces ocurren nuestras características 00, 01, 02... y bi-grama significa que tomamos las características y las convertimos en un par de características 00 01, 01 02, 02 03... y luego contamos cuantas veces ocurre.

Para saber más sobre INCLINARSE.

Análisis multivariante en características de archivos .bytes

T-SNE es básicamente una técnica de reducción de dimensiones, así que primero, tomamos todos los datos y los convertimos en 2 dimensiones porque al usar T-SNE tenemos una idea al respecto, nuestra función es útil para clasificar las etiquetas de clase o no.

Función de codificación
Fuente Perfil de GitHub del autor

Desde el T-SNE podemos decir que nuestras características son útiles para clasificar las etiquetas de clase.

Aplicar modelo ML en archivos .bytes

1 Aplicar un modelo aleatorio

Sabemos que nuestra matriz de evaluación es una pérdida logarítmica, y los valores de pérdida logarítmica se encuentran entre [0, infinito].

Para encontrar el valor más alto de pérdida de registro en nuestros datos, usamos un modelo aleatorio y encontramos una pérdida de registro de prueba y entrenamiento.

Modelo aleatorio de la siguiente manera:-

Primero, tomamos nuestros datos y predecimos las etiquetas de clase al azar, y también tenemos una etiqueta de clase real y aplicamos una pérdida de registro multiclase y encontramos el valor de la pérdida de registro multiclase en datos cv (validación cruzada), y el valor es 2.45.

Este valor es el peor valor para nosotros, por lo que debemos tratar de minimizar la pérdida de registro tanto como podamos.

2 Aplicar KNN (Clasificación de vecino más cercano K) en archivos de bytes

Aquí aplicamos un KNN en nuestro conjunto de datos que es un método basado en la vecindad, esto es para tomar un punto vecino K y predecir las etiquetas de clase.

Las pérdidas del tren y la prueba son 0.078 y 0.245, aquí las diferencias entre las pérdidas del tren y la prueba son muy altas, por lo que podemos decir que nuestro modelo se está sobreajustando en los datos del tren.

Al observar la precisión, podemos decir que todos los datos están bien clasificados para todas las clases, excepto la clase 5, porque tenemos una cantidad muy inferior de puntos de datos que pertenecen a la clase 5.

3. Aplicar una regresión logística en archivos de bytes

Aplicamos una regresión logística sobre el archivo .bytes.

Las pérdidas de tren y prueba son 0.1918 y 0.3168

Al observar una pérdida de registro del tren, los datos de prueba se sobreajustan un poco a los datos.

Pero no se clasifican todos los puntos de datos. a partir de la precisión, podemos decir que esto no predice la clase 5 debido a la menor cantidad de datos.

4 Aplicar bosque aleatorio en archivos de bytes

Aquí aplicamos un RF a los datos de bytes y funciona bien.

Las pérdidas de tren y prueba son 0.0342 y 0.0971

A partir de la precisión, podemos decir que casi todas las etiquetas de clase se predicen para la clase 5.

Y a partir del recuerdo, podemos decir que esa es la clasificación correcta para la etiqueta casi de clase. y mirando desde la pérdida de registro, está bien ajustado.

5 Aplicar XGBoost en archivos de bytes

Ahora aplicamos un XGBoost en los datos, que es una técnica basada en un modelo de conjunto.

Para más información haga clic aquí.

Las pérdidas de tren y prueba son 0.022 y 0.079, esta pérdida es bastante buena que otros modelos.

A partir de la precisión, podemos decir que se predice que casi todas las etiquetas de clase son correctas, incluso para la clase 5.

Y del recuerdo, podemos decir que esa es la clasificación correcta para la etiqueta casi de clase.

Extraer función de archivos .asm

Ahora extraemos la función del archivo .asm. Todos los archivos ocupan unos 150 GB.

Aquí extrajimos Funciones 52 de todos los archivos .asm que son importantes.

Este archivo contiene registros, palabras clave, códigos de operación, prefijos de estas 4 partes del archivo. Extraemos un total de 52 funciones e incluimos el tamaño del archivo como una función, por lo que en total tenemos 53 funciones aquí.

 prefijos = ['HEADER:','.text:','.Pav:','.idata:','.data:','.bss:','.rdata:','.edata:', '.rsrc:','.tls:','.reloc:','.BSS:','.CODE'] códigos de operación = ['jmp', 'mov', 'retf', 'push', 'pop ', 'xor', 'retn', 'nop', 'sub', 'inc', 'dec', 'add', 'imul', 'xchg', 'or', 'shr', 'cmp', 'call', 'shl', 'ror', 'rol', 'jnb','jz','rtn','lea','movzx'] palabras clave = ['.dll','std::', ':dword'] registros=['edx','esi','eax','ebx','ecx','edi','ebp','esp','eip']

Distribución de tamaños de archivo .asm

Ahora trazamos un diagrama de caja de un tamaño de archivo para comprender si esta característica es útil o no para determinar las etiquetas de clase.

Diagrama de caja | Detección de malware de Microsoft

Fuente Perfil de GitHub del autor

Del diagrama de caja, podemos decir que el tamaño del archivo como característica es útil para clasificar nuestros datos.

Análisis multivariante en características de archivos .asm

Para el análisis multivariado, usamos el mismo concepto que usamos en los archivos de bytes, aquí aplicamos un TSNE para verificar si estas 53 características son útiles para separar los puntos de datos o no.

Fuente Perfil de GitHub del autor

De la gráfica, hay muchos grupos para las diferentes clases, por lo que podemos decir que sí, estas características son útiles para separar las etiquetas.

Aplicar el modelo en archivos .ASM

1 Aplicar un modelo aleatorio en archivos asm:-

Aquí sabemos que nuestra matriz de rendimiento es una pérdida de registro multiclase, por lo que sabemos que los valores de pérdida de registro se encuentran entre (0, infinito] aquí conocemos el valor bajo pero no conocemos un valor alto, usando un modelo aleatorio encontramos un valor alto de pérdida de registro.

Por lo tanto, la pérdida logarítmica en los datos de prueba para el modelo aleatorio es 2.493.

2 Aplicar KNN (Clasificación de vecino más cercano K) en archivos asm

Aquí aplicamos un KNN en nuestro conjunto de datos que es una técnica de base de vecindario, esto es para tomar un punto vecino K y predecir las etiquetas de clase.

Las pérdidas de tren y prueba son 0.0476 y 0.089, aquí las diferencias de pérdida de tren y prueba son muy altas, por lo que podemos decir que nuestro modelo se está sobreajustando en los datos del tren.

Al observar la precisión, podemos decir que todos los datos están bien clasificados para todas las clases, excepto la clase 5, porque tenemos una cantidad muy pequeña de puntos de datos que pertenecen a la clase 5.

3. Aplicar una regresión logística en archivos ams

Aplicamos una regresión logística sobre el archivo .asm.

Las pérdidas de tren y prueba son 0.781 y 0.742

La observación de una pérdida de registro del tren, datos de prueba, está bien ajustada.

Pero no se clasifican todos los puntos de datos. a partir de la precisión, podemos decir que esto no predice la clase 5 debido a la menor cantidad de datos.

Y desde el recuerdo, no está clasificado como la etiqueta de clase correcta para las clases 5, 6, 7 y 9.

4 Aplicar bosque aleatorio en archivos de bytes

Aquí aplicamos una RF a los datos y funciona muy bien.

Las pérdidas de tren y prueba son 0.0271 y 0.0462

A partir de la precisión, podemos decir que se predice que casi todas las etiquetas de clase son correctas, incluso para la clase 5.

Y del recuerdo, podemos decir que esa es la clasificación correcta para la etiqueta casi de clase.

Y mirando desde la pérdida de registro, está bien ajustado

5 Aplicar XGBoost en archivos de bytes

Aquí aplicamos un XGBOOST a los datos y funciona muy bien.

A partir de la precisión, podemos decir que se predice que casi todas las etiquetas de clase son correctas, incluso para la clase 5.

Las pérdidas de tren y prueba son 0.0241 y 0.0371

Y del recuerdo, podemos decir que esa es la clasificación correcta para la etiqueta casi de clase.

Y mirando desde la pérdida de registro, está bien ajustado, y esto también es mejor que un modelo de RF.

modelo definitivo

Ahora fusionamos ambos archivos .asm y .bytes y aplicamos el modelo que funciona mejor en archivos individuales y aquí el mejor modelo es XGboost.

Aquí tenemos un total de 66k funciones y esta es una tarea muy desafiante para mí, primero, aplicamos un TSNE porque me da una idea de qué tan buenas son estas funciones para separar las etiquetas.

Fuente Perfil de GitHub del autor

Ahora podemos decir que todas estas características son muy útiles para la separación de datos.

Aquí hicimos una multivariante en esta función de archivos .asm y bytes, por lo que aplicamos un T-SNE en estos datos con los diferentes valores de perplejidad y podemos observar el buen grupo de

Por lo tanto, aquí podemos que esta función sea útil para separar los puntos de datos.

Random Forest Classifier sobre características finales

Aquí aplicamos una RF a los datos finales y funciona

Las pérdidas de tren y prueba son 0.03143 y 0.09624

A partir de la precisión, podemos decir que casi todas las etiquetas de clase se predicen para la clase 5.

Y a partir del recuerdo, podemos decir que esa es la clasificación correcta para la etiqueta casi de clase.

Y mirando desde la pérdida de registro, está bien ajustado. por lo tanto, podemos decir que RF funciona muy bien para nuestros datos.

LGBMClassifier sobre características finales

Aquí sabemos que para ambos archivos nuestro modelo ganador es XGBOOST, pero en la función final, aplicamos lightgbm porque nuestro tiempo de cálculo de xgboost es muy alto y lightgbm es un poco más rápido que xgboost, por lo que aplicamos LGBM aquí y ambos hacen lo mismo.

Aquí aplicamos un LGBM a los datos finales y funciona

A partir de la precisión, podemos decir que casi todas las etiquetas de clase se predicen para la clase 5.

Y from puede decir que esa es la clasificación correcta para la etiqueta casi de clase.

Y mirando desde la pérdida de registro, está bien ajustado, y esto es mejor que un modelo de RF. y tenemos una pérdida de prueba de 0.01 aquí, por lo tanto, LGBM/XGBOOST está trabajando en nuestros datos.

Comparar modelo

Comparar modelo | Detección de malware de Microsoft
Fuente Perfil de GitHub del autor

Conclusión

1. Primero, los datos proporcionados son datos de malware de Microsoft, y nuestra tarea es clasificar el archivo dado a qué tipo de malware pertenece. aquí en datos, tenemos 9 tipos de detección de malware de Microsoft disponibles.

2. En nuestros datos están presentes 2 tipos de archivos, el primero es un archivo .bytes y el segundo es un archivo .asm.

A. En los archivos de bytes, contienen valores hexadecimales

B. Y en el archivo .asm, contienen algunas palabras clave especiales como pop, push, etc.

3. Aquí primero descomprimimos los datos y separamos ambos tipos de archivos, y este tamaño de datos es de aproximadamente 200 GB. así que es algo muy desafiante aquí para nosotros.

4. Aquí nuestro enfoque es primero analizamos los archivos .bytes y luego vamos a analizar los archivos .asm.

5. Primero tomamos un archivo .bytes y sabemos que contiene un valor hexadecimal y los valores hexadecimales se encuentran entre 00 y FF, por lo que aplicamos un bigrama simple BOW y hacemos un conteo simple aquí para cada archivo, y también aplicamos un función de píxeles, lo que significa que primero convertimos cada archivo en una imagen y tomamos los primeros 100 píxeles.

6. Sabemos que el valor mínimo de pérdida de registro es 0 y el valor máximo es infinito, por lo que primero, construimos un modelo aleatorio y encontramos la pérdida de registro máxima.

7. Después del modelo aleatorio, construimos un modelo diferente como LR, RF, KNN, xgboost, y verificamos qué modelo ofrece una pérdida logarítmica baja.

8. Ahora tomamos el archivo .asm y encontramos algunas 53 palabras clave especiales que son muy importantes para el archivo .asm.

9. Aquí también aplicamos un modelo diferente como KNN, LR, RF, etc.

10. Ahora combinamos ambas funciones de archivo y aplicamos RF y XGBOOST/LGBM.

11. Usando un XGBOOST/LGBM, obtuvimos una pérdida de prueba de 0.01.

Espero que hayas disfrutado mi artículo sobre la detección de malware de Microsoft. Si tienes alguna duda, comenta abajo. Leer más artículos sobre Analytics Vidhya blog.

Referencia

https://towardsdatascience.com/malware-classification-using-machine-learning-7c648fb1da79

https://www.kaggle.com/c/microsoft-malware-prediction

https://www.appliedaicourse.com

Conectate conmigo

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor. 

Fuente: https://www.analyticsvidhya.com/blog/2022/01/microsoft-malware-detection/

punto_img

Información más reciente

punto_img

Habla con nosotros!

¡Hola! ¿Le puedo ayudar en algo?