Universidad Politécnica de Madridoa.upm.es/64465/1/TESIS_MASTER_JOSE_ANTONIO_QUEVEDO... · 2020....
Transcript of Universidad Politécnica de Madridoa.upm.es/64465/1/TESIS_MASTER_JOSE_ANTONIO_QUEVEDO... · 2020....
Universidad Politécnica de Madrid
Máster Universitario en Ciberseguridad
Trabajo de Fin de Máster
DESARROLLO DE UN MODELO DE CLASIFICACIÓN DE MALWARELINUX ARM SEGÚN SU FUNCIONALIDAD UTILIZANDO TÉCNICAS
DE APRENDIZAJE AUTOMÁTICO
Autor: Jose Antonio Quevedo Muñoz
Madrid, 29 de junio de 2020
Trabajo de Fin de Máster
Título: Desarrollo de un modelo de clasificación de malware Linux ARM según su fun-cionalidad utilizando técnicas de aprendizaje automático.
Autor: Jose Antonio Quevedo Muñoz
Director: Luis Miguel Pozo Coronado
Escuela Técnica Superior de Ingenieros de Telecomunicación
Escuela Técnica Superior de Ingeniería y Sistemas de Telecomunicación
Escuela Técnica Superior de Ingenieros Informáticos
Escuela Técnica Superior de Ingeniería de Sistemas Informáticos
TRIBUNAL:
PRESIDENTE:
VOCAL:
SECRETARIO:
Fecha de lectura:
Calificación:
Fdo. El secretario del tribunal
Resumen
Resumen —
En este proyecto se han aplicando técnicas de aprendizaje automático supervisado sobre un conjuntode ficheros ejecutables Linux de arquitectura ARM con el objetivo de predecir su funcionalidad partiendode las hipótesis de que las muestras son malware.
Como verdad fundamental se ha tomado el etiquetado obtenido de cada muestra de VirusTotal, queproporciona la interpretación de 63 antivirus, las cuales han sido unificadas con AVClass. Esta verdadfundamental se describe como una variable objetivo discreta multiclase.
Se han generado los informes de análisis estático y dinámico de cada muestra utilizando la herramientaLiSa. Estos informes han sido preprocesados a modo de bolsa de palabras o bag-of-words, elaborandoasí una lista con todas las palabras que aparecen en cada uno de estos informes junto con su número deapariciones.
La selección de características se ha hecho eliminando en primer lugar las palabras con menor númerode apariciones para evitar la identificación individual de las muestras por parte de los modelos y parareducir el coste computacional del procedimiento. Despues se ha aplicado un filtro TFIDF y se hanescogido las k-mejores características utilizando el filtro específico para clasificación χ2. Estos procesosde filtrado de características se han hecho sobre el subconjunto de entrenamiento para evitar fugas dedatos, lo que nos llevaría a resultados irreales.
Con este dataset se han entrenado, medido y comparado 42 combinaciones de técnicas de muestreoy modelos de clasificación. La conclusiones más destacables han sido que ninguna de las técnicas demuestreo ha supuesto una ventaja para clasificar malware en este contexto, y que aunque ninguno delos modelos obtenidos tiene capacidad de aportar información relevante en una aplicación real, el modeloque mejor comportamiento ha mostrado y con mejores posibilidades de obtener resultados satisfactoriosen futuros proyectos es la red neuronal.
Palabras clave — aprendizaje automático supervisado, clasificación de malware, etiquetado,análisis estático, análisis dinámico, LiSa, VirusTotal, AVclass, Linux, Debian, ARM, IoT, selección decaracterísticas, tfidf, sandbox.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
i
Abstract
Abstract —
In this project, supervised machine learning techniques have been applied to a set of Linux executablefiles of ARM architecture with the aim of predicting what type of malware it is based on the initialhypothesis that the samples are malware.
As a fundamental truth, we have taken the labeling obtained from each VirusTotal sample, whichprovides the interpretation of 63 antivirus programs and have been unified with AVClass.
Static and dynamic analysis reports have been generated for each sample using the LiSa tool. Thesereports have been pre-processed as “bag-of-words”, thus compiling a list of all the words that appear ineach of these reports along with their number of occurrences.
Feature selection has been made by first eliminating the words with the fewest occurrences to avoidthe individual identification of the samples by the models and to reduce the computational cost of theprocedure. Then a TFIDF filter has been applied and the k-best characteristics have been chosen usingthe specific filter for classification chi2. These feature filtering processes have been done on the trainingsubset to avoid data leaks, which would lead to unrealistic results.
With this dataset 42 combinations of sampling techniques and classification models have been trained,measured and compared. The most important conclusions have been: no sampling technique has been anadvantage classifying malware in this context, and although none of the obtained models were able toprovide useful information in a real scenario, the algorithm that showed the best behaviour and the bestpossibilities to obtain a satisfaying result in futures projects was the Neural Network.
Key words — supervised machine learning, malware classification, tagging, static analysis, dynamicanalysis, LiSa, VirusTotal, AVClass, Linux, Debian, ARM, IoT, feature selection, tfidf, sandbox.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
iii
Índice general
1. Introducción 11.1. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2. ARM - Internet of Things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3. Naturaleza del malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Tecnologías utilizadas 52.1. Debian GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2. LiSa: Linux Sandbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3. VirusTotal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1. AVClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4. Python 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.5. Scikit-Learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.6. Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.7. Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.7.1. Gitflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.8. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.9. Latex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.9.1. Texstudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3. Estado del Arte 113.1. Análisis de malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1. Análisis estático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.1.2. Análisis dinámico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2. Malware en Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.1. Motores antivirus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3. Lenguajes de programación para aprendizaje automático . . . . . . . . . . . . . . . . . . . 153.4. Estudios previos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4. Marco teórico 194.1. Aprendizaje automático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.1. Tipos de aprendizaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2. Manejo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2.1. Fugas de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.3. Selección de características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3.1. Filtro de características excesivamente específicas . . . . . . . . . . . . . . . . . . . 244.3.2. Filtro de características duplicadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.3.3. Filtro TF-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4. Técnicas de muestreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.4.1. Sobremuestreo - Oversampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.4.2. Submuestreo - Undersampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.4.3. Combinaciones de sobremuestreo y submuestreo . . . . . . . . . . . . . . . . . . . 27
4.5. Modelos algorítmicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
v
ÍNDICE GENERAL
4.5.1. Naïve Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.5.2. KNN - K Nearest Neighbors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.5.3. AdaBoost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5.4. Árbol de Decisión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.5.5. Bosque Aleatorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.5.6. Red Neuronal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.6. Matriz de Confusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.7. Métricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.7.1. Seleccionar la métrica más adecuada . . . . . . . . . . . . . . . . . . . . . . . . . . 314.7.2. Medias para clasificación multiclase . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5. Metodología y diseño 335.1. Requisitos software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.2. Requisitos funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2.1. Obtención de reportes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.2.2. Cliente de LiSa y VirusTotal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.2.3. Herramienta de entrenamiento y evaluación de modelos . . . . . . . . . . . . . . . 35
5.3. Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355.3.1. Fase 1: Elección del dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365.3.2. Fase 2: Herramientas a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.3.3. Fase 3: Análisis estático y dinámico . . . . . . . . . . . . . . . . . . . . . . . . . . 395.3.4. Fase 4: Preprocesado, particionado de dataset y matriz de características . . . . . 405.3.5. Fase 5: Selección de características - Filtros . . . . . . . . . . . . . . . . . . . . . . 435.3.6. Fase 6: Entrenamiento y validación de modelos . . . . . . . . . . . . . . . . . . . . 455.3.7. Fase 7: Análisis crítico sobre los resultados obtenidos . . . . . . . . . . . . . . . . . 46
6. Manual de uso 476.1. Fase 0: obtención de las muestras ELF ARM. . . . . . . . . . . . . . . . . . . . . . . . . . 476.2. Fase 1: obtención de los informes de los ficheros ELF ARM. . . . . . . . . . . . . . . . . . 48
6.2.1. Envío de muestras a LiSa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.2.2. Obtención de reportes malware de LiSa . . . . . . . . . . . . . . . . . . . . . . . . 486.2.3. Envío y obtención de informes VirusTotal . . . . . . . . . . . . . . . . . . . . . . . 49
6.3. Fase 2: obtención de las repeticiones de palabras. . . . . . . . . . . . . . . . . . . . . . . . 496.4. Fase 3: Selección de características. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.5. Fase 4: Muestreo, entrenamiento y validación de los modelos. . . . . . . . . . . . . . . . . 50
7. Conclusiones 51
8. Lineas futuras 53
Bibliografía 55
Apéndices 59
A. Anexos 61A.1. Formato de informe LiSa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61A.2. Tablas de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.2.1. Tabla de resultados - media Ponderada . . . . . . . . . . . . . . . . . . . . . . . . 66A.2.2. Tabla de resultados - media Micro . . . . . . . . . . . . . . . . . . . . . . . . . . . 67A.2.3. Tabla de resultados - media Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
A.3. Matrices de confusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69A.3.1. Muestreo: Ninguno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69A.3.2. Muestreo: Aleatorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
vi Trabajo Fin de Máster
ÍNDICE GENERAL
A.3.3. Muestreo: SMOTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75A.3.4. Muestreo: ADASYN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78A.3.5. Muestreo: CondensedNearestNeighbour . . . . . . . . . . . . . . . . . . . . . . . . 81A.3.6. Muestreo: SMOTENN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84A.3.7. Muestreo: SMOTETomek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
A.4. Código fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
vii
Índice de figuras
1.1. Causas de los ciberincidentes [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2. Cuota de mercado global de Sistemas Operativos [10] . . . . . . . . . . . . . . . . . . . . . 31.3. Histórico de cuota de mercado ARM [11]. . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4. Cuota de mercado de sistemas empotrados en 2017 [12]. . . . . . . . . . . . . . . . . . . . 3
3.1. Productos con mayor número de vulnerabilidades en la historia del software en 2020 [20]. 143.2. Productos con mayor número de vulnerabilidades en 2019 [20]. . . . . . . . . . . . . . . . 143.3. Tabla comparativa de Antivirus [21]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4. Infografía de lenguajes y librerías de aprendizaje automático [22]. . . . . . . . . . . . . . . 163.5. Precisión reportada por trabajos previos de clusterización [40]. . . . . . . . . . . . . . . . 18
4.1. Forma de una matriz de confusión binaria[48] . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1. Flujo de trabajo de aprendizaje automático supervisado [50] . . . . . . . . . . . . . . . . . 36
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
ix
Índice de tablas
5.1. Cantidad y proporción de muestras en dataset . . . . . . . . . . . . . . . . . . . . . . . . . 37
A.1. Tabla de resultados - Media: Ponderada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66A.2. Tabla de resultados - Media: Micro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67A.3. Tabla de resultados - Media: Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
xi
1Introducción
Llamamos malware a aquel fichero que al ser utilizado en un computador produce en el sistema efectos
no deseados por el usuario que lo utilizó. El malware es capaz de robar datos, invadir la privacidad,
suplantar la identidad, realizar fraude, extorsión, interrupción de servicios, etc.
Actualmente su principal vía de transmisión es internet. Entre los mecanismos más eficaces de
distribución encontramos el correo electrónico, las redes sociales con ayuda de la ingeniería social, la
interceptación y manipulación de los datos que un usuario pueda intercambiar con una entidad de su
confianza, etc. En definitiva, en la mayoría de los casos a través del engaño al usuario.
La aparición de las redes sociales, el auge de los sistemas distribuidos y el IoT Internet of Things (IoT)
son factores que hacen que la seguridad digital sea una preocupación que afecta a la sociedad a todos
los niveles. Se estima que actualmente hay un 55% de la población con posibilidad de acceso a internet,
un 53% de usuarios activos en la red y un 42% de usuarios activos en redes sociales [1]. El malware
se ha convertido a día de hoy en una de las principales amenazas para gobiernos, empresas e usuarios
individuales debido a la gran penetración que tiene internet en la sociedad a nivel mundial [2] y a las
consecuencias que una vulnerabilidad digital o el descuido de un usuario puede causar.
El número de incidentes de ciberseguridad en el mundo va en aumento y su impacto en la sociedad es
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
1
CAPÍTULO 1. INTRODUCCIÓN
innegable. En España el número de incidentes de ciberseguridad gestionados por el CNI-CERT creció un
43% en 2018 respecto al año anterior. En Europa el coste medio de un ciberataque para una PYME se
estima en 35.000€, lo cual está haciendo que el 60% las empresas europeas que reciben un ciberataque
desaparezcan durante los 6 meses siguientes a haberlo recibido [3]. Y a nivel mundial el coste de los
ciberataques se estima en un 0,85% del PIB anual.
Figura 1.1: Causas de los ciberincidentes [4]
Desde el año 2014 el descenso de la cantidad anual de nuevo malware contrasta con el aumento de los
ataques por malware [5], lo cual indica que el nuevo malware es cada vez más sofisticado y destructivo
[6] [7]. Esto hace necesario anticiparse a estas nuevas amenazas con la aplicación de tecnologías que nos
permitan detectar ataques que se presenten en formas a día de hoy aún desconocidas.
1.1. Linux
El sistema de distribución de software que ofrece Linux goza de una gran reputación debido a la
confiabilidad de sus mecanismos organizativos y criptográficos. Puede que este sea uno de los motivos
por los que haya una idea muy extendida de que en Linux no hay malware, y es que llama la atención el
bajo número de estudios sobre malware de Linux comparado con otros sistemas operativos.
Aunque es cierto que las características de diseño de Linux dificulta la labor de un atacante, pero
tambien es cierto que el kernel de Linux fue en el año 2017 el segundo software con mayor número de
vulnerabilidades críticas sólo por detrás de Adobe Flash, también disponible en esta plataforma.
Según Marketshare, en la historia reciente el sistema operativo más instalado en los ordenadores
domésticos y corporativos de todo el mundo ha sido Microsoft Windows, motivo por el cual puede haber
sido el sistema operativo más atacado, pero en los últimos años se ha visto incrementado el número de
este tipo de ataques sobre sistemas operativos de Linux y macOS. De hecho la cantidad de malware
detectado en 2018 en plataformas Linux ha sido de un 18% [8].
Linux cuenta con poco más del 1% del total de ordenadores activos y de un 2.5% de ordenadores
de escritorio en el mundo. Sin embargo en la actualidad lidera el mercado de supercomputadoras y
servidores de internet, y está aumentando su presencia en computadoras de escritorio, portátiles y equipos
2 Trabajo Fin de Máster
CAPÍTULO 1. INTRODUCCIÓN
empotrados, equipamiento de red, videojuegos, smartphones y tablets [9].
Figura 1.2: Cuota de mercado global de Sistemas Operativos [10]
Con la aparición de los dispositivos móviles, la tendencia ha sido que los servicios se alberguen en la
nube y que cada usuario ejecute las aplicaciones en su móvil, o navegador web en el caso de Sistema
Operativo (SO) de escritorio, mientras que almacena sus datos en la nube.
Si un sistema operativo de un ordenador de escritorio o dispositivo móvil tiene una vulnerabilidad de
seguridad y un usuario malintencionado consigue el control de ese dispositivo, habrá conseguido acceder
a la información de una persona. Pero si un usuario malintencionado toma el control de un servidor o un
supercomputador habrá conseguido acceder a la información de todos los usuarios de todos los servicios
que se encuentren alojados en ese servidor o de un computador realmente potente.
Por lo tanto, dado que cada servidor es utilizado por miles o millones de personas, el impacto que
produce una única vulnerabilidad en estos sistemas los convierte en el primer y más importante punto a
proteger.
1.2. ARM - Internet of Things
Uno de los enfoques tecnológicos que más están llamando la atención en los últimos años es el Internet
de las Cosas o Internet of Things (IoT). Este concepto tecnológico está ligado a la tendencia de conectar
objetos cotidianos a la red para dotar de capacidad de control remoto, monitorizar el dispositivo, o hacer
que reaccione de manera automática a condiciones externas como la cantidad de luz solar, etc.
Figura 1.3: Histórico de cuota de mercado ARM [11].Figura 1.4: Cuota de mercado de sistemas empotra-dos en 2017 [12].
En este paradigma tecnológico son ARM y el sistema operativo Linux quienes dominan el mercado con
una cuota de mercado de un 33% y un 80% respectivamente. Estos son los motivos por los que se ha
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
3
CAPÍTULO 1. INTRODUCCIÓN
elegido este sistemas operativo y esta arquitectura para hacer este estudio.
1.3. Naturaleza del malware
Hasta hace poco la manera habitual de luchar contra el malware ha consistido en mantener un gran
conjunto de ejemplos con los que comparar cada fichero y así identificar los ficheros maliciosos [13]. Una
estrategia útil para no ser infectado por segunda vez pero ineficaz para amenazas de tipo Malware
Polimórfico, Malware Metamórfico y 0-Day. Alrededor del 30% del malware detectado en 2016 fue
clasificado como 0-day [14] y desde finales del 2017 a principios de 2019 se ha observado que el 94%
del malware es de tipo polimórfico [8]. Este dato confirma que la capacidad de los cibercriminales para
reempaquetar y modificar su malware automáticamente ha superado la habilidad de la industria para
conseguir con suficiente velocidad las firmas necesarias para detectar eficazmente el malware.
Ante esta situación contamos con la inteligencia artificial como la técnica que puede ayudar a detectar
malware actualmente desconocido, de manera similar al bloqueo del correo electrónico no deseado, el cual
se ha conseguido reducir en un 99,9% [15].
En el contexto de ataques dirigidos o avanzados, una vez hemos conseguido detectar el malware, lo que
interesa es saber qué pretendía conseguir el atacante para así neutralizar eficazmente la amenaza. Una
muestra detectada de malware solo representa un ataque que puede que haya tenido éxito o no. Esta
información solo podremos obtenerla a través de un análisis forense de malware.
El análisis forense de malware es una tarea de gran complejidad técnica en la que el forense se encuentra
ante la difícil tarea de averiguar qué pretenden hacer unas pocas líneas de código dentro de una ingente
cantidad de código ensamblador. Esto es comparable a buscar una aguja en un pajar que podría no estar
sin saber de antemano qué forma tendrá.
1.4. Objetivos
Con este proyecto pretendemos ahorrarle tiempo a un analista de malware dándole, si no la respuesta
definitiva, al menos sí una pista sobre qué tipo de malware está buscando.
El propósito principal de este proyecto es desarrollar un programa que, a través de la aplicación de
técnicas de aprendizaje automático, proporcione un modelo capaz de clasificar el tipo de malware al que
corresponde un fichero, suponiendo de antemano que dicho fichero es malware.
Somos conscientes de que obtener un modelo de clasificación perfecto es un resultado poco probable,
por lo que un resultado interesante de este trabajo será la validación de los modelos de manera que nos
permita saber cuales son los que mejor resultado ofrecen de cara a futuros proyectos.
4 Trabajo Fin de Máster
2Tecnologías utilizadas
2.1. Debian GNU/Linux
El proyecto Debian [16] es una asociación de personas que han hecho causa común para crear un SO
libre y Debian es el sistema operativo resultante. Los sistemas Debian actualmente usan el núcleo de Linux
o FreeBSD. Aunque lo más común es utilizarlo junto con el kernel Linux, actualmente se está trabajando
para ofrecer la distribución con otros núcleos, en especial Hurd, que consiste en una colección de servidores
que se ejecutan sobre un micronúcleo (como Mach) para implementar las distintas funcionalidades. Hurd
es software libre producido por el proyecto GNU.
Una gran parte de las herramientas básicas que completan el sistema operativo vienen del proyecto
GNU, de ahí los nombres: GNU/Linux, GNU/kFreeBSD, y GNU/Hurd.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
5
CAPÍTULO 2. TECNOLOGÍAS UTILIZADAS
2.2. LiSa: Linux Sandbox
El proyecto LiSa (Linux Sandbox) es un sistema modular de análisis estático y dinámico de malware de
Linux publicado bajo licencia Apache 2.0 y cuyo código está disponible en Github [17]. Sus características
más notables son que: devuelve los resultados en formato json para su posterior análisis manual, con
detección de patrones con herramientas como Yara o con inteligencia artificial para detectar y clasificar
malware de Linux. Soporta las arquitecturas x86_64, i386, arm, mips y aarch64 por medio de emulación
QEMU, cuenta con imágenes de sistema descargables construidas con buildroot, realiza análisis estático
con Radare2 y el análisis dinámico con los módulos de kernel SystemTap: captura de llamadas de sistema,
apertura de ficheros y árboles de procesos. Proporciona estadísticas de red y análisis de DNS, HTTP,
Telnet, e comunicación IRC. Escala utilizando Celery y RabbitMQ y proporciona dos interfaces: un API
REST y un frontend web, y es extensible a través de módulos de análisis e imágenes personalizadas.
2.3. VirusTotal
VirusTotal es una plataforma web que proporciona la posibilidad de analizar ficheros con una gran
cantidad de antivirus de una sola vez.
Es accesible via interfaz web y API REST.
En este proyecto lo hemos utilizado para generar los informes de malware que nos permiten saber qué
tipo de malware es cada muestra según los diferentes motores Antivirus que utiliza VirusTotal.
2.3.1. AVClass
AVClass es una herramienta de etiquetado de malware publicada en 2016 [18].
6 Trabajo Fin de Máster
CAPÍTULO 2. TECNOLOGÍAS UTILIZADAS
Partiendo de una colección de informes de malware procedentes de VirusTotal devuelve el nombre de
la familia de malware más probable para cada muestra que es capaz de extraer de las etiquetas recibidas.
Puede incluso mostrar un ranking de los nombres alternativos que encontró para cada muestra.
AVClass incluye dos funcionalidades: preparación y etiquetado. Aunque para el propósito de este
proyecto la funcionalidad más interesante es el etiquetado, que muestra el nombre de la familia de cada
muestra. La preparación produce una lista de alias y tokens genéricos utilizados por la funcionalidad de
etiquetado.
AVClass es útil porque a menudo los investigadores de seguridad quieren extraer la información de
la familia de malware de las etiquetas AV pero este procedimiento no es tan sencillo como parece,
especialmente para una gran cantidad de muestras.
Entre las ventajas de AVclass encontramos que es automático, independiente de los fabricantes de
antivirus, multiplataforma, no requiere los ejecutables sino únicamente sus informes, cuenta con una
precisión cuantificada y además es software de fuentes abiertas con licencia MIT.
Entre las limitaciones conocidas encontramos que su salida depende de las etiquetas AV recibidas
como entrada en sus informes. AVClass procura compensar el ruido en sus etiquetas de salida pero no
puede identificar el nombre de familia de una muestra si los motores antivirus proporcionan nombres no
genéricos a cada muestra. Concretamente no etiqueta una muestra si no hay al menos 2 motores antivirus
de acuerdo en un nombre de familia. AVClass fue capaz de etiquetar el 81% de las muestras sobre el
conjunto 8 millones de muestras de malware utilizado por sus autores para probar su efectividad.
Sopesando ventajas y limitaciones se ha considerado la combinación de AVClass y VirusTotal como una
opción adecuada para generar el etiquetado del malware que se utiliza en este proyecto por el porcentaje
de cobertura, la variedad de etiquetas, la precisión y concreción mostrada sobre el dataset utilizado.
2.4. Python 3
Python es un lenguaje de programación interpretado, multiparadigma y multiplataforma que usa tipado
dinámico y conteo de referencias para la administración de memoria y cuya filosofía hace hincapié en una
sintaxis que favorece la legibilidad del código.
Es administrado por la Python Software Foundation. Posee una licencia de código abierto denominada
Python Software Foundation License compatible con la GPL de GNU a partir de la versión 2.1.1.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
7
CAPÍTULO 2. TECNOLOGÍAS UTILIZADAS
2.5. Scikit-Learn
Scikit-learn es una librería de aprendizaje automático para el lenguaje de programación Python.
Implementa varios algoritmos de clasificación, regresión y clustering entre los que se incluyen máquinas
de vectores soporte, bosque de árboles aleatorios, k-means y DBSCAN, y ha sido diseñado para operar
con las librerías numéricas y científicas de python NumPy y SciPy.
2.6. Pandas
Pandas es una librería Python que proporciona estructuras de datos diseñadas para trabajar con datos
relacionales o etiquetados de una manera fácil e intuitiva. Su objetivo es ser un bloque funcional para
hacer práctica la utilización de datos reales en Python. El objetivo de sus desarrolladores es convertirse
en la herramienta opensource más potente y flexible de manipulación de datos en cualquier lenguaje.
2.7. Git
Es un software de control de versiones distribuido diseñado por Linus Torvalds, pensando en la eficiencia
y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de
archivos de código fuente. Su propósito es llevar registro de los cambios en archivos de computadora y
coordinar el trabajo que varias personas realizan sobre archivos compartidos.
8 Trabajo Fin de Máster
CAPÍTULO 2. TECNOLOGÍAS UTILIZADAS
2.7.1. Gitflow
Se ha utilizado Git siguiendo el flujo de trabajo Gitflow, tanto para
la gestión del código como para la redacción de la documentación
de la memoria.
Este flujo de trabajo consiste en crear una rama paralela a Master
llamada Develop.
La rama Develop se utiliza para que el equipo de trabajo mergee
las ramas de cada feature de desarrollo, y una vez que esté
estabilizada, se hayan resuelto los conflictos que pudiera existir y
pase todos los tests, se hace merge con la rama master para,
finalmente, obtener la versión release que se llevará a producción.
2.8. Emacs
Emacs es un editor de texto con una gran cantidad de funciones, muy popular entre programadores
y usuarios técnicos. GNU Emacs es parte del proyecto GNU y la versión más popular de Emacs con
una gran actividad en su desarrollo. El manual de GNU Emacs lo describe como “un editor extensible,
personalizable, auto-documentado y de tiempo real”.
El EMACS original significa, Editor MACroS para el TECO, y fue escrito por Richard Stallman junto
con Guy Steele en 1975.
2.9. Latex
LaTeX es un sistema de preparación de documentos para escritura de alta calidad. En su mayoría es
utilizado para documentos científicos o técnicos de tamaño medio o grande pero puede ser utilizado par
casi cualquier tipo de publicación.
LaTeX no es un procesador de texto. En su lugar anima a los autores a no preocuparse demasiado de
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
9
CAPÍTULO 2. TECNOLOGÍAS UTILIZADAS
la apariencia de sus documentos sino en concentrarse en enriquecer el contenido.
Se basa en la idea de que es mejor dejar el diseño a los diseñadores de documentos, y a los autores el
contenido de los mismos.
2.9.1. Texstudio
TeXstudio es un entorno de escritura integrado de
fuentes abiertas para la creación de documentos
LaTeX. Su objetivo es hacer que la escritura con
LaTeX sea tan fácil y cómoda como sea posible. Por
lo tanto, TexStudio tiene muchas características
como sintaxis resaltada, visor integrado, gestor de
referencias y varios asistentes.
10 Trabajo Fin de Máster
3Estado del Arte
Al revisar el estado del arte de cualquier trabajo de investigación debemos ser cuidadosos a la hora de
elegir las fuentes que utilizamos, ya que son estas las que fijan los conceptos sobre los que basamos el
trabajo. Y es que bien sea porque el artículo de investigación se publicó fuera de fecha sin tener en cuenta
los últimos resultados publicados o porque la metodología aplicada no haya sido del todo exhaustiva, el
resultado puede ser que se genere literatura con conclusiones erróneas [13].
Por eso en este trabajo se ha hecho especial hincapié en explicar qué se ha hecho y por qué. Se espera
que este enfoque resulte útil tanto para el lector novel, desde un punto de vista didáctico, como para el
lector experto para ayudarle a detectar cualquier tipo de error en el que se hubiera podido incurrir en
este estudio.
3.1. Análisis de malware
El análisis de malware es el estudio o proceso para determinar la funcionalidad, el origen y el impacto
potencial de una muestra determinada de malware [19]. Esta información es importante para que el
defensor sea capaz de mitigar el posible ataque que pudiera estar recibiendo en su sistema.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
11
CAPÍTULO 3. ESTADO DEL ARTE
Los métodos de detección de malware se pueden clasificar según el tipo de reconocimiento utilizado en
análisis estático y dinámico.
3.1.1. Análisis estático
El análisis estático se basa en estudiar el fichero sospechoso sin ejecutarlo. Es el tipo de detección de
malware más utilizado por los programas antivirus.
La detección de malware basado en firmas tiene dos métodos fundamentales: basado en extracción de
características binarias y basado en características ensamblador.
En el primer caso existen múltiples herramientas, como por ejemplo Radare2, útiles para extraer esta
información. En el segundo caso existen herramientas como IDA o Ghidra, esta última publicada por la
NSA en el año 2019, la cual permite traducir el código máquina en código ensamblador y, en algunos
casos, en código de alto nivel, el cual puede ser leído y comprendido por los humanos, con el que el
analista de malware puede dar sentido a las instrucciones de ensamblado y hacerse una idea más exacta
de lo que está haciendo el malware analizado. A su vez, para evitar que su malware sea descubierto, los
desarrolladores aplican técnicas para evadir este tipo de análisis, como por ejemplo incrustando errores de
código sintáctico que confundirán a los desensambladores pero que seguirán permitiendo el funcionamiento
del malware durante una ejecución real.
Ventajas
No requiere de una laboratorio especializado.
Las herramientas necesarias son fácilmente accesibles.
El riesgo es mínimo porque el programa no se ejecuta.
Requiere poca potencia de cómputo.
Desventajas del análisis estático
Para el mismo tipo de malware los resultados pueden ser muy distintos según el fichero infectado.
En términos de coste computacional es más económico que el análisis dinámico.
Suele producir una alta tasa de fallo en la detección de malware polimórfico y metamórfico.
Desventajas de las soluciones basadas en firmas
Para el malware conocido, el comportamiento de las soluciones antivirus tradicionales es predecible.
12 Trabajo Fin de Máster
CAPÍTULO 3. ESTADO DEL ARTE
Es poco eficaz contra malware polimórfico y metamórfico.
Es totalmente ineficaz para malware de tipo 0-Day.
A pesar de que la cantidad de nuevos tipos de malware se ha estancado en los últimos años, el alto
grado de polimorfismo y metamorfismo del malware está produciendo un crecimiento exponencial
de las bases de datos de muestras de malware.
3.1.2. Análisis dinámico
El análisis dinámico consiste en ejecutar el fichero y observar cómo se comporta el sistema en el cual
se ha ejecutado.
El malware se ejecuta típicamente en entornos simulados con técnicas de virtualización o similares.
Estos sistemas se caracterízan por estar aislados, controlados y ser replicables.
Una técnica de evasión habitual de este tipo de análisis consiste en detectar el tipo de máquina sobre
la que se está ejecutando el malware. Si el malware detecta que el equipo sobre el que se está ejecutando
cumple con ciertas características, como por ejemplo que es un sistema virtualizado o que posee una baja
cantidad de memoria RAM, disco duro, etc, este puede elegir ocultar su comportamiento maligno, lo que
dará lugar a un falso negativo en el análisis. Este es uno de los motivos por el cual el coste computacional
de este tipo de análisis sea más elevado que el estático, porque que para ser exitoso exige virtualizar un
entorno con todas sus características reales.
Ventajas
Proporciona información detallada sobre el comportamiento del malware.
Es un buen método para detectar malware tipo 0-day y polimórfico.
Desventajas
Requiere un entorno de pruebas especializado y cuidadosamente configurado.
Computacionalmente más caro que el análisis estático.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
13
CAPÍTULO 3. ESTADO DEL ARTE
3.2. Malware en Linux
Figura 3.1: Productos con mayor número de vulnerabilidades en la historia del software en 2020 [20].
A pesar de no ser el sistema operativo con mayor cuota de mercado, hay motivos por los que clasificar
malware para sistemas Linux:
por el crecimiento aumento de cuota de mercado en los últimos años en sistemas de escritorio,
por la importancia que tienen los sistemas que gobierna siendo el líder en servidores en internet y
en supercomputadores,
por la reciente adopción de Microsoft, líder en sistemas de escritorio, del kernel de Linux como
núcleo de sus sistemas,
porque es el sistema más utilizado en sistemas IoT,
porque el kernel de Linux es el productos software con más vulnerabilidades publicadas en la historia
del software.
Como se puede ver en la figura 3.2, las plataformas con mayor número de vulnerabilidad en 2019 han
sido las plataformas Android y la distribución de Debian GNU/Linux [5].
Figura 3.2: Productos con mayor número de vulnerabilidades en 2019 [20].
14 Trabajo Fin de Máster
CAPÍTULO 3. ESTADO DEL ARTE
3.2.1. Motores antivirus
Existe una amplia gama de antivirus para los SO basados en Linux.
Figura 3.3: Tabla comparativa de Antivirus [21].
Uno de las primeros datos que saltan a la vista es que el hecho de utilizar un antivirus de una casa
conocida y con licencia de pago no implica una alta tasa de detección como sucede con F-Prot, Comodo y
McAfee. Por otro lado, el hecho de que la herramienta sea de fuentes abiertas tampoco garantiza excelentes
resultados, ya que ClamAV obtiene un resultado que lo sitúa en la mitad de la tabla comparativa con
un 66% de acierto en la detección. Finalmente encontramos 7 soluciones con maś de un 95% de virus
detectados, de los cuales solo uno, Kaspersky Endpoint Security 8.0 for Linux, consigue el 100% de
detección en malware de Linux.
En el caso de las soluciones comerciales que no son de fuentes abiertas, no sabemos qué estrategia
han seguido para implementar la detección de virus. En el caso de ClamAV, al ser de fuentes abiertas,
sabemos que utiliza un sistema de análisis estático con reconocimiento de malware basado en firmas.
3.3. Lenguajes de programación para aprendizaje automático
Hemos considerado 3 lenguajes que hemos considerado que cuentan con un buen soporte para
aprendizaje automático: R, Python y Scala.
R es un lenguaje específicamente diseñado para el desarrollo estadístico y suele ser el favorito de los
programadores que proceden de entornos matemáticos. Cuenta con un conjunto de herramientas para
investigación reproducible. Es tan específico que puede no ser la elección óptima en caso de ser necesario
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
15
CAPÍTULO 3. ESTADO DEL ARTE
Figura 3.4: Infografía de lenguajes y librerías de aprendizaje automático [22].
resolver un caso de propósito general. Python es un lenguaje de propósito general que suele ser el escogido
por aquellos desarrolladores que provienen de otros entornos de programación. Scala es un lenguaje con
grandes capacidades en entorno clusterizados pero carece de las herramientas de visualización de datos
con las que sí cuentan Python y R. Tanto para Python como para R existe una cantidad de librerías y
un soporte parecido.
Para nuestro caso se ha elegido Python por tres motivos fundamentales: por sus capacidades de
visualización de datos, por contar con una amplia comunidad de desarrolladores y por ser el que ofrece
una curva de aprendizaje más rápida.
3.4. Estudios previos
Etiquetar un ejecutable malicioso como la variante de una familia conocida es importante en
aplicaciones de seguridad como mecanismos de desinfección, identificación de nuevas amenazas mediante
el filtrado de las ya conocidas, la atribución de ataques y linaje del malware [23].
Este etiquetado puede ser realizado manualmente por analistas o automáticamente por aplicaciones
de clasificación de malware utilizando aprendizaje automático supervisado [24] [25] [26], o a través de
aplicaciones de agrupación automática de malware seguido de un etiquetado manual [27] [28] [29] [30].
16 Trabajo Fin de Máster
CAPÍTULO 3. ESTADO DEL ARTE
Una de las aplicaciones del etiquetado de ejecutables es construir conjuntos de datos de referencia
que después son utilizados por investigadores para entrenar y evaluar diferentes modelos supervisados
de clasificación de malware. Esta metodología supone un problema de base ya que los clasificadores de
malware basados en aprendizaje automático supervisado se alimentan del etiquetado de los antivirus. Este
problema se ha pretendido solucionar construyendo conjuntos de datos de referencia usando etiquetas AV
[24] [26] [27] [28] [29]. Pero se sabe que las etiquetas AV son inconsistentes [27] [31] [32] [33].
En particular, distintos motores AV suelen asignar distintas etiquetas a la misma muestra maliciosa,
incluso con distinto código del nombre de familia debido entre otros a los siguientes motivos:
la falta de adherencia por parte de los fabricantes de malware a convenios de nomenclatura estándar
como CARO [34] y CME [35], implica que diferentes motores AV terminen asignando diferentes
nombres a la misma familia de malware,
el objetivo principal de un AV es la detección de malware, mientras que generar una clasificación
precisa y consistente parece ser una prioridad secundaria para este tipo de productos [36] [37],
la utilización de detecciones heurísticas o de comportamiento no específicas de una familia,
Aún a pesar de su conocida inconsistencia, los motores AV siguen siendo la fuente más común para
extraer etiquetas de malware. Esto probablemente ocurre porque en muchas ocasiones no hay otra verdad
fundamental disponible y porque las etiquetas AV suelen contener el nombre de la familia del malware
que el analista está buscando.
Fiabilidad del etiquetado AV
Como acabamos de ver, en el contexto de entrenamiento de modelos supervisados para clasificación
de malware, nos encontramos con que el proceso de extraer información precisa de la familia a la cual
pertenece una muestra maliciosa a partir de las etiquetas AV constituye un problema importante [23].
En primer lugar, algunos enfoques usan las etiquetas AV completas, lo cual es inexacto porque el
nombre de la familia comprende solo una fracción de la etiqueta. Por ejemplo, un motor AV puede usar
diferentes etiquetas para muestras en la misma familia, pero todavía asigne el mismo apellido en esas
etiquetas, como por ejemplo cuando use dos reglas de detección diferentes para la misma familia. Además,
también se da el caso en el que otras obras extraen el apellido de las etiquetas a través de un proceso
manual que no es detallado, y no manejan alias entre los apellidos. Este etiquetado no escala para grandes
cantidades de muestras.
En segundo lugar, se ha demostrado que ningún motor AV detecta todas las muestras y que el número
de motores AV necesarios para lograr una alta corrección en el apellido es mayor que para la detección
[32]. Para abordar estos problemas, es común recurrir al método de voto por mayoría entre un conjunto
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
17
CAPÍTULO 3. ESTADO DEL ARTE
de AV seleccionados, pero esto requiere seleccionar algunos fabricantes AV considerados mejores en el
etiquetado, cuando trabajos previos muestran que algunos fabricantes de AV pueden ser buenos para
etiquetar una familia pero pobre con otras [32]. Además, una mayoría en el voto no se puede alcanzar
en muchos casos, lo que significa que no es posible elegir un apellido para esas muestras y no se pueden
agregar a los datos de evaluación o capacitación [38]. En tercer lugar, cabe notar que centrarse en las
muestras donde la mayoría está de acuerdo puede sesgar los resultados hacia los casos fáciles [39]. Y por
último un comentario crítico en cuanto a otros y también este trabajo, se suele suponer que los resultados
del etiquetado AV corresponden a la verdad fundamental, lo cual no es necesariamente cierto y sería
conveniente evaluar la calidad de dichos datos.
Herramientas existentes
En la actualidad existen en el mercado multitud de herramientas de clasificación de malware, algunas
de las cuales consiguen valoraciones superiores al 90% de precisión y recall entre las que destacaremos
Malheur con una valoración F1 de 95% .
Figura 3.5: Precisión reportada por trabajos previos de clusterización [40].
18 Trabajo Fin de Máster
4Marco teórico
Dado que este proyecto versa sobre clasificación de malware nos centraremos especialmente en modelos
de clasificación.
4.1. Aprendizaje automático
Aprendizaje automático es la rama de la inteligencia artificial que permite a los ordenadores
aprender a hacer una tarea sin haber sido explícitamente programados para realizarla. Esto se consigue
proporcionando datos en forma de muestras a los modelos [41].
4.1.1. Tipos de aprendizaje
Según la salida que proporcionan
El aprendizaje automático puede ser supervisado o no supervisado.
Supervisado: Se caracterizan porque se conocen los valores de la variable respuesta para los datos
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
19
CAPÍTULO 4. MARCO TEÓRICO
de entrenamiento. Este tipo de algoritmos producen una función que establece una correspondencia
entre entradas y salidas del sistema. Parten de una experiencia o conocimiento previo representado
en el conjunto de datos por las características y su resultado conocido, sobre los que nos apoyamos
para hacer predicciones que a su vez nos ayudarán a tomar decisiones.
Ejemplo de este tipo de sistemas es un sistema de control del correo electrónico no deseado en el
cual el usuario indica qué correos electrónicos son spam, gracias a lo cual el sistema puede aprender
de dichas indicaciones para ser capaz de identificar correos similares en un futuro.
En el proceso de aprendizaje automático supervisado se dispone de un dataset formado por registros
o instancias en forma de vectores que describen la información correspondiente a cada muestra. Estos
vectores se agrupan de manera que cada variable o característica se encuentra formando columnas
con la misma variable o característica de cada vector y de esta manera se construye una matriz
cuyo índice de filas estará compuesto por los nombres o identificadores únicos de cada muestra y
su índice de columnas formado por los nombres de las características que describen las muestras.
A continuación se distinguen las variables predictoras X de la variable objetivo Y , y se divide el
conjunto de muestras típicamente en dos subconjuntos: entrenamiento y prueba. El subconjunto de
muestras de entrenamiento se utiliza para entrenar el modelo y el subconjunto de test se utiliza en
la última fase para evaluar la capacidad de clasificación del modelo construido. Las métricas más
comunes para realizar esta evaluación son: Precisión, Exactitud, Exhaustividad y F1.
La selección de características utilizadas para el entrenamiento del algoritmo en un entorno de
aprendizaje automático supervisado es fundamental para el óptimo funcionamiento del modelo.
Una selección inadecuada de las características ralentizará el aprendizaje o incluso hará que no
llegue a producirse nunca.
No supervisado: Es un método de aprendizaje automático donde los resultados del modelo se ajustan
a las observaciones. A diferencia del aprendizaje supervisado, no se parte de un conocimiento a
priori. Se caracteriza porque el algoritmo descubre de manera autónoma las características en los
datos de entrada: regularidades, correlaciones y categorías. Así el aprendizaje no supervisado trata
los objetos de entrada como un conjunto de variables aleatorias, construyendo así un modelo de
densidad para el conjunto de datos.
Un ejemplo de una aplicación interesante de estos algoritmos es la segmentación de clientes, donde
podemos agrupar los clientes en grupos a priori desconocidos de manera automática en función de
ciertas características comunes.
Algunos de los algoritmos de aprendizaje no supervisado más representativos son:
• K-means: es un método de agrupamiento cuyo objetivo es la partición de un conjunto de n
observaciones en k grupos en los que cada observación pertenece al grupo cuyo valor medio es
el más cercano.
20 Trabajo Fin de Máster
CAPÍTULO 4. MARCO TEÓRICO
• Detección de anomalías: consiste en detectar casos que no cumplen una cierta condición
de normalidad. La dificultad que entraña definir esta condición de normalidad hace que
esta técnica tienda a generar falsos positivos fácilmente. Existen dos tipos de detección de
anomalías: estadística y no estadística.
Semisupervisado: combinación de los anteriores, se tiene en cuenta datos marcados y no marcados.
Por refuerzo: su información de entrada es el feedback que obtiene como respuesta a sus acciones.
Se basa en el método de ensayo y error.
Transducción: similar al aprendizaje supervisado pero no construye una función como tal. Trata de
predecir categorías de los futuros ejemplos a partir de ejemplos ya dados.
Multitarea: usan el conocimiento previamente aprendido por el sistema, basándose en enfrentarse
a lo que ya ha visto previamente.
Según el tipo de tarea
Según el tipo de tarea, los tipos de aprendizaje automático se pueden agrupar en: tipo productivo
(clasificación y regresión) o tipo descriptivo (clustering y asociación).
Productivo:
• Clasificación: El objetivo es asignar los valores de clase a registros no clasificados a partir
de ejemplos de entrenamiento. La variable respuesta es de tipo categórica, es decir, toma un
conjunto finito de valores.
• Regresión: El objetivo es asignar un valor real al atributo de un registro a partir de los valores
del resto de los atributos del registro. La variable respuesta es cuantitativa y puede tomar
infinitos valores.
Descriptivo:
• Clustering: consiste en dividir el conjunto de registros en clusters, de manera que los registros
incluidos en cada cluster se caracterizan por su gran similitud o cercanía, mientras que entre
grupos hay una mayor distancia.
• Asociación: consiste en identificar relaciones no explícitas entre atributos categóricos de
registros no clasificados. Se pretende identificar aquellas relaciones que se establecen en función
de la ocurrencia conjunta de varios atributos.
Tipos de modelos
Los modelos creados se pueden clasificar como [42]:
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
21
CAPÍTULO 4. MARCO TEÓRICO
Geométricos: se construyen en el espacio de las instancias y pueden tener múltiples dimensiones.
Pueden tener un borde de decisión lineal entre varias clases.
Probabilísticos: intentan determinar la distribución de probabilidades descriptivas de la función que
relaciona los valores de los nuevos registros con unos valores determinados. Se aplica a aquellos casos
en los que la relación entre el conjunto de atributos y la categoría de la clase no es determinista.
Suele deberse al ruido o a la propia naturaleza de los valores. El más conocido es naïve Bayes,
que almacena como descripción conceptual la previa probabilidad de cada clase y la probabilidad
condicional de cada atributo dado por la clase.
Lógicos: expresan las probabilidades en reglas organizadas en formas de árboles de decisión.
Según su linealidad
Entre los modelos productivos, de clasificación y regresión, se distinguen por su linealidad dos subtipos:
Lineales: La función utilizada para predecir la variable respuesta a partir de las variables predictoras
es una aplicación lineal y las muestras son típicamente descritas por un vector de características.
Destacan por su velocidad de cómputo, especialmente cuando el vector x es disperso, aunque
los árboles de decisión pueden ser más rápidos. Además, los clasificadores lineales con frecuencia
funcionan muy bien cuando el número de dimensiones del vector x es grande, como en clasificación
de documentos, donde típicamente cada elemento en el vector x es el número de apariciones de una
palabra en un documento. En tales casos, el clasificador debe estar bien regularizado.
No lineales: Construyen superficies arbitrarias que permiten separar clusters muy cercanos o que
incluso se solapan.
4.2. Manejo de datos
Una vez tenemos la matriz de características que define las muestras que forman el dataset a analizar,
la manera correcta de manejar los datos es la siguiente:
1. Dividir las características que forman el conjunto de datos en subconjunto de características
predictoras X y características a predecir y.
2. Dividir las muestras que forman el conjunto de datos en subconjunto de muestras de entrenamiento
(Xtrain e ytrain) y subconjunto de muestras de test (Xtest e ytest),
3. El filtro de características se entrena utilizando únicamente las características predictoras del
subconjunto de entrenamiento Xtrain.
22 Trabajo Fin de Máster
CAPÍTULO 4. MARCO TEÓRICO
4. Una vez se ha entrenado el filtro, se aplica la transformación que produce a las características
predictoras de los subconjuntos de entrenamiento y test.
5. Entrenamiento del modelo elegido,
6. Prueba y evaluación del modelo elegido.
4.2.1. Fugas de datos
La fuga de datos, o data leakage, es la creación de información adicional e inesperable en un escenario
real en los datos de entrenamiento, permitiendo así parecer que un modelo de aprendizaje automático
es muy preciso sobre el subconjunto de pruebas, hasta que llega el momento de probarlo en la realidad,
momento en el cual se comprueba que es altamente impreciso. Estas fugas pueden ser producidos tanto
por fallos humanos como mecánicos.
Tipos de fugas de datos
Las fugas de datos suelen producirse tanto por una mala selección de las características predictoras
como por un manejo incorrecto de datos.
Debidas a una incorrecta selección de características predictoras:
Suceden cuando las características utilizadas para predecir los resultados contienen datos con los
que es imposible contar en el momento de hacer la predicción en un escenario real.
Por ejemplo, querer predecir el precio que va a tener un producto con un mes de antelación utilizando
una variable que indica qué precio tendrá ese mismo producto dos semanas antes del momento que
queremos predecir.
Debidas a un incorrecto manejo de datos:
Este tipo de fuga de datos se produce cuando tomamos decisiones en función de los datos de test o
de las predicciones.
Un ejemplo de un manejo incorrecto de datos es entrenar los filtros utilizando el conjunto completo
de datos, es decir, incluyendo el subconjunto de test.
4.3. Selección de características
Una vez hemos dividido el dataset en conjunto de muestras de entrenamiento y conjunto de test,
aplicamos una serie de filtros sobre sobre el conjunto de entrenamiento para seleccionar las características.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
23
CAPÍTULO 4. MARCO TEÓRICO
La estrategia de selección de características consiste en seleccionar aquellas características que sean
relevantes y nos permitan identificar una clase solo por estar ahí. Por lo que procuraremos descartar
tanto aquellas que características demasiado específicas e identificativas de una única muestra, como por
ejemplo el propio nombre de la muestra, como aquellas que sean demasiado comunes, como pudiera ser
en un texto los artículos determinados, conjunciones, etc.
4.3.1. Filtro de características excesivamente específicas
Por este motivo y debido al tamaño del conjunto de palabras que manejamos, empezamos por descartar
las palabras que claramente son demasiado específicas, como son aquellas que aparecen una única vez en
el dataset. Concretamente en este proyecto se eliminan aquellas características que aparecen tantas veces
o menos como muestras tiene la clase más pequeña. Esta manera de proceder puede estar penalizando
la detección de las clases con menos muestras y se debe considerar afinar este filtro en futuros proyectos.
Aún así lo, consideramos este criterio suficientemente bueno como para aplicarlo de esta manera.
4.3.2. Filtro de características duplicadas
Este filtro consiste en eliminar las columnas duplicadas, entendiendo por columnas duplicadas aquellas
que aún pudiéndose tratar de palabras diferentes procedentes de contextos diferentes, se muestren en la
misma cantidad y en las mismas muestras a lo largo del conjunto de entrenamiento. Esta eliminación de
características duplicadas supone una simplificación que pudiera estar haciéndonos perder características
importantes ya que el comportamiento de dichas características podría ser diferente en el conjunto de
entrenamiento que en el conjunto de test. Sin embargo, en este trabajo se ha considerado que la cantidad
de información superflua eliminada con este procedimiento, y por ende la cantidad de ruido eliminado,
supera con creces lo que se pudiera ganar manteniéndolas. Además, esta manera de proceder es lo más
parecido a un escenario real, por lo que finalmente se decide aplicarlo.
4.3.3. Filtro TF-IDF
TF-IDF es un acrónimo del inglés Term Frequency - Inverse Document Frequency, o en castellano
Frecuencia de ocurrencia del término en la frecuencia inversa de un documento. Este término es una
medida numérica que nos permite cuantificar cuán relevante es una palabra para permitir clasificar un
documento dentro de una colección concreta de documentos. Por lo tanto, su valor se calcula para cada
palabra dentro de la colección de documentos teniendo en cuenta todos los documentos de la colección.
Esta medida es normalmente utilizada como factor de ponderación de palabras en minería de texto ya que
aumenta progresivamente cuanto mayor es la frecuencia de aparición de una palabra en un documento y,
al mismo tiempo, es compensada por la frecuencia de dicha palabra dentro de la colección de documentos.
24 Trabajo Fin de Máster
CAPÍTULO 4. MARCO TEÓRICO
El valor TFIDF es el resultado del producto de dos valores: TF e IDF.
TFIDF (t, d) = TF (t, d) ∗ IDF (t,D)
TF: Frecuencia de término
TF representa la frecuencia de un término dentro de un documento. Existen una amplia variedad de
aproximaciones al cálculo de TF. En nuestro caso tomamos la que se ha considerado como la más sencilla.
De este modo tomamos:
t: el término que queremos evaluar,
d: el documento al que pertenece el término t,
D: la colección de documentos,
N: el número total de palabras en el documento d.
Su fórmula matemática es la siguiente:
TF (t) = número apariciones del término t en el documento dnúmero total de palabras en el documento d
IDF: Inversa de la Frecuencia de Documentos
IDF es la inversa de DF, siendo DF la frecuencia de los documentos en los que aparece un término,
siempre dentro de una colección de documentos. La fórmula de DF es la siguiente:
DF (t) = número de documentos en los que aparece el término t
En su versión relativa al número total de documentos en la colección:
DF (t) =número de documentos en los que aparece el término t
número total de documentos en la colección
Quedando su inversa representada de la siguiente manera:
IDF (t,D) =número total de documentos en la colección de documentos D
número de documentos en los que aparece el término t
Existe una gran cantidad de maneras de escalar el valor de IDF. Se ha elegido su escalado logarítmico
para obtener mayor detalle en la cola de distribución. Quedando su fórmula expresada como sigue:
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
25
CAPÍTULO 4. MARCO TEÓRICO
IDF (t,D) = log(número total de documentos en la colección de documentos D
número de documentos en los que aparece el término t)
Para evitar problemas de división por 0 si se diera el caso de que DF fuera nula se da por buena la
siguiente aproximación:
IDF (t,D) = log(número total de documentos en la colección de documentos D(número de documentos en los que aparece el término t)+1 )
4.4. Técnicas de muestreo
La técnicas de muestreo se suelen utilizar cuando el conjunto de datos sobre el que se está trabajando
está desequilibrado, como es nuestro caso. Su objetivo es hacer que el dataset se acerque más a una
situación de equilibrio respecto a la cantidad de muestras de cada clase. Hay dos tipos de técnicas de
muestreo: sobremuestreo y submuestreo.
4.4.1. Sobremuestreo - Oversampling
Las técnicas de sobremuestreo buscan equilibrar el número de muestras de cada clase en el conjunto
de datos de entrenamiento a través de aumentar el número de muestras de las clases menos numerosas.
Random OverSampler: El sobremuestreo aleatorio es uno de los primeros métodos propuestos que
además ha demostrado ser robusto [43]. Consiste en complementar los datos de entrenamiento con
múltiples copias de algunas de las clases minoritarias. Este sobremuestreo se puede hacer más de
una vez sobre los mismos datos. En lugar de duplicar cada muestra en la clase minoritaria, algunas
de ellas pueden elegirse al azar con reemplazo.
ADASYN (Adaptive Synthetic): Utiliza una distribución ponderada para diferentes muestras de
clases minoritarias de acuerdo con su nivel de dificultad en el aprendizaje, donde más datos sintéticos
son generados para muestras de clases minoritarias, las cuales son más difíciles de aprender en
comparación con aquellas muestras minoritarias que son más fáciles de aprender [44]. ADASYN
mejora el aprendizaje con respecto a las distribuciones de datos de dos maneras:
1. reduciendo el sesgo introducido por el desequilibrio de clase, y
2. cambiando adaptativamente el límite de decisión de clasificación hacia los ejemplos difíciles.
Los análisis de simulación en varios conjuntos de datos de aprendizaje automático muestran
la efectividad de este método en cinco métricas de evaluación.
SMOTE (Synthetic Minority Over-sampling Technique) [45]: Para ilustrar cómo funciona esta
técnica consideremos un conjunto de datos de entrenamiento con una cantidad de muestras S y
26 Trabajo Fin de Máster
CAPÍTULO 4. MARCO TEÓRICO
una cantidad de características F en el espacio de características de los datos. Para simplificar
consideraremos estas características continuas. Ahora, como ejemplo, considere un conjunto de
datos de aves para su clasificación. El espacio de características para la clase minoritaria para
la que queremos sobremuestrear podría ser la longitud del pico, la envergadura y el peso (todas
ellas continuas). Para realizar el sobremuestreo tomamos una muestra del conjunto de datos y
consideramos sus k vecinos más cercanos en el espacio de características. Ahora, para crear un
punto de datos sintético tomaremos el vector entre uno de esos k vecinos y el punto de datos actual.
Multiplicaremos este vector por un número aleatorio x entre 0 y 1 y, finalmente, agregamos esto al
punto de datos actual para crear el nuevo punto de datos sintético.
Borderline SMOTE: Es una variante del SMOTE original. Se localizan las muestras límite del
conjunto de datos de entrenamiento para,a partir de ellas, generar nuevas muestras sintéticas.
KMeans-SMOTE: Se realizan agrupaciones por KMeans y se aplica sobremuestreo SMOTE.
SMOTE-NC (SMOTE for Nominal and Continuous): se puede utilizar sobre datasets que contengan
características continuas y categóricas.
SVM-SMOTE: Utiliza el algoritmo SVM para detectar las muestras que se utilizarán para generar
nuevas muestras sintéticas con SMOTE.
4.4.2. Submuestreo - Undersampling
Las técnicas de submuestreo buscan equilibrar el número de muestras de cada clase del conjunto de
datos de entrenamiento reduciendo el número de muestras de las clases más numerosas. En este proyecto
utilizaremos la técnica de condensación de los vecinos más cercanos o Condensed Nearest Neighbour.
4.4.3. Combinaciones de sobremuestreo y submuestreo
SMOTEENN: Sobremuestreo usando SMOTE y limpieza usando ENN.
SMOTE Tomek: Sobremuestreo usando SMOTE y limpieza usando enlaces Tomek.
4.5. Modelos algorítmicos
Un conjunto de datos de entrenamiento con suficiente cantidad y calidad redundarán en un mayor
porcentaje de acierto de los modelos.
Dado que este proyecto consiste en clasificación de malware nos centraremos en modelos de clasificación.
Denotamos:
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
27
CAPÍTULO 4. MARCO TEÓRICO
X a la matriz compuesta por los vectores de variables o características predictoras a cada muestra,
Y al vector predicción o respuesta del modelo, y
Cj a los posibles valores de la variable respuesta.
4.5.1. Naïve Bayes
Naïve Bayes es uno de los clasificadores más utilizados por su simplicidad y rapidez.
Está basada en el Teorema de Bayes, también conocido como teorema de la probabilidad condicionada,
el cual responde a la pregunta de qué probabilidad hay de que suceda un hecho asociado a una probabilidad
que depende de que suceda otro hecho asociado a otra probabilidad.
Presupone que la aparición o no de un atributo en un caso no influye en la aparición del resto de
atributos [46]. Sólo admite variables categóricas, por lo que las variables continuas deben ser categorizadas
previamente a la construcción del modelo. La salida para la etiqueta de cada clase se asigna en función
de una puntuación de probabilidad, normalmente un logaritmo, proporcional a la auténtica probabilidad
estimada.
Algunas aplicaciones habituales de este modelo son la detección de spam, clasificación de textos o la
detección de fraudes en seguros.
4.5.2. KNN - K Nearest Neighbors
Es un método de aprendizaje automático supervisado de clasificación no paramétrica. Sirve para estimar
la función de densidad F (x/Cj) de las características predictoras X por cada clase Cj o directamente
la probabilidad a posteriori de que un elemento x pertenezca a la clase Cj a partir de la información
proporcionada por el conjunto de muestras. En el proceso de aprendizaje no se hace ninguna suposición
acerca de la distribución de las variables predictoras.
Se utiliza en el reconocimiento de patrones como método de clasificación basado en un entrenamiento
mediante ejemplos cercanos en dicho espacio de elementos. KNN es un tipo de aprendizaje conocido como
perezoso (lazy learning), donde la función se aproxima solo localmente y todo el cómputo es referido a
la clasificación. Se establece una distancia en el espacio vectorial de las variables predictoras como por
ejemplo la distancia euclídea. Para clasificar un elemento se buscan los k registros más cercanos y se
clasifica de acuerdo con la clase mayoritaria entre estos k datos.
28 Trabajo Fin de Máster
CAPÍTULO 4. MARCO TEÓRICO
4.5.3. AdaBoost
Boosting es un meta-algoritmo de aprendizaje automático que reduce el sesgo y la varianza en un
contexto de aprendizaje supervisado. Consiste en construir un clasificador robusto a partir de conjunto de
clasificadores débiles. Un clasificador débil es un clasificador débilmente correlacionado con la clasificación
correcta, es decir, que clasifica ligeramente mejor que un clasificador aleatorio. Mientras que un clasificador
robusto es un clasificador con un desempeño cuyas clasificaciones se aproximan más a la realidad [47].
AdaBoost es el algoritmo de boosting más popular, quizá debido a que fue la primera formulación de
un algoritmo que pudo aprender a partir de clasificadores débiles.
AdaBoost para categorización funciona en general de la siguiente manera:
1. Forma un conjunto grande de características sencillas
2. Inicializa pesos para entrenar imágenes
3. Para T iteraciones:
a) Normalización de pesos,
b) Para las características disponibles del conjunto, entrenamiento de un clasificador utilizando
solo una característica y evaluación del error de formación
c) Selección del clasificador con el error más bajo,
d) Actualización los pesos de las imágenes de formación: aumenta el peso si el clasificador clasifica
de forma errónea el objeto, disminuye si lo hace correctamente
4. Formación de un clasificador final robusto como la combinación lineal de los T clasificadores.
4.5.4. Árbol de Decisión
Utiliza un árbol de decisión como un modelo predictivo que mapea observaciones sobre un artículo a
conclusiones sobre el valor objetivo del artículo.
Los modelos de árbol, donde la variable de destino puede tomar un conjunto finito de valores, se
denominan árboles de clasificación. En estas estructuras las hojas representan etiquetas de clase y las
ramas las conjunciones de características que conducen a esas etiquetas de clase. Los árboles de decisión
cuya variable destino puede tomar valores continuos se llaman árboles de regresión.
En análisis de decisión un árbol de decisión se puede utilizar para representar de manera visual y
explícita la toma de decisiones. En minería de datos un árbol de decisión describe datos pero no las
decisiones, más bien el árbol de clasificación resultante se puede usar como entrada para la toma de
decisiones.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
29
CAPÍTULO 4. MARCO TEÓRICO
4.5.5. Bosque Aleatorio
El Bosque Aleatorio, o en inglés Random forest, es una combinación de árboles predictores tal que
cada árbol depende de los valores de un vector aleatorio probado independientemente y con la misma
distribución para cada uno de estos. Es una modificación sustancial del bagging de Breiman que construye
una selección aleatoria de árboles de decisión con una variación controlada y luego los promedia.
En muchos problemas el rendimiento del algoritmo de bosque aleatorio es muy similar a la del boosting,
y es más simple de entrenar y ajustar. Por estos motivos es un algoritmo popular y ampliamente utilizado.
4.5.6. Red Neuronal
Basado en un gran conjunto de unidades neuronales simples (neuronas artificiales), de forma
aproximadamente análoga al comportamiento observado en los axones de las neuronas en los cerebros
biológicos. Cada unidad neuronal está conectada con muchas otras y los enlaces entre ellas pueden
incrementar o inhibir el estado de activación de las neuronas adyacentes empleando funciones de suma.
Cada neurona se comporta como una función cuyo resultado se propaga a las demás neuronas.
4.6. Matriz de Confusión
Los resultados de un modelo de aprendizaje automático se pueden visualizar por medio de lo que se
conoce como matriz de confusión.
Figura 4.1: Forma de una matriz de confusión binaria[48]
En la matriz de confusión binaria de un modelo podemos ver:
Verdaderos positivos: resultados positivos que el modelo ha detectado como positivos.
Verdaderos negativos: resultados negativos que el modelo ha detectado como negativos.
Falsos positivos: resultados negativos que el modelo ha detectado como positivos.
Falsos negativos: resultados positivos que el modelo ha detectado como negativos.
30 Trabajo Fin de Máster
CAPÍTULO 4. MARCO TEÓRICO
En nuestras evaluaciones consideramos el hecho de que se acierte la predicción de la etiqueta del
malware como un resultado positivo, y el fallo en la predicción como un resultado negativo. De ahí que
en las matrices de confusión multietiqueta como las adjuntas en el anexo A.3.7, lo habitual sea encontrar
los verdaderos positivos en la diagonal principal, es decir, en aquella que empieza en la parte superior
izquierda de la matriz y termina en la parte inferior derecha de la misma.
4.7. Métricas
Una vez se ha entrenado un modelo y hecho una clasificación sobre el conjunto de test, nos interesa
medir cómo de buena ha sido esa respuesta. Para ello hay 4 métricas fundamentales [49]: precisión,
exactitud, exhaustividad y F1:
Precisión: representa el porcentaje de instancias evaluadas como verdaderos positivos entre el total
de positivos.
Precision =V erdaderos positivos
V erdaderos positivos+ Falsos positivos
Accuracy (exactitud): representa la fracción de predicciones que el modelo realizó correctamente.
Exactitud =N de predicciones correctas
N total de predicciones
O lo mismo escrito de otra manera:
Exactitud =V P + V N
V P + V N + FP + FN
Exhaustividad, sensibilidad o recall: Representa el porcentaje de instancias de verdaderos positivos
entre el total real de positivos, es decir, verdaderos positivos y falsos negativos.
Recall =V erdaderos Positivos
V erdaderos Positivos+ Falsos Negativos
F1: Es la media armónica de la precisión y la exhaustividad (recall).
F1 = 2 ∗ Precision ∗ Exhausitividad
Precision + Exhausitividad
4.7.1. La métrica más adecuada
Decidir cual es la manera de medir la efectividad de una modelo depende de varios factores.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
31
CAPÍTULO 4. MARCO TEÓRICO
En primer lugar, el contexto del problema. Si hay factores que hacen que un falso positivo nos penalice
más que un falso negativo, entonces querremos una precisión alta. Si lo que penaliza la eficacia del modelo,
y por lo tanto lo que queremos evitar, son los falsos negativos, entonces querremos una exhaustividad
o recall alta. En el caso de que tanto falsos positivos como falsos negativos penalicen igual, entonces la
métrica que más nos podría interesar sería la exactitud o accuracy.
El segundo factor a considerar es el equilibrio del dataset. Y es que si las diferentes clases que lo
componen tienen tamaños muy distintos, la exactitud puede ser una medida engañosa. Para comparar
diferentes clasificadores, uno con exhaustividad alta y otro con precisión alta, si no tenemos más
información sobre el contexto es cuando el f1-score resulta útil porque nos permite valorar ambas métricas.
Además, al afinar un modelo suele suceder que si se hace algo para mejorar la precisión entonces
empeora el recall y viceversa. Por eso lo más conveniente es decidir con argumentos qué valor se va a
utilizar entre estos dos. Sin embargo, en el contexto de la clasificación de malware no encontramos una
clara diferencia que haga decantarnos entre precisión y exhaustividad, por eso tomaremos la métrica F1
que nos ofrece la manera de tener en cuenta al mismo nivel ambas métricas.
4.7.2. Medias para clasificación multiclase
Para problemas de clasificación, la eficacia de un modelo está definido por la matriz de confusión
asociada al modelo. Basándose en las entradas de dicha matriz, es posible calcular las métricas estudiadas
en 4.7. Para evaluar modelos de clasificación binarios es suficiente con evaluar dichas métricas y escoger la
que más convenga para el problema en cuestión. Sin embargo, para los modelos de clasificación multiclase,
dado que puede darse importantes diferencias al predecir cada clase, suele ser conveniente aplicar algún
tipo de media que nos permita ver con más claridad en un único valor cómo está prediciendo el modelo.
Las medias más habituales en clasificación multiclase son micro, macro y ponderada:
micro: le da a cada par muestra-clase una contribución igual a la métrica general (excepto como
resultado del peso de la muestra). En lugar de sumar la métrica por clase, esto suma los dividendos
y divisores que componen las métricas por clase para calcular un cociente global. Se puede preferir
el micro-promedio en entornos de múltiples etiquetas donde se debe ignorar una clase mayoritaria.
macro: simplemente calcula la media de las métricas binarias, dando el mismo peso a cada clase.
En problemas donde las clases poco frecuentes son importantes, la media macro puede ser un
medio para resaltar su desempeño. Por otro lado, la suposición de que todas las clases son
igualmente importantes a menudo es falsa, de modo que el promedio de macro enfatizará en exceso
el rendimiento típicamente bajo en una clase poco frecuente.
ponderada: tiene en cuenta el desequilibrio de clases al calcular el promedio de las métricas binarias
en las que la puntuación de cada clase se pondera por su presencia en la muestra de datos verdaderos.
32 Trabajo Fin de Máster
5Metodología y diseño
Para llevar a cabo el estudio objeto de este proyecto se definen dos tareas a realizar que habrán de
llevarse a cabo de través de dos herramientas: una para manejar los ficheros de malware interactuando
con el API de LiSa y VirusTotal para obtener los informes, y otra para, a partir de dichos informes,
entrenar y evaluar el modelo de clasificación de malware.
5.1. Requisitos software.
La funcionalidad descrita en los requisitos funcionales se consigue con un software que cumple las
siguientes especificaciones:
Lenguaje de programación: Python 3.7,
Podrá hacer uso de las herramientas del sistema que se consideren convenientes.
Ejecución probada en un sistema Debian GNU/Linux 10 Buster.
Contar con documentación para su ejecución.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
33
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Comportamiento configurable por medio de un fichero central de configuración con las siguientes
secciones:
• sección de valores por defecto. Esta sección contiene valores de constantes que normalmente no
requieren modificación por parte del usuario ya que forman parte del funcionamiento interno
del programa.
• sección de configuraciones especificas que el usuario podrá elegir en el momento de ejecutar el
programa a través de un argumento de entrada.
Se evitará el uso de valores mágicos dentro del código.
5.2. Requisitos funcionales
5.2.1. Obtención de reportes
Para la tarea de generación de informes se han utilizado la herramienta de análisis dinámico y estático
LiSa y para su etiquetado se ha utilizado la herramienta AVClass la cual utiliza la información obtenida
de VirusTotal.
Informes LiSa
LiSa proporciona dos interfaces: un frontend web y un API REST. Dado que la interfaz web en la versión
actual solo permite el envío de ficheros de manera individual y dado que en nuestro caso necesitamos un
procesamiento masivo de muestras, necesitaremos interactuar con su interfaz REST, para lo cual vamos
a requerir implementar un cliente que interactue con dicha interfaz.
Informes VirusTotal
Para obtener los informes de VirusTotal nos encontramos con el mismo caso: al tratarse de una interfaz
API necesitamos un cliente para interactuar con él. En este caso existen muchas librerías y clientes que
proporcionan esta funcionalidad.
5.2.2. Cliente de LiSa y VirusTotal
El programa cliente para las API de LiSa y VirusTotal debe ser capaz de:
enviar los ficheros a la interfaz API REST de LiSa,
enviar los ficheros a la interfaz API REST de VirusTotal,
34 Trabajo Fin de Máster
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
recibir los informes de la interfaz API REST De LiSa,
recibir los informes de la interfaz API REST De VirusTotal,
almacenar en disco los informes recibidos del API REST de LiSa,
almacenar en disco los informes recibidos del API REST de VirusTotal,
El programa cumple la anterior funcionalidad siguiendo los siquientes requisitos:
Tener probada su ejecución en un sistema Debian GNU/Linux 10 Buster.
Contar con documentación para su instalación y ejecución.
Comportamiento configurable por medio de un fichero de configuración.
Permitir configurar el comportamiento del programa en función de una etiqueta introducible por
argumento que coincide con una etiqueta del fichero de configuración,
No existen valores mágicos dentro del código, a lo sumo en constantes definidas al principio del
código.
5.2.3. Herramienta de entrenamiento y evaluación de modelos
El programa debe ser capaz de:
Leer los informes almacenados por el cliente API REST De LiSa,
Leer los informes almacenados por el cliente API REST De VirusTotal,
Traducir los informes de análisis LiSa de cada fichero muestra de malware a vectores numéricos,
Aplicar diferentes técnicas de muestreo para balancear el dataset,
Entrenar diferentes modelos de aprendizaje automático supervisado diferentes,
Obtener la predicción de cada modelo,
Medir para cada modelo: precisión, exhaustividad, f1 y recall.
5.3. Proceso
El flujo de un proyecto de aprendizaje automático parte del dato en bruto y termina en el modelo
entrenado y validado tal como se describe en 5.1.
Las fases de este proceso son las siguientes:
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
35
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Figura 5.1: Flujo de trabajo de aprendizaje automático supervisado [50]
1. Elección del dataset.
2. Elección de las herramientas a utilizar.
3. Generación de informes,
4. Preprocesado, particionado de dataset y generación de matriz de características.
5. Filtros de características, (K mejores características para clasificación, TFI-IDF, etc).
6. Entrenamiento de los modelos elegidos, predicción y validación de resultados.
7. Análisis critico sobre los resultados obtenidos.
5.3.1. Fase 1: Elección del dataset
Se ha utilizado un dataset formado por dos conjuntos de muestras de malware procedentes de
VirusShare con ficheros ejecutables de Linux tipo ELF compilados para arquitectura ARM [51] [52].
Contenido del dataset
El dataset utilizado se ha construido a partir de dos datasets procedentes de VirusShare [51] y [52].
Este conjunto consta de 2597 muestras en total, de las cuales se utilizan aquellas que son analizadas con
éxito por LiSa, VirusTotal y AVClass. Esto reduce el conjunto a 2113 muestras.
En el primer filtro que se aplica al dataset eliminamos aquellas muestras que aparecen menos de un
número arbitrario de veces, en este caso hemos fijado este número en 33, lo que nos deja un total de 1974
muestras distribuidas como muestras la tabla 5.3.1.
36 Trabajo Fin de Máster
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Clase Muestras ProporciónMirai 1206 61,09%Gafgyt 535 27,1%Tsunami 87 4,41%Dofloo 52 2,63%Pnscan 33 1,67%Jiagu 7 0,35%
Tabla 5.1: Cantidad y proporción de muestras en dataset
Contamos en este momento con un universo formado por 1974 muestras definidas por 8.062.570 de
características.
Si tenemos en cuenta que el tamaño por defecto del dato del dataframe de Pandas es Float64, si
multiplicamos la cantidad de muestras por la cantidad de características y el tamaño del dato obtenemos
el siguiente tamaño del dataset: 1974 * 8062570 * 64 = 1,01859284352e+12 Bits = 127324105440 Bytes
= 124339946,719 KBytes = 121425,729218 MBytes = 118,579813689 GBytes de RAM.
Como acabamos de ver, a pesar de tratarse de una pequeña cantidad de muestras, la cantidad de
características hace que sea computacionalmente inmanejable por la capacidad computacional de que
disponemos para este proyecto fijado en 24 GB de RAM. Por este motivo procedemos a aplicar un filtro
que va a aplicar una proporción definida por nosotros arbitrariamente que marcará el límite a partir del
cual consideramos que una características no estaría definiendo una clase. Este límite lo definimos de
manera que se eliminarán aquellas características que no aparezcan en al menos un 25% de las muestras
de la clase con menos representantes en el conjunto. Esto implica que se eliminen aquellas características
que aparecen en menos de 6,6 muestras (33*1/4=6.6). Esto reduce en un total de 7.850.091 la cantidad de
características, lo que supone una reducción de un 97,36% de características. Como se ve este filtro aligera
de manera importante el peso computacional del dataset, aunque la manera en la que está planteado es
muy probable que estemos penalizando la detección de las clases menos representadas. Puede que fuera
interesante mejorar este filtro en una próxima iteración de este proyecto para eliminar esta penalización.
Clases de malware
A continuación una breve descripción de cada una de las 7 clases de malware [53] que se han considerado
en este proyecto:
Mirai: es una Botnet. Esta botnet utiliza una amplia variedad de mecanismos para extenderse donde
las más comunes son: infección de ficheros, troyano, adware y riskware.
Gagfyt: Gagfyt es el nombre de la botnet que disemina este malware. Para la expansión de esta
botnet se ha utilizado una diversa variedad de malware. La función principal de este malware es
que da al atacante acceso remoto al equipo infectado.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
37
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Dofloo: está clasificado como un troyano de puerta trasera.
Un troyano de puerta trasera es un tipo de malware que permite a un usuario remoto tener acceso
no autorizado a la computadora infectada. Las capacidades comunes de una puerta trasera incluyen
capturar la entrada del teclado, recopilar información del sistema, descargar o cargar archivos,
realizar ataques de denegación de servicio (DoS) y ejecutar o finalizar procesos.
Lotoor: este tipo de malware utiliza un exploit. Los exploits utilizan vulnerabilidades conocidas del
sistema para obtener acceso al mismo.
Pnscan: Se presenta como malware de tipo troyano y riskware.
Tsunami: Está clasificado como troyano.
Jiagu: Cuando Jiagu se ha presentado en forma de fichero tipo ELF lo ha hecho con funcionalidad de
troyano. Si bien en otras plataformas como Android se ha mostrado con características de Riskware
y Adware. Riskware es cualquier aplicación potencialmente no deseada que no está clasificada
como malware, pero que puede utilizar recursos del sistema de manera no deseable o molesta que
puede desencadenar un riesgo de seguridad. Adware es cualquier paquete de software que muestra
automáticamente anuncios mientras se ejecuta el programa. El adware normalmente no es malicioso,
pero tampoco deseado, y el usuario suele desconocer que está instalado en su equipo.
5.3.2. Fase 2: Herramientas a utilizar
Se ha utilizado la herramienta del sistema file para detectar si el fichero es un fichero binario ejecutable
tipo ELF de arquitectura ARM.
Se ha elegido la herramienta de análisis estático y dinámico LiSa por ser una herramienta de sencilla
configuración, que proporciona un API REST que permite el análisis masivo de ficheros y que incluye
imágenes preconfiguradas para diferentes arquitecturas, entre ellas la arquitectura utilizada en este
proyecto: ARM.
Se ha elegido la herramienta AVClass [40] por ser la única herramienta conocida que en la actualidad
intenta dar una solución al problema de las dificultades de realizar un etiquetado unificado de malware
y por nutrirse de una fuente de información tan potente como es VirusTotal, cuyos informes a día de
hoy incluyen los resultados de 63 antivirus, siendo la información obtenida por esta herramienta la que
utilizaremos como verdad fundamental en relación a las etiquetas de malware, sobre la cual se va a apoyar
nuestro modelo de clasificación.
El lenguaje elegido para la implementación de las herramientas ha sido Python3. Los motivos para
elegir este lenguaje son la agilidad que permite en el desarrollo, su versatilidad y el soporte con que
cuenta para aprendizaje automático.
38 Trabajo Fin de Máster
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Scikit-learn es la librería principal de aprendizaje automático utilizada en este proyecto, la cual utiliza
a su vez librerías bien conocidas para el manejo de datos como son Numpy y Pandas. Esta librería además
cuenta con una muy buena documentación además de soporte para datasets no balanceados que, como
veremos más adelante, es el caso de nuestro conjunto de datos.
5.3.3. Fase 3: Análisis estático y dinámico
Fase 3.1: Filtrado de muestras
Se ha considerado centrar nuestro modelo de detección sobre ficheros binarios ejecutables ARM, por
lo que se hace necesario filtrar las muestras de malware de Linux.
Para seleccionar los ficheros ejecutables Linux ARM se ha ejecutado la herramienta file sobre cada fichero
y a continuación se ha filtrado la salida con grep de manera que se seleccionan solo los ficheros que en su
salida contengan las cadenas ”ARM”, ”ELF”, y no contengan la cadena “not an ELF”.
Una vez seleccionados los ficheros binarios de malware Linux ARM, procederemos a enviarlos a las
plataforma de análisis para generar los diferentes informes.
Fase 3.1: Plataforma LiSa
Se ha elegido la plataforma de análisis estático y dinámico LiSa para generar los informes de los fiche-
ros. Su puesta en marcha es inmediata siguiendo las instrucciones del manual y los entornos de análisis
preconfigurados que incluye para las diferentes arquitecturas. No fue necesario desviarse de las instruc-
ciones de instalación por lo que no entraremos en más detalle en este apartado.
Fase 3.2: Envío de malware y recepción de informes
Para comunicar con las APIs de LiSa y VirusTotal se implementó un programa cliente cuya función
es enviar los ficheros malware a ambas plataformas, obtener sus resultados y almacenarlos en ficheros en
disco duro local.
Todos los informes obtenidos procedentes de LiSa serán utilizados para generar las características por
medio del conteo de palabras, mientras que la información de VirusTotal ha sido tratada con la aplicación
AVClass [40] para extraer de dichos informes la clase a la que pertenece cada fichero de malware.
Se debe tener en cuenta que algunos ficheros del análisis de LiSa dieron error y no pudieron ser
procesados. En un primer momento se consideró parchear la plataforma LiSa de manera que el número
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
39
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
de informes sin analizar se redujera paulatinamente. Se descartó este enfoque porque se decidió priorizar
la homogeneización de la información de entrada al modelo por encima de un mayor número de informes
disponibles.
La aplicación de AVClass, la cual parte de la información de VirusTotal, tampoco consiguió etiquetar
todas las muestras de malware de Linux ARM.
Como resultado, el conjunto de muestras con que contamos para este proyecto está formado por aquellas
muestras de malware ejecutable Linux ARM que hemos podido analizar, estando este conjunto formado
por un total de 13506 muestras.
Al terminar esta fase contamos con ambas informaciones de cada una de los 13506 muestras de malware:
sus informes estático y dinámico de LiSa y el tipo de malware a que corresponde cada fichero procedente
de VirusTotal y AVClass.
Formato de informe LiSa
Los informes LiSa son generados en formato JSON. Estos informes contienen una amplia cantidad de
tipos de informaciones ya que contienen el análisis estático y dinámico, y los diferentes campos que for-
man cada una de estas secciones. En estos informes una misma palabra puede tener diferente significado
dependiendo de en qué sección se encuentre, debido a esto se ha aplicado un mecanismo para diferenciar
las palabras de una sección de las palabras iguales que se encuentran en diferentes secciones. Esta dife-
rencia en los significados según la sección en que se encuentran las hemos llamado contextos, ya que para
cada palabra funcionan como tal dotándolas de una significado presumiblemente diferente.
Se puede consultar el formato de los informes LiSa en el anexo A.1
5.3.4. Fase 4: Preprocesado, particionado de dataset y matriz de caracterís-
ticas
Preprocesado
Los informes LiSa muestran de información distribuida en una gran cantidad y variedad de campos.
Parsear los informes directamente desde el informe json a cadenas de caracteres produciría cadenas empe-
zadas o terminadas por los símbolos ’[],’, y este no es el resultado que buscamos. Además, como se explicó
anteriormente, las palabras que en un contexto tienen un significado, pueden presentar otro distinto en
otro contexto, por lo que debido a esto se ha decidido que lo mejor es realizar un parseado específico para
estos datos.
40 Trabajo Fin de Máster
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Las transformaciones descritas a continuación son ejecutadas por la función ’prepare_master_db’
dentro del script #2 de la herramienta de procesado:
1. La primera transformación consiste en identificar y eliminar aquellos campos que contienen
información que no será útil en próximas fases. Estos campos se pueden clasificar en los siguientes
tipos:
campos cuyo valor es único para cada muestra: ejemplo de este tipo de campos son los
identificadores de los ficheros malware como por ejemplo MD5, SHA256, etc. Estos campos
toman un valor único para cada muestra y por lo tanto no añaden información al dataset ya
que nuestro objetivo es detectar clases, no individuos concretos. Con quedarnos con un campo
de este tipo es suficiente. En nuestro caso eliminamos todos aquellos que identificamos por
medio de la observación manual de muestras excepto el campo ’file_name’.
campos cuyo valor es igual en todas las muestras: este tipo de valores no es necesario eliminarlos
ya que probablemente sean descartados por el filtro TF-IDF que vamos a aplicar a continuación.
Aún así se ha incluido alguno en este apartado. Campos de este son: arquitectura para la cual
fue compilado el binario, tipo de fichero, sistema operativo, etc.
campos con valores de baja probabilidad de repetición: los campos eliminados corresponden
a valores que tienen una muy baja probabilidad de repetirse como es el tamaño total de un
fichero. Sin embargo hay otro tipo de informaciones que sí se han mantenido como es el caso
del tamaño de una sección concreta del binario dentro de su análisis estático. Este segundo
tipo de secciones, aún teniendo una baja probabilidad de repetirse, contienen una información
potencialmente interesante que podría ser aprovechada implementando un procedimiento o
función que generara una o varias características en la cual este tipo de valores fueran asociados
a unos rangos, bien por su propio valor o relacionándolo al valor de otros campos. En un caso
así este tipo de información podría ser de gran utilidad. En este proyecto se ha decidido no
entrar en este enfoque para evitar sesgar el estudio por lo que este tipo de campos se tratarán
del mismo modo que el resto de informaciones. En caso de implementarse una generación de
características de este tipo, esta habrá de hacerse con sumo cuidado.
2. La segunda transformación consiste en dar un formato común a los distintos tipos de datos que
forman cada contexto. Esta transformación implica que cada dato es tratado de manera uniforme
en todos los informes según el tipo de dato que estemos tratando. Los tipos de datos que forman
este informe son: cadena de caracteres, valor entero, valor booleano, diccionario, listas, y otros. Las
listas y diccionarios pueden contener a su vez otras listas y diccionarios, y así sucesivamente hasta
llegar al término básico contenido en cada contexto como son los enteros, las cadenas caracteres, y
los valores nulos. Los valores básicos que no son cadenas de caracteres son traducidos a cadenas de
caracteres.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
41
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
3. La tercera transformación tiene como objetivo poner todas las palabras a un mismo nivel, al mismo
tiempo que se mantiene la información de contexto para cada palabra. Para conseguir esto se genera
un identificador de contexto, el cual se construye a través de la concatenación de los nombres de
los campos que contienen cada palabra, de manera que antes de incluir cada palabra en el conjunto
general de palabras, se concatena el identificador de cada contexto antes de cada palabra. Los iden-
tificadores de contexto son diferentes dentro de cada informe, pero comunes a todos los informes
LiSa. Aunque debemos tener en cuenta que no mantienen la información de contexto a la perfección
en todos los casos. Ejemplo de esta falta de perfección son los casos de las listas de diccionarios.
Dado que los diccionarios que forman parte de una lista no están asociados a un identificador que
los identifique univocamente, dos elementos distintos de una lista tendrán la misma forma y las
variables que los forman estarán precedidos del mismo identificador de contexto, por lo que no se
distinguirá la relación que hay entre las palabras dentro de cada diccionario de esa lista. Aún así,
en este proyecto utilizaremos estos identificadores ya que, a pesar del defecto mencionado, propor-
cionan un mecanismo mejor de mantener la información de contexto que si no los utilizaramos.
Preselección de clases
Antes de realizar el particionado de las muestras en subconjunto de entrenamiento y test, hacemos
una selección previa para eliminar aquellas muestras que no formaran parte del estudio. Las muestras
utilizadas deben formar parte de una clase con un número mínimo de representantes. Toda clase utilizable
contendrá una cantidad mínima de individuos que permita entrenar y probar el modelo con los requisitos
que impongan los diferentes algoritmos y técnicas que se apliquen para obtener el modelo de clasificación.
En este proyecto imponemos 2 requisitos a cada clase:
que haya al menos un individuo de cada clase en cada subconjunto cuando se haga el particionado
estratificado con la proporción 80%-20% de los subconjuntos entrenamiento y test respectivamente.
que la cantidad de muestras en el conjunto de entrenamiento tras el particionado entrenamiento-test
sea capaz de alimentar los algoritmos de undersampling que se decida aplicar.
Particionado de dataset
Antes tomar decisiones de selección de características, se ha procedido a dividir el dataset completo
de manera estratificada en subconjuntos de entrenamiento y test con unas proporciones de 80% y 20%
respectivamente. El motivo se hacer esta separación antes de tomar ninguna decisión sobre el conjunto
de los datos es evitar el efecto de fuga de datos, o en inglés, data leakage.
42 Trabajo Fin de Máster
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Para evitar estas fugas de datos, todas las operaciones de selección de características en este proyecto se
deben hacer, siempre que sea posible, sobre el conjunto de entrenamiento y después aplicar el resultado
del filtro sobre el subconjunto de test.
El reparto de muestras estratificado nos permite mantener la proporción de la cantidad de muestras
de cada clase en cada subconjunto. Esto se hace así por dos motivos:
1. intentar igualar las capacidades de entrenamiento y oportunidades de detección de cada clase, lo
cual no elimina la dificultad intrínseca al hecho de estar tratando un dataset de tipo no balanceado.
2. asegurar de una manera automática que en el conjunto de test siempre haya al menos una muestra
de todas las clases para poder probar su detección. Si no lo hicieramos de manera estratificada, al
repartir las muestras en proporción 80%-20%, resultaría habitual que las clases menos representadas
en el dataset aparecieran solo en el conjunto de entrenamiento, haciendo imposible que se pueda
evaluar su detección.
El aspecto negativo respecto al particionado estratificado es que este tipo de reparto en cierta manera
produce una fuga de información implícita al subconjunto de entrenamiento, de manera que al intentar
detectar una muestra en el conjunto de test, el modelo podría utilizar esa proporción de aparición para
mejorar su detección, lo cual puede implicar que las métricas medidas al validar los resultados sean
mejores que los que nos encontraríamos en un escenario real. Este sería un efecto indeseado.
Para minimizar este efecto, aplicaremos técnicas de oversampling y undersampling las cuales reducirán
este efecto al ser su función equilibrar el número de muestras de cada clase en el conjunto de entrenamiento,
lo cual sucede antes de proceder a entrenar el modelo.
5.3.5. Fase 5: Selección de características - Filtros
Una selección adecuada de las características eliminará ruido en los datos y acelerará el aprendizaje
del modelo de clasificación.
Se han aplicado 4 filtros de características sobre los datos:
filtro de características simple, encargado de eliminar aquellas palabras que aparecen menos de una
cantidad de veces previamente fijada vez en el dataset.
filtro de columnas duplicadas, elimina las características duplicadas,
filtro de valoración TFIDF, selecciona las características con mayor valor TFIDF,
filtro de las K mejores características utilizando el criterio de chi2.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
43
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Filtro de mínimo de apariciones por palabra
Se ha decidido eliminar del conjunto de entrenamiento aquellas palabras que aparezcan menos de una
cantidad de veces prefijada sobre el subconjunto de entrenamiento. El motivo principal para hacer esto
es que el objetivo de un algoritmo de clasificación es, como su propio nombre indica, clasificar muestras.
Esto se consigue detectando la clase a la que pertenece un individuo. La manera correcta de realizar
esta tarea es encontrar aquellas características que hacen que esa muestra pertenezca a una clase. La
manera incorrecta sería identificar uno a uno los individuos, así cuando lo encontráramos, sabríamos que
pertenece a esa clase, no porque pertenezca sino porque es ese individuo. Este último procedimiento no
cumpliría con los objetivos de nuestro proyecto ya que requeriría que conociéramos previamente la clase
de cada individuo, lo cual sería carente de utilidad en un entorno real.
El mínimo número de veces que debe aparecer una palabra para permanecer en el dataset se ha fijado
asegurando que se mantengan todas las palabras que aparezcan al menos una vez en cada muestra de la
clase con menos muestras.
Al aplicar este filtro sobre el conjunto de entrenamiento se reduce de manera sencilla e importante la
cantidad de memoria necesaria para procesar el resto de la información ya que los términos a procesar
disminuyen de una cantidad inicial de 8.319.197 a 223.522, es decir, se reduce la cantidad de términos en
un 97,31%.
Debemos hacer notar un punto de mejora en este proyecto, y es que la manera en la que está definido
el mínimo número de apariciones de un término penaliza la detección de las clases con menos muestras
ya que no está relacionado con la cantidad de muestras de las que consta una clase y, por lo tanto, las
clases que más porcentaje de información pierden son aquellas que cuentan con menos muestras.
Filtro de columnas duplicadas
Una vez hemos convertido el conjunto de datos a matriz de características, eliminamos las características
o columnas duplicadas. Consideramos que dos características están duplicadas cuando ambas tienen
exactamente el mismo valor para cada muestra. Al aplicar este filtro, la matriz resultante tiene un único
representante de cada columna.
Asumimos que es posible que las características que se muestran como duplicadas en el subconjunto de
entrenamiento podrían no comportarse como tal sobre el conjunto completo de datos. Sabemos que esto
redunda en una peor precisión en los resultados que filtrando sobre el conjunto completo, pero se asume
esta pérdida de precisión porque es la manera de proceder para producir resultados reales.
44 Trabajo Fin de Máster
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
Filtro TFIDF
El filtro TFIDF consiste en calcular el valor TFIDF para cada palabra, y a partir de estas valoraciones
se selecciona una cantidad arbitraría de las mejores características según este criterio. La cantidad ha
sido fijada previamente por nosotros en 20.000.
Filtro: Selección de las K mejores características
A la matriz de características actual se le ha aplicado la selección de las K mejores características por
el criterio de Chi2.
El test de Chi2 mide la dependencia entre variables estocásticas, por lo que utilizar esta función
elimina las características que más probablemente sean independientes de la clase y, en consecuencia, las
más irrelevantes para clasificación.
En el filtro por Chi2 se aplican dos hipótesis. Estas son:
H0 (hipótesis nula): El vector de características no es dependiente linealmente del vector de
respuestas y.
H1 (hipótesis alternativa): El vector de características sí es dependiente linealmente del vector de
respuestas y.
Para cada vector de características obtiene su p − valor y las ordena de menor a mayor p − valor. A
menor valor reciba p− valor, mayor dependencia de la variable respuesta y.
En este proyecto hemos decidido quedarnos con las muestras que están por encima del percentil 50.
5.3.6. Fase 6: Entrenamiento y validación de modelos
Una vez hemos seleccionado las características, procedemos a entrenar los modelos, generar una
predicción y validar los resultados.
Para entrenar los modelos utilizamos las matrices Xtrain e ytrain que contienen los vectores de
características y el vector de respuestas esperadas respectivamente.
Para evaluar la predicción utilizamos el subconjunto de test Xtest e ytest. Con estos datos obtenemos
una predicción a partir la cual generamos la matriz de confusión y obtenemos los valores que nos servirán
para medir la efectividad del mismo: precisión, exactitud, exhaustividad y F1.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
45
CAPÍTULO 5. METODOLOGÍA Y DISEÑO
5.3.7. Fase 7: Análisis crítico sobre los resultados obtenidos
Este será el momento de hacer observaciones sobre la eficacia de los algoritmos para discernir cuales
son mejores para nuestro caso concreto.
Para evaluar los modelos tendremos en cuenta toda la información a nuestra disposición que en este
proyecto son las diferentes métricas y las matrices de confusión. Existen otras formas de representación
de la eficacia de los modelos de clasificación como son por ejemplo las curvas ROC y AUC.
46 Trabajo Fin de Máster
6Manual de uso
Al ejecutar el programa podemos ejecutar una fase en concreto. Las fases ejecutadas por el programa
coinciden con las descritas en la sección 5, con la diferencia de que se han organizado de la siguiente
manera:
6.1. Fase 0: obtención de las muestras ELF ARM.
El dataset inicial contiene muestras de diferentes arquitecturas de sistema, por este motivo el primer
paso consiste en obtener los ficheros binarios ejecutables tipo ELF y arquitectura ARM del dataset.
Obtendremos un directorio conteniendo únicamente los ficheros ELF ARM del total de muestras del
dataset inicial tras ejecutar manualmente los siguientes comandos desde la consola bash:
$ for file in *; do file $file | grep -i elf | grep -i arm; done > <
↪→ ruta_del_fichero_conteniendo_la_lista_de_ficheros_ELF_ARM_ >
$ mkdir <directorio_destino_de_los_ficheros_ELF_ARM >
$ cp $(cat <ruta_del_fichero_conteniendo_la_lista_de_ficheros_ELF_ARM_ > | cut -d
↪→ ":" -f1) <directorio_destino_de_los_ficheros_ELF_ARM >
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
47
CAPÍTULO 6. MANUAL DE USO
6.2. Fase 1: obtención de los informes de los ficheros ELF ARM.
En esta fase obtendremos los reportes de los ficheros malware seleccionados procedentes de LiSa y
VirusTotal. Para ello utilizamos el primero de los scripts que se ha llamado 1_lisa_handler.py, que es el
encargado de hacer de cliente con las APIs de LiSa y VirusTotal.
A alto nivel las acciones a realizar son las siguientes:
1. Envío de muestras a LiSa,
2. Obtención de reportes LiSa,
3. Envío y obtención de reportes VirusTotal.
6.2.1. Envío de muestras a LiSa
El envío de muestras al servidor LiSa se realiza con siguiente linea de comandos:
$ ./1 _lisa_handler.py --send_pending_to_sandbox --samples_dir <
↪→ directorio_conteniendo_los_ficheros_ELF_ARM >
Tras ejecutar esta linea se envían a LiSa todas las muestras del directorio de las que aún no se haya
obtenido reporte.
6.2.2. Obtención de reportes malware de LiSa
Tras enviar las muestras de malware a LiSa el servidor necesitará tiempo para procesar las muestras
y generar los informes. La generación de los informes toma varios días con la configuración utilizada por
lo que se ha implementado una opción que permite ejecutar la obtención de informes cada cierto tiempo
obteniendo, además de los informes, el estado del proceso en ese momento.
Internamente esta acción consiste en obtener los informes de la API De LiSa y guardar en disco
los informes en formato JSON. Esta acción se ejecuta a través de la siguiente linea de comandos:
$ ./1 _lisa_handler.py --update_reports_collection
Tras ejecutar esta linea se inicia un proceso de solicitud a LiSa y guardado a disco de los informes no
obtenidos previamente.
48 Trabajo Fin de Máster
CAPÍTULO 6. MANUAL DE USO
6.2.3. Envío y obtención de informes VirusTotal
Esta acción consiste en enviar y obtener de VirusTotal los informes en formato JSON de las muestras
ELF ARM aún no analizadas para su almacenamiento en disco local. Esto se realiza a través de la siguiente
linea de comandos:
$ ./1 _lisa_handler.py --virustotal --samples_dir <
↪→ directorio_conteniendo_los_ficheros_ELF_ARM >
Tras ejecutar esta linea se inicia un proceso de solicitud y obtención de informes al API de VirusTotal.
6.3. Fase 2: obtención de las repeticiones de palabras.
Esta fase es la encargada de:
1. Obtener y contar las palabras contenidas en los reportes LiSa para obtener las características que
llamamos X,
2. analizar con AVClass los informes VirusTotal para obtener la información objetivo, las etiquetas de
cada malware, a lo que llamaremos y,
3. asignación de cada etiqueta y a sus características X, que formará nuestra matriz inicial,
4. particionado de la matriz inicial en subconjuntos disjuntos para entrenamiento y test,
5. aplicación del primer filtro, consistente en eliminar las palabras con pocas apariciones en el dataset
de entrenamiento.
6. obtención del universo de palabras y la cantidad de repeticiones del subconjunto de entrenamiento.
Estas acciones se realizan con el segundo script llamado 2_loader.py ejecutando la siguiente linea de
comandos:
$ ./2 _loader.py
6.4. Fase 3: Selección de características.
En nuestro proyecto, dado que partimos de una cantidad de características superior a los 50 millones,
hacemos la selección de características por medio de filtros.
Los filtros aplicados son los siguientes:
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
49
CAPÍTULO 6. MANUAL DE USO
1. Filtro de características duplicadas, reduce la cantidad de características que contienen la misma
información,
2. Filtro TFIDF, permite saber qué palabras son más relevantes para clasificar un documento dentro
de un conjunto de documentos,
3. Filtro por Chi2, un criterio específico para modelos de clasificación.
6.5. Fase 4: Muestreo, entrenamiento y validación de los modelos.
En primer lugar se ha definido una estrategia de muestreo antes de entrenar los modelos, lo cual
permite hacer ciertos cambios sobre el conjunto de entrenamiento con el fin de mejorar el desempeño de
los modelos de clasificación.
A continuación todos los modelos se entrenan con el subconjunto de entrenamiento (matrices Xtrain e
ytrain), para posteriormente preguntar al modelo ya entrenado qué predicción nos da si le preguntamos
por las muestras contenidas en la matriz Xtest. Finalmente, una vez tenemos la predicción del modelo,
podemos comparar dichos resultados con los esperados, los cuales se encuentra en la matriz ytest, lo cual
nos permite obtener las métricas de exhaustividad, exactitud, precisión y F1 correspondientes a la eficacia
del algoritmo.
El haber obtenido estos valores para todos los modelos en las diferentes condiciones nos permitirá
comparar resultados y ver qué modelos han conseguido mejor empeño.
50 Trabajo Fin de Máster
7Conclusiones
En este proyecto se ha llevado a cabo un estudio de aprendizaje automático utilizando un conjunto
de ficheros malware ELF de arquitectura ARM, lo cual nos ha permitido comparar 42 combinaciones de
técnicas de muestreo y algoritmos de clasificación en el contexto de clasificación de malware.
La realización de este proyecto ha requerido la puesta en marcha de un servicio local LiSa para el
análisis dinámico de malware y la implementación de dos herramientas software: una para el procesado
masivo de malware y otra encargada de realizar el proceso de análisis desde el dato en crudo hasta el
entrenamiento y evaluación de cada modelo de clasificación, pasando por la vectorización de los datos y
la selección de características, procurando en todo momento realizar un buen manejo de la información
para evitar fugas de datos que nos pudieran conducir a predicciones excesivamente optimistas e irreales.
Los modelos obtenidos han sido evaluados considerando la que se ha considerado la métrica más
conveniente para nuestra tarea de clasificación de malware: la media ponderada de F1.
Respecto a los resultados obtenidos, A.2.1 y A.3, observamos lo siguiente:
De las combinaciones estudiadas, de los modelos que mejor F1 han obtenido, ninguno ha aplicado
técnicas de muestreo. Sin embargo se observa un aumento en la variedad de respuestas en los
modelos que sí utilizaron alguna técnica de muestreo, esto tiene sentido ya que el objeto de estas
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
51
CAPÍTULO 7. CONCLUSIONES
técnicas es equilibrar el dataset, por lo que se comprueba que estas técnicas mejoran la capacidad
de clasificación de las clases infrarrepresentadas.
Modelo de clasificación más penalizado por las técnicas de muestreo: Árbol de decisión.
Técnicas de muestreo que menor penalización han producido: Condensación de vecinos más cercanos
y ADASYN.
Modelos de clasificación que han mejorado sus resultados utilizando técnicas de muestreo:
Condensación de vecinos más cercanos con Bosque Aleatorio, Condensación de vecinos más cercanos
con Naive Bayes y ADASYN con Árbol de decisión.
Modelo con muestreo con mejor métrica F1 ponderada: Bosque aleatorio con Condensación de
vecinos más cercanos.
Las clases de malware mejor clasificadas por los modelos han sido Mirai y Gafgyt.
Modelos de clasificación con mejor valoración F1 ponderada: Red neuronal, Árbol de decisión,
AdaBoost y Bosque aleatorio.
Mayor variedad de respuestas: Red Neuronal, Naive Bayes, Nearest Neighbors y AdaBoost.
Por lo tanto, como resultado final, la combinación de muestreo y clasificación obtenida que mejor
métrica y comportamiento ha mostrado en este proyecto la Red Neuronal sin técnicas de muestreo.
Es conveniente, y forma parte de la metodología 5.3, ser críticos con los resultados obtenidos. Por
eso decimos que aunque clasificar dentro de un universo formado por 7 clases como posible respuesta
supone una mayor dificultad que una clasificación binaria, si comparáramos la precisión de este modelo
con el de un hipotético modelo que generara su clasificación apuntando siempre a la clase mayoritaria,
encontraríamos que los modelos obtenidos no proporcionan ninguna mejora respecto a dicho modelo
hipotético porque la clase mayoritaria forma un 58.32% del conjunto de datos y la precisión obtenida por
el mejor modelo, la red neuronal, se encuentra por debajo con un 52.3% de precisión, por lo que debemos
decir que los modelos obtenidos no mejoran la capacidad de predicción que teníamos anteriormente, lo
cual es objetivo fundamental en una aplicación de aprendizaje automático.
Por otro lado, gracias entre otros factores a la metodología aplicada para evitar fugas de datos, el
resultado obtenido puede ser utilizado en el desarrollo de futuros proyectos ya que la comparativa generada
nos indica qué ha funcionado mejor y peor, y qué técnicas tienen más posibilidades de funcionar.
De hecho, el repositorio de muestras de malware utilizado en este proyecto ha recibido cinco veces más
muestras de malware para Linux-ARM en el último año que en toda su historia. Estas muestras no han
sido utilizadas en este proyecto por la limitación de tiempo y capacidad computacional con la que se ha
contado, pero nos hace pensar que será factible conseguir una mejor capacidad de clasificación en futuros
estudios en este campo.
52 Trabajo Fin de Máster
8Lineas futuras
A continuación las acciones que se proponen tomar para mejorar la capacidad de clasificación de los
modelos:
1. Aumentar la capacidad computacional: Como hemos visto, la cantidad de muestras y características
producen una matriz difícilmente manejable con la capacidad de cómputo con que se contaba en
este proyecto. Dado el aumento que se está observando en la cantidad de muestras disponibles, sería
de gran interés aumentar la capacidad de cómputo para mejorar los resultados de futuros modelos
de clasificación. Este aumento de capacidad puede hacerse bien por medio de la utilización de un
cluster local, utilizando computación distribuida o bien utilizando los servicios de nube orientados
a inteligencia artificial con los que actualmente cuentan varias compañías en internet.
2. Dividir el preprocesado: un preprocesado dividido en tareas podría reducir los requisitos
computacionales del proyecto.
3. Refinar la selección de características: esto se puede hacer utilizando una combinación de filtros de
selección de características diferente y afinando los parámetros de los filtros utilizados.
4. Equilibrar los filtros de características para mejorar la detección de clases poco numerosas: se
observa que es habitual que los filtros masivos de características penalizan a las clases con menos
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
53
CAPÍTULO 8. LINEAS FUTURAS
representantes. Concretamente en este proyecto el filtro por número de apariciones es el primero
aplicado al dataset y consiste en la eliminación de palabras aplicando una proporción que depende
únicamente de la cantidad de muestras de la clase más pequeña. Esto redunda en una penalización en
la capacidad de clasificación de las clases con menos muestras. Podría interesar en futuros proyectos
equilibrar este filtro para eliminar esta penalización o bien directamente eliminar las clases que no
disponen de muestras suficientes como para ser clasificadas correctamente.
5. Reenfocar el etiquetado de muestras: la verdad fundamental de la que partimos y el resultado
que buscamos obtener afectan de manera importante al modelo de clasificación de malware que
pretendamos obtener. Como se puede ver en la sección 5.3.1, el etiquetado que nos proporciona la
combinación de VirusTotal y AVClass está centrado en la familia a la que pertenece el malware que
estamos analizando. Sin embargo, la información que más interesa a un analista de malware es qué
funcionalidad exactamente se esconde dentro del malware, más allá de a qué familia pertenece. Es
cierto que conocer la familia y cierta información, como la plataforma a la que está dirigido dicho
malware, nos pueda permitir inferir qué tipo de funcionalidad es más probable que se encuentre
dentro de dicho fichero, pero no es lo ideal. Esto se podría conseguir cambiando la manera en la
que AVClass parsea las etiquetas en el caso de que los motores antivirus de VirusTotal estuvieran
proporcionando la funcionalidad completa, pero no es el caso. Ya que un fichero malware suele
contener varias funcionalidades dentro de sí, se necesitaría un etiquetado detallado o que permita
obtener la funcionalidad concreta asociada a cada fichero conocido, lo cual puede que requiera la
participación de los fabricantes de antivirus. En cualquier caso sería muy conveniente profundizar en
este aspecto si se quiere partir de una verdad fundamental fiable y realmente útil, algo imprescindible
para que un proyecto de aprendizaje automático llegue a un resultado fiable y útil.
6. Añadir otros tipos de informes malware: añadir otras fuentes de información, además de los análisis
estático y dinámico utilizados, como por ejemplo el código desensamblado u otras herramientas que
pudieran generar otra información. Estos informes podrían proporcionar características de calidad
a los modelos lo cual redundará en una mejora de la capacidad de clasificación.
7. Añadir formas de visualización del dataset: siempre es interesante añadir punto de vista de análisis
del dataset, tanto visuales como puramente numéricos, que permitan conocer mejor el dataset con
que estamos trabajando. Esto será de ayuda para elaborar mejores modelos de clasificación.
8. Añadir métricas de evaluación de modelos: como hemos podido ver al final de este proyecto, cada
forma de métrica ha proporcionado una información distinta que no podríamos haber obtenido si
no hubieramos contado con esa métrica concreta. Existen otras métricas además de las vistas en
este proyecto que ayudarán a evaluar los modelos como son las curvas ROC y AUC y que sería
interesante añadir a futuras iteraciones de este proyecto.
54 Trabajo Fin de Máster
Bibliografía
[1] Global Digital Report 2018. 2018. url: https://wearesocial.com/blog/2018/01/global-
digital-report-2018.
[2] Informe mobile en Espania y en el mundo 2017. 2017. url: https://www.amic.media/media/
files/file_352_1289.pdf.
[3] Panorama actual de la ciberseguridad en Espana. Oct. de 2019. url: https://www.ospi.es/
export/sites/ospi/documents/documentos/Seguridad-y-privacidad/Google_Panorama-
actual-de-la-ciberseguridad-en-Espana.pdf.
[4] Allianz Risk Barometer 2020 - Identifying the major business risks for 2020. url: https : / /
www.agcs.allianz.com/content/dam/onemarketing/agcs/agcs/reports/Allianz-Risk-
Barometer-2020.pdf.
[5] Malware: van en aumento los ataques a macOS y Linux. url: https://andro2id.com/malware-
van-aumento-ataques/.
[6] G Data: menos malware pero más complejo y peligroso. 25 de sep. de 2012. url: https://www.
muyseguridad.net/2012/09/25/g-data-menos-malware-pero-mas-complejo-peligroso/.
[7] Allianz Risk Barometer 2017 - Top risks in focus: Cyber incidents. url: https://www.agcs.
allianz.com/insights/expert-risk-articles/allianz-risk-barometer-2017-top-risks-
cyber-incidents/.
[8] Informe de Amenazas y Tendencias. Edición 2019. url: https : / / www. ccn - cert . cni . es /
informes/informes- ccn- cert- publicos/3776- ccn- cert- ia- 13- 19- ciberamenazas- y-
tendencias-edicion-2019-1/file.html.
[9] Aplicaciones GNU/Linux. url: https://es.wikipedia.org/wiki/GNU/Linux\#Aplicaciones.
[10] Android challenges Windows as world’s most popular operating system in terms of internet usage.
2017. url: https://gs.statcounter.com/press/android-challenges-windows-as-worlds-
most-popular-operating-system.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
55
BIBLIOGRAFÍA
[11] ARM 2019 Roadshow slides. 2019. url: https://www.arm.com/- /media/global/company/
investors/PDFs/Arm_SBG_Q1_2019_Roadshow_Slides_FINAL.pdf?revision=9e3e50c9-9b76-
48f1-b02c-a30f5b4f2ee4&la=en.
[12] Linux and Open Source on the Move in Embedded, Says Survey. Ago. de 2017. url: https://www.
linux.com/news/linux-and-open-source-move-embedded-says-survey/.
[13] Alireza Souri y Rahil Hosseini. «A state-of-the-art survey of malware detection approaches using
data mining techniques». En: Human-centric Computing and Information Sciences 8.1 (2018),
pág. 3. issn: 2192-1962. doi: 10.1186/s13673-018-0125-x. url: https://doi.org/10.1186/
s13673-018-0125-x.
[14] WatchGuard Launches New Quarterly Internet Security Report. 30 de mar. de 2017. url: https:
//www.watchguard.com/wgrd-about/press-releases/watchguard-launches-new-quarterly-
internet-security-report.
[15] Pedram Hayati y Vidyasagar Potdar. «Evaluation of spam detection and prevention frameworks
for email and image spam - a state of art». En: (ene. de 2008).
[16] Debian.org. Debian Project. Accedido en 09-06-2020 a urlhttps://www.debian.org/. 2020.
[17] Linux Sandbox github repository. 2020. url: https://github.com/danieluhricek/LiSa.
[18] Alejandro Martín García, Raul Lara-Cabrera y David Camacho. «A new tool for static and dynamic
Android malware analysis». En: sep. de 2018, págs. 509-516. doi: 10.1142/9789813273238_0066.
[19] Análisis de Malware. 2020. url: https://es.wikipedia.org/wiki/An%C3%A1lisis_de_malware.
[20] url: https://www.cvedetails.com.
[21] AV-Test Lab tests 16 Linux antivirus products against Windows and Linux malware. url: https:
//www.csoonline.com/article/2989137/linux/av-test-lab-tests-16-linux-antivirus-
products-against-windows-and-linux-malware.html.
[22] Comparison of top data science libraries for Python, R and Scala [Infographic]. 2018. url: https:
//activewizards.com/blog/comparison-of-top-data-science-libraries-for-python-r-
and-scala-infographic/.
[23] Richard Rivera Guevara. «Tools for the Detection and Analysis of Potentially Unwanted Programs».
Tesis doct. Nov. de 2018. doi: 10.20868/UPM.thesis.53395.
[24] Konrad Rieck y col. «Learning and Classification of Malware Behavior». En: jul. de 2008. doi:
10.1007/978-3-540-70542-0_6.
[25] George Dahl y col. «Large-scale malware classification using random projections and neural
networks». En: oct. de 2013, págs. 3422-3426. doi: 10.1109/ICASSP.2013.6638293.
[26] Konrad Rieck y col. «Automatic analysis of malware behavior using machine learning». En: Journal
of Computer Security 19 (ene. de 2011), págs. 639-668. doi: 10.3233/JCS-2010-0410.
56 Trabajo Fin de Máster
BIBLIOGRAFÍA
[27] Michael Bailey y col. «Automated Classification and Analysis of Internet Malware». En: vol. 4637.
Sep. de 2007, págs. 178-197. doi: 10.1007/978-3-540-74320-0_10.
[28] Ulrich Bayer y col. «Scalable, Behavior-Based Malware Clustering.» En: ene. de 2009.
[29] Roberto Perdisci, Wenke Lee y Nick Feamster. «Behavioral Clustering of HTTP-Based Malware
and Signature Generation Using Malicious Network Traces». En: ene. de 2010, págs. 391-404.
[30] M Zubair Rafique y Juan Caballero. «FIRMA: Malware Clustering and Network Signature
Generation with Mixed Network Behaviors». En: ene. de 2013. doi: 10.1007/978-3-642-41284-
4_8.
[31] Julio Canto y col. «Large scale malware collection: Lessons learned». En: (ene. de 2008).
[32] Aziz Mohaisen y Omar Alrawi. «AV-Meter: An Evaluation of Antivirus Scans and Labels». En:
jul. de 2014, págs. 112-131. isbn: 978-3-319-08508-1. doi: 10.1007/978-3-319-08509-8_7.
[33] Federico Maggi y col. «Finding Non-trivial Malware Naming Inconsistencies». En: vol. 7093. Dic. de
2011, págs. 144-159. doi: 10.1007/978-3-642-25560-1_10.
[34] It’s signed, therefore it’s clean, right? 2010. url: http://citeseerx.ist.psu.edu/viewdoc/
download?doi=10.1.1.169.1531&rep=rep1&type=pdf.
[35] The Common Malware Enumeration Initiative. 2005. url: https://cme.mitre.org/docs/docs-
2005/virusbulletin_cme_sept05.pdf.
[36] P.-M. Bureau y D. Harley. «A dose by any other name». En: (2008). url: http://static4.
esetstatic.com/us/resources/white-papers/Harley-Bureau-VB2008.pdf.
[37] D. Harley. «The Game of the Name: Malware Naming, Shape Shifters and Sympathetic Magic».
En: (2009).
[38] Roberto Perdisci y ManChon U. «VAMO: Towards a fully automated malware clustering validity
analysis». En: dic. de 2012, págs. 329-338. doi: 10.1145/2420950.2420999.
[39] Peng Li y col. «On Challenges in Evaluating Malware Clustering». En: vol. 6307. Sep. de 2010,
págs. 238-255. doi: 10.1007/978-3-642-15512-3_13.
[40] Marcos Sebastián y col. «AVclass: A Tool for Massive Malware Labeling». En: vol. 9854. Sep. de
2016, págs. 230-253. isbn: 978-3-319-45718-5. doi: 10.1007/978-3-319-45719-2_11.
[41] Raquel Noblejas Sampedro. «Estudio de algoritmos de detección de anomalías y su aplicación a
entornos de ciberseguridad». Madrid, 2016. url: http://oa.upm.es/40490/.
[42] An Introduction to Machine Learning Theory and Its Applications: A Visual Tutorial with Examples.
url: http : / / www . toptal . com / machine - learning / machine - learning - theory - an -
introductory-primer.
[43] Charles X. Ling y Chenghui Li. «Data Mining for Direct Marketing: Problems and Solutions». En:
KDD. 1998.
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
57
BIBLIOGRAFÍA
[44] Haibo He y col. «ADASYN: Adaptive synthetic sampling approach for imbalanced learning».
En: 2008 IEEE International Joint Conference on Neural Networks (IEEE World Congress on
Computational Intelligence). 2008, págs. 1322-1328.
[45] Nitesh Chawla y col. «SMOTE: Synthetic Minority Over-sampling Technique». En: J. Artif. Intell.
Res. (JAIR) 16 (ene. de 2002), págs. 321-357. doi: 10.1613/jair.953.
[46] EMC Education Services. Data Science and Big Data Analytics: Discovering, Analyzing, Visualizing
and Presenting Data. Wiley, 2015. isbn: 9781118876138. url: https://books.google.es/books?
id=QLblBQAAQBAJ.
[47] Boosting. url: https://es.wikipedia.org/wiki/Boosting.
[48] Gene expression programming. url: https://en.wikipedia.org/wiki/Gene_expression_
programming.
[49] Accuracy, Precision, Recall or F1? 15 de mar. de 2018. url: https://towardsdatascience.com/
accuracy-precision-recall-or-f1-331fb37c5cb9.
[50] What I Learned Implementing a Classifier from Scratch in Python. url: http : / / www .
jeannicholashould.com/what-i-learned-implementing-a-classifier-from-scratch.html?
utm_campaign=DataScience_Digest&utm_medium=email&utm_source=Revue%20newsletter.
[51] VirusShare_Linux_20140617. Accedido en 15-03-2019 a url: https://tracker.virusshare.com:7000/
torrents/VirusShare_ELF_20140617.zip.torrent. 2014.
[52] VirusShare_Linux_20160715. Accedido en 15-03-2019 a url: https://tracker.virusshare.com:7000/
torrents/VirusShare_Linux_20160715.zip.torrent. 2016.
[53] Fortiguard encyclopedia. url: https://www.fortiguard.com/encyclopedia/.
58 Trabajo Fin de Máster
Apéndices
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
59
AAnexos
A.1. Formato de informe LiSa
Los informes LiSa siguen el formato JSON con los siguientes campos y tipos:
{
"file_name": <string>,
"type": <string>,
"exec_time": <int>,
"timestamp": <string>,
"md5": <string>,
"sha1": <string>,
"sha256": <string>,
"analysis_start_time": <string>,
"static_analysis": {
"binary_info": {
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas deaprendizaje automático
61
APÉNDICE A. ANEXOS
"arch": <string>,
"endianess": <string>,
"format": <string>,
"machine": <string>,
"type": <string>,
"size": <int>,
"os": <string>,
"static": <boolean>,
"interpret": <string>,
"language": <string>,
"stripped": <boolean>,
"relocations": <boolean>,
"min_opsize": <int>,
"max_opsize": <int>,
"entry_point": [<int>, ..]
},
"imports": [
{
"ordinal": <int>,
"bind": <string>,
"type": <string>,
"name": <string>,
"plt": <int>
},..
],
"exports": [
{
"name": <string>,
"flagname": <string>,
"realname": <string>,
"ordinal": <int>,
"bind": <string>,
"size": <int>,
"type": <string>,
"vaddr": <int>,
"paddr": <int>,
"is_imported": false
62 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
}, ..
],
"libs": [<string>, ..],
"relocations": [],
"symbols": [
{
"name": <string>,
"flagname": <string>,
"realname": <string>,
"ordinal": <int>,
"bind": <string>,
"size": <int>,
"type": <string>,
"vaddr": <int>,
"paddr": <int>,
"is_imported": false
},..
],
"sections": [
{
"name": <string>,
"size": <int>,
"vsize": <int>,
"perm": <string>,
"paddr": <int>,
"vaddr": <int>
},..]
"strings": [ <string>, .. ],
},
"dynamic_analysis": {
"syscalls": [],
"open_files": [],
"processes": [
{
"pid": <int>,
"parent": <int>
}
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
63
APÉNDICE A. ANEXOS
]
},
"network_analysis": {
"anomalies": [],
"irc_messages": [],
"dns_questions": [],
"http_requests": [],
"telnet_data": [],
"port_statistics": {
"TCP": {},
"UDP": {
"67": <int>,
..
}
},
"endpoints": [
{
"ip": <string>,
"ports": [<string>,..],
"blacklisted": false,
"data_in": <int>,
"data_out": <int>
},..
]
},
"view": {
"status": <string>
},
"pcap": <string>,
"machinelog": <string>,
"output": <string>
}
64 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
65
APÉNDICE A. ANEXOS
A.2. Tablas de resultados
A.2.1. Tabla de resultados - media Ponderada
Sampleado Algoritmo F1 Exhaustividad Precisión ExactitudNaive Bayes 0.273 0.213 0.444 0.213Nearest Neighbors 0.450 0.482 0.466 0.482Decision Tree 0.475 0.609 0.510 0.609
Ninguno Random Forest 0.467 0.614 0.614 0.614Neural Net 0.518 0.607 0.523 0.607AdaBoost 0.474 0.607 0.418 0.607Naive Bayes 0.246 0.180 0.467 0.180Nearest Neighbors 0.430 0.421 0.447 0.421Decision Tree 0.011 0.030 0.714 0.030
Aleatorio Random Forest 0.130 0.213 0.383 0.213Neural Net 0.440 0.416 0.474 0.416AdaBoost 0.251 0.198 0.408 0.198Naive Bayes 0.254 0.190 0.433 0.190Nearest Neighbors 0.410 0.388 0.456 0.388Decision Tree 0.110 0.218 0.214 0.218
SMOTE Random Forest 0.425 0.449 0.431 0.449Neural Net 0.435 0.401 0.480 0.401AdaBoost 0.385 0.332 0.471 0.332Naive Bayes 0.258 0.193 0.444 0.193Nearest Neighbors 0.395 0.373 0.436 0.373Decision Tree 0.478 0.599 0.569 0.599
ADASYN Random Forest 0.416 0.437 0.533 0.437Neural Net 0.421 0.393 0.458 0.393AdaBoost 0.394 0.343 0.499 0.343Naive Bayes 0.325 0.294 0.487 0.294
Condensed Nearest Neighbors 0.224 0.226 0.420 0.226Nearest Decision Tree 0.473 0.614 0.601 0.614Neighbour Random Forest 0.504 0.612 0.570 0.612
Neural Net 0.419 0.401 0.449 0.401AdaBoost 0.421 0.398 0.459 0.398Naive Bayes 0.240 0.175 0.512 0.175Nearest Neighbors 0.298 0.266 0.472 0.266Decision Tree 0.004 0.030 0.009 0.030
SMOTENN Random Forest 0.006 0.020 0.043 0.020Neural Net 0.240 0.208 0.439 0.208AdaBoost 0.077 0.063 0.617 0.063Naive Bayes 0.273 0.203 0.470 0.203Nearest Neighbors 0.403 0.378 0.454 0.378
SMOTE Decision Tree 0.033 0.046 0.537 0.046Tomek Random Forest 0.453 0.485 0.553 0.485
Neural Net 0.447 0.404 0.501 0.404AdaBoost 0.210 0.155 0.494 0.155
Tabla A.1: Tabla de resultados - Media: Ponderada66 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
A.2.2. Tabla de resultados - media Micro
Sampleado Algoritmo F1 Exhaustividad Precisión ExactitudNaive Bayes 0.213 0.213 0.213 0.213Nearest Neighbors 0.482 0.482 0.482 0.482Decision Tree 0.609 0.609 0.609 0.609
Ninguno Random Forest 0.614 0.614 0.614 0.614Neural Net 0.607 0.607 0.607 0.607AdaBoost 0.607 0.607 0.607 0.607Naive Bayes 0.180 0.180 0.180 0.180Nearest Neighbors 0.421 0.421 0.421 0.421Decision Tree 0.030 0.030 0.030 0.030
Aleatorio Random Forest 0.213 0.213 0.213 0.213Neural Net 0.416 0.416 0.416 0.416AdaBoost 0.198 0.198 0.198 0.198Naive Bayes 0.190 0.190 0.190 0.190Nearest Neighbors 0.388 0.388 0.388 0.388Decision Tree 0.218 0.218 0.218 0.218
SMOTE Random Forest 0.449 0.449 0.449 0.449Neural Net 0.401 0.401 0.401 0.401AdaBoost 0.332 0.332 0.332 0.332Naive Bayes 0.193 0.193 0.193 0.193Nearest Neighbors 0.373 0.373 0.373 0.373Decision Tree 0.599 0.599 0.599 0.599
ADASYN Random Forest 0.437 0.437 0.437 0.437Neural Net 0.393 0.393 0.393 0.393AdaBoost 0.343 0.343 0.343 0.343Naive Bayes 0.294 0.294 0.294 0.294
Condensed Nearest Neighbors 0.226 0.226 0.226 0.226Nearest Decision Tree 0.614 0.614 0.614 0.614Neighbour Random Forest 0.612 0.612 0.612 0.612
Neural Net 0.401 0.401 0.401 0.401AdaBoost 0.398 0.398 0.398 0.398Naive Bayes 0.175 0.175 0.175 0.175Nearest Neighbors 0.266 0.266 0.266 0.266Decision Tree 0.030 0.030 0.030 0.030
SMOTENN Random Forest 0.020 0.020 0.020 0.020Neural Net 0.208 0.208 0.208 0.208AdaBoost 0.063 0.063 0.063 0.063Naive Bayes 0.203 0.203 0.203 0.203Nearest Neighbors 0.378 0.378 0.378 0.378
SMOTE Decision Tree 0.046 0.046 0.046 0.046Tomek Random Forest 0.485 0.485 0.485 0.485
Neural Net 0.404 0.404 0.404 0.404AdaBoost 0.155 0.155 0.155 0.155
Tabla A.2: Tabla de resultados - Media: Micro
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
67
APÉNDICE A. ANEXOS
A.2.3. Tabla de resultados - media Macro
Sampleado Algoritmo F1 Exhaustividad Precisión ExactitudNaive Bayes 0.139 0.210 0.176 0.213Nearest Neighbors 0.142 0.149 0.271 0.482Decision Tree 0.132 0.167 0.254 0.609
Ninguno Random Forest 0.127 0.167 0.614 0.614Neural Net 0.174 0.185 0.235 0.607AdaBoost 0.171 0.190 0.290 0.607Naive Bayes 0.119 0.169 0.179 0.180Nearest Neighbors 0.155 0.154 0.166 0.421Decision Tree 0.013 0.169 0.255 0.030
Aleatorio Random Forest 0.105 0.204 0.152 0.213Neural Net 0.197 0.202 0.200 0.416AdaBoost 0.109 0.141 0.143 0.198Naive Bayes 0.116 0.166 0.161 0.190Nearest Neighbors 0.171 0.179 0.177 0.388Decision Tree 0.067 0.134 0.067 0.218
SMOTE Random Forest 0.157 0.187 0.159 0.449Neural Net 0.178 0.177 0.196 0.401AdaBoost 0.157 0.177 0.180 0.332Naive Bayes 0.118 0.168 0.166 0.193Nearest Neighbors 0.164 0.170 0.168 0.373Decision Tree 0.135 0.165 0.244 0.599
ADASYN Random Forest 0.174 0.241 0.232 0.437Neural Net 0.198 0.206 0.203 0.393AdaBoost 0.175 0.177 0.236 0.343Naive Bayes 0.165 0.208 0.190 0.294
Condensed Nearest Neighbors 0.101 0.157 0.169 0.226Nearest Decision Tree 0.146 0.176 0.404 0.614Neighbour Random Forest 0.151 0.175 0.538 0.612
Neural Net 0.173 0.180 0.175 0.401AdaBoost 0.223 0.229 0.266 0.398Naive Bayes 0.111 0.152 0.182 0.175Nearest Neighbors 0.157 0.209 0.183 0.266Decision Tree 0.020 0.176 0.018 0.030
SMOTENN Random Forest 0.024 0.111 0.030 0.020Neural Net 0.134 0.185 0.170 0.208AdaBoost 0.038 0.139 0.191 0.063Naive Bayes 0.125 0.173 0.177 0.203Nearest Neighbors 0.169 0.176 0.177 0.378
SMOTE Decision Tree 0.037 0.185 0.238 0.046Tomek Random Forest 0.180 0.221 0.241 0.485
Neural Net 0.196 0.182 0.218 0.404AdaBoost 0.120 0.181 0.194 0.155
Tabla A.3: Tabla de resultados - Media: Macro
68 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
A.3. Matrices de confusión
A.3.1. Muestreo: Ninguno
Modelo: Naive Bayes
Metrica: Ponderada
F1: 0.273
Accuracy: 0.213
Recall: 0.213
Precision: 0.444
Modelo: Nearest Neighbors
Metrica: Ponderada
F1: 0.450
Accuracy: 0.482
Recall: 0.482
Precision: 0.466
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
69
APÉNDICE A. ANEXOS
Modelo: Decision Tree
Metrica: Ponderada
F1: 0.475
Accuracy: 0.609
Recall: 0.609
Precision: 0.510
Modelo: Random Forest
Metrica: Ponderada
F1: 0.467
Accuracy: 0.614
Recall: 0.614
Precision: 0.614
70 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Modelo: Neural Net
Metrica: Ponderada
F1: 0.518
Accuracy: 0.607
Recall: 0.607
Precision: 0.523
Modelo: AdaBoost
Metrica: Ponderada
F1: 0.474
Accuracy: 0.607
Recall: 0.607
Precision: 0.418
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
71
APÉNDICE A. ANEXOS
A.3.2. Muestreo: Aleatorio
Modelo: Naive Bayes
Metrica: Ponderada
F1: 0.246
Accuracy: 0.180
Recall: 0.180
Precision: 0.467
Modelo: Nearest Neighbors
Metrica: Ponderada
F1: 0.430
Accuracy: 0.421
Recall: 0.421
Precision: 0.447
72 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Modelo: Decision Tree
Metrica: Ponderada
F1: 0.011
Accuracy: 0.030
Recall: 0.030
Precision: 0.714
Modelo: Random Forest
Metrica: Ponderada
F1: 0.130
Accuracy: 0.213
Recall: 0.213
Precision: 0.383
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
73
APÉNDICE A. ANEXOS
Modelo: Neural Net
Metrica: Ponderada
F1: 0.440
Accuracy: 0.416
Recall: 0.416
Precision: 0.474
Modelo: AdaBoost
Metrica: Ponderada
F1: 0.251
Accuracy: 0.198
Recall: 0.198
Precision: 0.408
74 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
A.3.3. Muestreo: SMOTE
Modelo: Naive Bayes
Metrica: Ponderada
F1: 0.254
Accuracy: 0.190
Recall: 0.190
Precision: 0.433
Modelo: Nearest Neighbors
Metrica: Ponderada
F1: 0.410
Accuracy: 0.388
Recall: 0.388
Precision: 0.456
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
75
APÉNDICE A. ANEXOS
Modelo: Decision Tree
Metrica: Ponderada
F1: 0.110
Accuracy: 0.218
Recall: 0.218
Precision: 0.214
Modelo: Random Forest
Metrica: Ponderada
F1: 0.425
Accuracy: 0.449
Recall: 0.449
Precision: 0.431
76 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Modelo: Neural Net
Metrica: Ponderada
F1: 0.435
Accuracy: 0.401
Recall: 0.401
Precision: 0.480
Modelo: AdaBoost
Metrica: Ponderada
F1: 0.385
Accuracy: 0.332
Recall: 0.332
Precision: 0.471
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
77
APÉNDICE A. ANEXOS
A.3.4. Muestreo: ADASYN
Modelo: Naive Bayes
Metrica: Ponderada
F1: 0.258
Accuracy: 0.193
Recall: 0.193
Precision: 0.444
Modelo: Nearest Neighbors
Metrica: Ponderada
F1: 0.395
Accuracy: 0.373
Recall: 0.373
Precision: 0.436
78 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Modelo: Decision Tree
Metrica: Ponderada
F1: 0.478
Accuracy: 0.599
Recall: 0.599
Precision: 0.569
Modelo: Random Forest
Metrica: Ponderada
F1: 0.416
Accuracy: 0.437
Recall: 0.437
Precision: 0.533
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
79
APÉNDICE A. ANEXOS
Modelo: Neural Net
Metrica: Ponderada
F1: 0.421
Accuracy: 0.393
Recall: 0.393
Precision: 0.458
Modelo: AdaBoost
Metrica: Ponderada
F1: 0.394
Accuracy: 0.343
Recall: 0.343
Precision: 0.499
80 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
A.3.5. Muestreo: CondensedNearestNeighbour
Modelo: Naive Bayes
Metrica: Ponderada
F1: 0.325
Accuracy: 0.294
Recall: 0.294
Precision: 0.487
Modelo: Nearest Neighbors
Metrica: Ponderada
F1: 0.224
Accuracy: 0.226
Recall: 0.226
Precision: 0.420
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
81
APÉNDICE A. ANEXOS
Modelo: Decision Tree
Metrica: Ponderada
F1: 0.473
Accuracy: 0.614
Recall: 0.614
Precision: 0.601
Modelo: Random Forest
Metrica: Ponderada
F1: 0.504
Accuracy: 0.612
Recall: 0.612
Precision: 0.570
82 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Modelo: Neural Net
Metrica: Ponderada
F1: 0.419
Accuracy: 0.401
Recall: 0.401
Precision: 0.449
Modelo: AdaBoost
Metrica: Ponderada
F1: 0.421
Accuracy: 0.398
Recall: 0.398
Precision: 0.459
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
83
APÉNDICE A. ANEXOS
A.3.6. Muestreo: SMOTENN
Modelo: Naive Bayes
Metrica: Ponderada
F1: 0.240
Accuracy: 0.175
Recall: 0.175
Precision: 0.512
Modelo: Nearest Neighbors
Metrica: Ponderada
F1: 0.298
Accuracy: 0.266
Recall: 0.266
Precision: 0.472
84 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Modelo: Decision Tree
Metrica: Ponderada
F1: 0.004
Accuracy: 0.030
Recall: 0.030
Precision: 0.009
Modelo: Random Forest
Metrica: Ponderada
F1: 0.006
Accuracy: 0.020
Recall: 0.020
Precision: 0.043
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
85
APÉNDICE A. ANEXOS
Modelo: Neural Net
Metrica: Ponderada
F1: 0.240
Accuracy: 0.208
Recall: 0.208
Precision: 0.439
Modelo: AdaBoost
Metrica: Ponderada
F1: 0.077
Accuracy: 0.063
Recall: 0.063
Precision: 0.617
86 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
A.3.7. Muestreo: SMOTETomek
Modelo: Naive Bayes
Metrica: Ponderada
F1: 0.273
Accuracy: 0.203
Recall: 0.203
Precision: 0.470
Modelo: Nearest Neighbors
Metrica: Ponderada
F1: 0.403
Accuracy: 0.378
Recall: 0.378
Precision: 0.454
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
87
APÉNDICE A. ANEXOS
Modelo: Decision Tree
Metrica: Ponderada
F1: 0.033
Accuracy: 0.046
Recall: 0.046
Precision: 0.537
Modelo: Random Forest
Metrica: Ponderada
F1: 0.453
Accuracy: 0.485
Recall: 0.485
Precision: 0.553
88 Trabajo Fin de Máster
APÉNDICE A. ANEXOS
Modelo: Neural Net
Metrica: Ponderada
F1: 0.447
Accuracy: 0.404
Recall: 0.404
Precision: 0.501
Modelo: AdaBoost
Metrica: Ponderada
F1: 0.210
Accuracy: 0.155
Recall: 0.155
Precision: 0.494
Desarrollo de un modelo de clasificación de malware Linux ARM según su funcionalidad utilizando técnicas de aprendizajeautomático
89