Download Clasificación de malware mediante clusterización
Document related concepts
no text concepts found
Transcript
MEMORIAS DEL PRIMER CONCURSO DE INVESTIGACIÓN, DESARROLLO E INNOVACIÓN TECNOLÓGICA IDIT 2012 25 Clasificación de malware mediante clusterización González Medina Lilia Elena, Salazar Rubio José Miguel Resumen— La creciente dependencia, tanto de las personas como de las empresas, a las computadoras tiene como resultado un aumento considerable en la cantidad de información sensible que se encuentra en la red, tal como: nombres, direcciones, cuentas bancarias, PINs, contraseñas, contactos, números telefónicos, etc. Actualmente, esta información confidencial es el principal objetivo de los troyanos, virus y gusanos que se crean, ya que permite a los creadores del malware cometer fraudes, robos o extorsiones. Actualmente ningún antivirus cuenta con un mecanismo de detección y clasificación totalmente efectivo y no es posible para las compañías antivirus abarcar las miles de muestras que reciben a diario. Se sabe que la mayoría de esas muestras son variaciones de malware que ya se tiene identificado y que pocos son completamente nuevos. Para solucionar este problema se propone un método que crea vectores considerando las bibliotecas de enlace dinámico (archivos .dll) que usa el malware y la cantidad de funciones que llama de cada una, este vector se compara con los vectores almacenados en una base de datos para determinar si la muestra es una variación de malware ya identificado o si es nueva para la base de datos. Las muestras se van clasificando en clústers que representan las familias de los virus conocidos. En la primera evaluación. La última parte, aún en proceso, consiste en agilizar este método mediante la implementación de una red neuronal artificial. I. INTRODUCCIÓN La tecnología se vuelve cada día más esencial en nuestras vidas, por lo que la mayoría de los dispositivos electrónicos que utilizamos requieren de una computadora para funcionar. Dependemos de dispositivos como laptops, celulares, iPods, entre otros, para comunicarnos, trabajar y almacenar información que no podemos perder. Sin embargo, el aumento en el uso de estos dispositivos también significa que la cantidad de datos sensibles en la red, tanto de usuarios como de empresas, va creciendo significativamente. De acuerdo con Kaspersky [1], PandaSecurity [2] y Symantec [3], la mayor amenaza a la seguridad de esos datos confidenciales son los programas maliciosos, o malware, debido a que son desarrollados con el objetivo de obtener dinero de forma ilegal (fraudes, extorsiones, robo de identidad). Otros riesgos asociados a malware son: daños o pérdidas totales de software o hardware, LILIA ELENA GONZÁLEZ MEDINA y JOSÉ MIGUEL SALAZAR RUBIO pertenecen a la carrera ING. CIBERNÉTICA Y SISTEMAS COMPUTACIONALES de la Facultad de Ingeniería y realizaron el proyecto como parte de su tesis de licenciatura (Email: liliagm19@gmail.com, josmisu_@hotmail.com). El proyecto fue asesorado por el DR. ROBERTO ANTONIO VÁZQUEZ ESPINOZA DE LOS MONTEROS. Los autores agradecen al Dr. Roberto Antonio Vázquez Espinoza de los Monteros por su guía y paciencia. Y al profesor Luis Javier Pérez del Real por su apoyo y sus consejos. saturación de redes, consumo excesivo de los recursos de un sistema, etc. De acuerdo con Securelist [4], a nivel mundial, tan sólo durante noviembre del 2011 Kaspersky Lab Products registró: 204,595,286 ataques a la red bloqueados. 89,001,505 infecciones de páginas web prevenidas. 238,045,358 programas maliciosos detectados y neutralizados en computadoras de usuarios. Únicamente se desarrollaron códigos maliciosos usando tecnología ya existente; no se registraron creaciones de malware significativas, es decir, tan peligrosas como lo fue por ejemplo Stuxnet, que en el 2010 atacó una planta nuclear en Irán para reprogramar los sistemas industriales y modificar el funcionamiento de la maquinaria [5]. Seis meses después, en abril del 2012, Securelist reportó que de la información recopilada de computadoras que cuentan con productos de Kaspersky Lab: 280 millones de programas maliciosos fueron detectados y neutralizados 134 millones de infecciones de páginas web fueron prevenidas Más de 24 millones de URLs maliciosas fueron detectadas. Además, seis de las diez amenazas más comunes de Internet a nivel mundial, durante noviembre del 2011, fueron troyanos. En México, nueve de las diez infecciones más comunes, en el último mes (del 24 de enero al 21 de febrero), fueron causadas por troyanos y gusanos. Figura 1. Total de muestras de malware analizadas por AV-Test en los últimos cinco años. El Instituto AV-Test [6], cuya base de datos recibe aportaciones diarias gracias a miles de fuentes internacionales, lleva estadísticas del malware que ha analizado desde 1984 a 26 MEMORIAS DEL PRIMER CONCURSO DE INVESTIGACIÓN, DESARROLLO E INNOVACIÓN TECNOLÓGICA IDIT 2012 la fecha. En la Figura 1 se puede observar el enorme crecimiento que ha tenido el malware en los últimos cinco años. La cantidad de muestras registradas en un periodo de mes y medio, que es lo que había transcurrido del año al momento de la creación de la gráfica (15 de febrero de 2012), es más del doble del total de malware analizado hace cuatro años. Figura 2. Muestras únicas (sin familia) de malware recibidas en PandaLabs del 2004 al 2007 Por otro lado, los registros de Panda Security indican que la cantidad de muestras únicas, no variantes, que recibieron en su laboratorio en el 2007, no llegaron a 14,000, como se muestra en la Figura 2. investigado mucho en los últimos años. La mayoría de los trabajos que sirvieron como base para esta investigación pueden ser consultados en línea, a continuación se describirán brevemente aquellos que tienen mayor relación con este proyecto. Gheorghescu introduce un sistema de clasificación basado en comportamiento evolutivo que, usando una computadora de escritorio promedio, compara muestras de virus con toda la colección de malware [7]. De acuerdo con este método, las muestras de malware de la misma familia o derivadas del mismo código fuente, comparten una gran cantidad de bloques básicos de código. Carrera y Erdélyi utilizan el desensamblador IDA Pro para encontrar similitudes y diferencias entre las variantes y cepas de malware, usando teoría de grafos [8]. Su método consiste en reconocer características similares en la estructura del grafo del ejecutable. Sin embargo, requiere que se compile cada vez que se hagan modificaciones al código, lo cual puede resultar tedioso y tardado. La falta de leyes o el planteamiento incorrecto de ellas, provoca que para aquellos que se dedican a crear este tipo de programas dañinos haya mucho que ganar y poco que perder. Detectar nuevas versiones de troyanos, virus y gusanos informáticos, así como las variaciones de los ya existentes, puede evitar que se infecten miles de computadoras, que se multipliquen, provoquen daños, roben información y se reenvíen a otros usuarios. Es por esto que el objetivo de esta investigación es encontrar un método de clasificación de malware, usando clusterización para agrupar aquellos programas que utilicen funciones del sistema similares. Para después crear e implementar una red neuronal que pueda clasificar cada muestra nueva de malware en la familia correcta de forma similar a como lo haría una persona, pero de forma mucho más eficiente. II. CONCEPTOS BÁSICOS Figura 3. Muestras únicas de malware examinadas por AV-Test del 2003 al 2012 Mientras que los registros de AV-Test indican que en el 2007, la cantidad total de muestras únicas de malware que recibieron fue de 6,000,000. La Figura 3 muestra claramente que un solo antivirus no puede abarcar el crecimiento tan grande de malware que se tiene actualmente, sin importar el método tan avanzado de detección que haya implementado. La detección de código malicioso transmitido, de computadora en computadora, a través de la red se ha Malware: código malicioso, a veces destructivo, creado para realizar actividades ilegales y explotar las vulnerabilidades existentes en los sistemas. En este proyecto, se utiliza este concepto para referirse a virus, gusanos y trojanos. Virus: Son programas diseñados para infectar archivos, algunos pueden provocar efectos molestos, destructivos o irreparables en un sistema. Un virus se activa cuando el programa infectado se ejecuta o al cumplirse una condición específica (una fecha, una acción del usuario, etc.). Gusanos: Son programas que crean copias de sí mismos en distintas ubicaciones. Su objetivo principal consiste en propagarse e infectar la mayor cantidad posible de equipos para saturar computadoras y redes. A diferencia de los virus, no infectan archivos. Algunas de las formas de propagación incluyen emails, mensajería instantánea y programas P2P, generalmente utilizando técnicas de Ingeniería Social con el fin de persuadir a las personas para abrir el archivo que contiene al gusano. Troyanos: Son códigos maliciosos que aparentan ser programas inofensivos. Instalan programas en la computadora infectada para que pueda ser controlada remotamente. Son GONZÁLEZ: CLASIFIACIÓN DE MALWARE MEDIANTE CLUSTERIZACIÓN capaces de destruir archivos, capturar y reenviar información, permitir a un intruso controlar la computadora de forma remota, etc. Clusterización: Es una técnica cuyo objetivo es agrupar un conjunto de objetos parecidos. Mide el grado de similitud entre dos muestras, en este caso el vector de una muestra de malware y los vectores promedio de cada familia, usando un coeficiente, obtenido al calcular la distancia euclidiana. Clúster: Subconjunto que agrupa datos similares, con algún tipo de característica en común, en este caso la cantidad de funciones de las bibliotecas de enlace dinámico. Muestra: Se considera, para este proyecto, como un archivo de malware, ya sea virus, gusano o troyano. Distancia Euclidiana: Criterio de medida de similitud. [9] Se calcula con la ecuación (1). (1) Red Neuronal Artificial: Es un sistema de procesamiento paralelo donde las neuronas, representadas como nodos, están conectadas entre sí, en forma de grafo dirigido, para la solución de problemas concretos del mundo real. Una RNA trata de emular el funcionamiento del cerebro humano, por lo que debe aprender de la experiencia [10]. 27 B. Etapa Inicial El primer paso fue buscar páginas web que tuvieran bases de datos de virus disponibles para descargar. Las bases de datos de malware que se utilizaron fueron las de las páginas Offensive Computing [11] y VX Heavens [12]. No se descargaron virus de forma aleatoria, se trató de buscar la mayor cantidad posible de variaciones de una familia antes de cambiar a otra. Sin embargo se tuvieron algunas dificultades: Puesto que ambas páginas adquieren una parte de sus muestras a partir de contribuciones de usuarios, algunas variaciones de los virus tienen nombres incorrectos. En la mayoría de los casos ya se tenía un vector exactamente igual en la base de datos, por lo que esa muestra era descartada. Muchas familias tenían menos de 3 variaciones. Ambas páginas tenían muestras similares. Una vez reunida la cantidad de familias necesaria para las primeras pruebas, diez familias de malware para Windows 95 con una cantidad de entre tres y diez muestras cada una, se utilizó el desensamblador IDAPro para obtener las funciones que cada virus importa de las bibliotecas dinámicas del sistema (*.dll). Esas funciones fueron guardadas en archivos de texto, que llamaremos ahora archivos de imports, con el formato: DirecciónEnMemoria NombreDeFunción DLL III. METODOLOGÍA PROPUESTA Software Utilizado: IDAPro, OllyDbg, ImpREC, PEid, MS Excel, CodeBlocks, MS Visual Studio 2010. A. Restricciones Como se mencionó en los conceptos básicos, el tipo de malware que se usa en este proyecto únicamente incluye muestras de virus, gusanos y troyanos. Se descartaron otros tipos de malware como: backdoor, rootkit, spyware, exploits, keyloggers, adware, etc. Esto debido a la dificultad que presenta encontrar muestras, de esos tipos, que pertenezcan a la misma familia. Para obtener de IDAPro todas las funciones importadas por los virus, es necesario que los archivos a analizar sean ejecutables portables, es decir, que tengan la extensión .exe, de lo contrario las funciones importadas podrían estar incompletas. La parte de las funciones importadas obtenidas de IDAPro, OllyDbg e ImpREC se hace de forma manual, lo cual es un problema cuando se trabaja con grandes cantidades de virus y gusanos. Para que el programa que se está desarrollando sea más acertado en la clasificación de virus, los vectores de las muestras deben utilizar por lo menos dos bibliotecas diferentes. Todas las familias de malware que se usan en este proyecto deben tener por lo menos tres muestras, ya que una mitad se usa para obtener un buen vector promedio y la otra para usarla en las pruebas. Si IDAPro no podía encontrar los imports, posiblemente el archivo estaba comprimido (packed), esto se puede confirmar con PEid, que detecta los compiladores y herramientas de compresión usados comúnmente en ejecutables. Posteriormente usamos OllyDbg para analizar aquellas muestras que IDA Pro no pudo abrir correctamente debido a que estaban protegidas con herramientas de compresión de ejecutables, también conocidas como packers, tales como: UPX, PEX, ASPack, entre otros. Por último, para obtener los imports, se necesita el software ImpRec, que se usa junto con Ollydbg para reconstruir las funciones importadas de un ejecutable Win32 protegido/comprimido. Utilizando Excel, se creó la primera base de datos de malware. Este archivo incluye el nombre del virus en la primera columna, los nombres de las librerías que los virus descargados han utilizado al menos una vez y la cantidad de funciones que usan de cada librería. Fue importante crear este archivo de Excel para darnos una idea inicial de qué tan viable iba a ser nuestro método. Se creó un programa en C++, utilizando CodeBlocks, que funcionó de la siguiente forma: 1. Se abre un archivo de texto con los imports del virus. 2. Se almacena la información en memoria. 3. Se cuenta el número de funciones que se usa de cada librería y se almacena en un vector. 4. Ese vector se imprime en otro archivo de texto, que funciona como la base de datos de los virus, donde la primera columna es el identificador del virus y las demás son las funciones por librería. Y el nombre de 28 MEMORIAS DEL PRIMER CONCURSO DE INVESTIGACIÓN, DESARROLLO E INNOVACIÓN TECNOLÓGICA IDIT 2012 la librería se guarda, si no existe, en la base de datos de dll’s, que es otro archivo de texto. 5. Se crean los vectores con el promedio de funciones utilizadas por familia, usando tres variaciones de cada una. 6. Se calcula la distancia euclidiana entre una muestra de virus y los vectores promedio de cada familia. A pesar de que el programa estaba funcionando bien, el lento desarrollo con el lenguaje C++ y los pequeños errores que se presentaban en ocasiones aleatorias, provocaron que se eligiera otro lenguaje de programación para el proyecto. C. Etapa Actual Fue necesario rehacer el proyecto, esta vez utilizando C# .NET en Visual Studio 2010, lo que simplificó la programación y además facilitó la creación de una interfaz amigable con el usuario. La interfaz del proyecto se muestra en la Figura 4. Figura 4. Interfaz gráfica hecha en Visual Studio 2010 Primero, se elige el archivo de diccionario, que es la base de datos que contiene las bibliotecas del sistema, este archivo .xml le asigna un identificador único a cada nombre de biblioteca que guarda. A continuación se selecciona la carpeta de archivos. En esta versión ya no son necesarios los archivos de texto, a excepción de aquellos que contienen los imports de las muestras. Otra diferencia con la primera versión del programa es que ahora se abren todos los archivos de texto que se encuentren en el directorio que se indique y antes era necesario abrir archivo por archivo. Se realiza el conteo de funciones por biblioteca y los vectores de las muestras de malware se muestran en el primer datagrid. Se agrupan las muestras por familias y se calculan los promedios, que se muestran en el segundo datagrid. Por último, se elige la muestra, su vector correspondiente se muestra en el tercer datagrid y la distancia euclidiana de la muestra a las familias de virus que se tienen en la base de datos se muestra en el datagrid que se encuentra a la derecha. En esta etapa comenzamos a analizar malware para Windows de 32 bits, más actual y complejo, aumentando la base de datos a quince familias, cada una con por lo menos tres variaciones. IV. RESULTADOS Para comprobar el funcionamiento del programa, se hicieron pruebas con los archivos de imports que no se utilizaron para calcular los vectores promedio. Los resultados para las muestras de malware de Windows 95 se pueden observar en el Cuadro 1. CUADRO I RESULTADOS CON MALWARE WIN95 Clasificación Malware Family Correcta Incorrecta Total de muestras Anxiety Argos Boza Caw CIH Gara Julus Nathan Poshkill SGWW 1 0 3 1 0 0 1 0 2 0 2 2 0 1 5 2 1 3 0 2 3 2 3 2 5 2 2 3 2 2 Total % 8 30.77% 18 69.23% 26 100% Es importante mencionar que del total de muestras por familia que se encontraron, la mitad se utilizó para crear los vectores promedio y la otra mitad sirvió para hacer pruebas. Si la cantidad de muestras encontradas era impar, se le daba preferencia al grupo de vectores promedio. En el Cuadro II se pueden observar los resultados de las pruebas de clusterización realizadas con familias de malware para Win32. CUADRO II RESULTADOS CON MALWARE WIN32 Clasificación Malware Family Correcta Incorrecta Total de muestras Bagle Deborm Energy Kelino Klez Kuang Netres Newbiero Shorm Trilissa Vorgon Xanax Yarner Zircon Zokrim 1 3 2 2 6 1 4 3 3 0 2 0 4 2 0 3 5 0 0 0 2 0 0 1 3 0 2 0 0 1 4 8 2 2 6 3 4 3 4 3 2 2 4 2 1 Total % 33 66.00% 17 34.00% 50 100% GONZÁLEZ: CLASIFIACIÓN DE MALWARE MEDIANTE CLUSTERIZACIÓN Podemos observar que la cantidad de muestras de malware para Windows 95 clasificadas correctamente es baja, con tan solo ocho muestras de veintiséis agrupadas en las familias adecuadas. Por otro lado, la cantidad de aciertos en las pruebas con muestras de malware para Windows de 32 bits es alta. El 66%, equivalente a treinta y tres muestras de un total de cincuenta, fue clasificado correctamente. Para evaluar la eficacia y el desempeño de este método con otros métodos de clasificación, en este caso antivirus de marcas conocidas, utilizamos la página VirusTotal [13], que ofrece un servicio gratuito de análisis de archivos o URLs para identificar contenido malicioso con ayuda de varios motores antivirus. De los motores antivirus que maneja VirusTotal, únicamente se eligieron siete para hacer comparaciones con nuestro método: PCTools, Avast, AVG, Avira Antivir, Panda, Kaspersky y Symantec. Cabe aclarar que no se está calificando el desempeño de estas marcas de antivirus, el motivo de esta comparación es únicamente conocer qué tan certero es nuestro método, no evaluar si un antivirus es mejor que otro. La tabla comparativa que incluye las siete marcas antivirus, se encuentra en los anexos debido a su tamaño. El archivo, llamado ComparacionAV, marca con color verde los nombres de las muestras que fueron clasificadas correctamente por nuestro método. Los nombres marcados en rojo, son las variaciones que no fueron agrupadas en la familia correcta. La columna Dist. Euc., indica la distancia a la que se encuentra el archivo analizado de la familia más cercana. Para este documento, se seleccionaron las dos marcas con mayor y menor cantidad de muestras clasificadas correctamente. En el Cuadro III se muestran los resultados en cuanto a desempeño del método de clusterización con familias de malware para Win95. CUADRO III COMPARACIÓN CONTRA ANTIVIRUS CONOCIDOS W95 Malware Family Clusterización Panda Kaspersky Total de muestras Anxiety Argos Boza Caw CIH Gara Julus Nathan Poshkill SGWW 1 0 3 1 0 0 1 0 2 0 2 1 1 1 2 1 0 2 1 1 3 2 3 2 5 2 2 3 2 2 3 2 3 2 5 2 2 3 2 2 Total % 8 30.77% 12 46.2% 26 100% 26 100% El método no es tan eficaz como Kaspersky, pero su desempeño se acerca al de Panda; en cambio, para las muestras de Win32, nuestro método parece tener una mayor 29 cantidad de aciertos. Los resultados se observan en el Cuadro IV. CUADRO IV COMPARACIÓN CONTRA ANTIVIRUS CONOCIDOS W32 Malware Family Clusterización Panda Kaspersky Total de muestras Bagle Deborm Energy Kelino Klez Kuang Netres Newbiero Shorm Trilissa Vorgon Xanax Yarner Zircon Zokrim 1 3 2 2 6 1 4 3 3 0 2 0 4 2 0 3 2 0 0 3 0 0 0 0 1 0 0 2 0 0 4 8 2 2 6 2 4 3 3 2 2 2 4 2 1 4 8 2 2 6 3 4 3 4 3 2 2 4 2 1 Total % 33 66.00% 11 22.00% 47 94.00% 50 100% V. CONCLUSIONES Hasta este punto de la investigación, el método prueba ser aceptable en la clasificación de virus. Actualmente se cuenta con una base de datos de malware más grande y se está trabajando en la implementación de la red neuronal artificial. Se estaba investigando si existía algún algoritmo que pudiera obtener los imports de forma similar a como lo hizo IDAPro con el primer grupo de malware que se analizó, para hacer el programa independiente de software externo y más rápido; sin embargo, nos hemos dado cuenta que mientras más actual es el malware, más complicado resulta obtener los imports, por lo que el algoritmo o el programa debería ser capaz de hacer lo mismo que cuatro programas distintos. Probablemente, este método por sí sólo no sea tan efectivo como los mecanismos que utilizan los antivirus conocidos, sin embargo, podría utilizarse en combinación con otros métodos ya existentes para aumentar las detecciones, reducir falsos positivos y así disminuir considerablemente los problemas causados por malware. También sería interesante encontrar alguna combinación de funciones y librerías que pueda diferenciar malware de un programa no dañino, principalmente a los virus metamórficos, que son difíciles de detectar debido a que cambian su estructura. AGRADECIMIENTOS Agradecemos a Offensive Computing y VX Heavens por proporcionar las muestras de malware usadas en este proyecto. A Nicolas Brulez por sus consejos y su valiosa ayuda. También nos gustaría agradecer al Dr. Roberto Antonio Vázquez Espinoza de los Monteros por su apoyo y su tiempo, 30 MEMORIAS DEL PRIMER CONCURSO DE INVESTIGACIÓN, DESARROLLO E INNOVACIÓN TECNOLÓGICA IDIT 2012 porque sin su ayuda este proyecto se habría quedado como una simple idea. Agradecemos también a nuestros familiares, que nos han apoyado desde el inicio del proyecto y aún no se cansan de escuchar los avances. Los autores Agradecimientos especiales a mis padres, María del Carmen Medina, que lo ha dado todo para que salga adelante y quien me inspira a esforzarme y a ser mejor persona cada día, y Arcadio González, quien me enseñó a ser honrada y trabajadora. Por último, a Luis Eduardo Luna, que siempre ha estado a mi lado, con paciencia y amor. Lilia González APÉNDICES En los archivos adjuntos se encuentran: el código fuente del programa en C++, el código fuente del programa en C# .NET, sus correspondientes archivos de base de datos, algunos archivos de imports, la tabla de comparación con marcas antivirus completa y algunas de las gráficas usadas en este documento. REFERENCIAS [1] [2] [3] [4] [5] [6] [7] [8] [9] Kaspersky Antivirus. Amenazas informáticas (Malware) | Kaspersky Lab España [citado febrero 23, 2012]. Disponible en Internet: http://www.kaspersky.com/sp/threats. Panda Security. Classic Malware [citado febrero 23, 2012]. Disponible en Internet: http://www.pandasecurity.com/homeusers/security-info/classicmalware/. Norton by Symantec. Cybercrime – Computer Crimes Security – Online Fraud – Email Phishing Scams [citado febrero 23, 2021]. Disponible en Internet: http://us.norton.com/cybercrimeindex/. Gostev, Alexander. Monthly Malware Statistics: November 2011. Securelist [en línea]. Diciembre 2011 [citado febrero 23, 2012]. Disponible en Internet: http://www.securelist.com/en/analysis/204792206/Monthly_Malware_S tatistics_November_2011 O’Murchu Liam, Symantec. Last-minute paper: An indepth look into Stuxnet. Virus Bulletin [en línea]. Octubre 2010 [citado febrero 24, 2012]. Disponible en Internet: http://www.virusbtn.com/conference/vb2010/abstracts/LastMinute7.xm l. AV-Test – The Independent IT-Security Institute [en línea]. Citado febrero 24, 2012. Disponible en Internet: http://www.avtest.org/en/statistics/malware/ Gheorghescu M., An Automated Virus Classification System [en línea]. Julio 2006 [citado febrero 24, 2012]. Disponible en Internet: http://www.microsoft.com/download/en/details.aspx?id=13780. Carrera E. and Erdélyi G., Digital genome mapping – advanced binary malware analysis. Virus Bulletin Conference [en línea], September 2004 [citado febrero 24, 2012]. Disponible en Internet: http://www.fsecure.com/weblog/archives/carrera_erdelyi_VB2004.pdf. De Los Santos Torres Guillermo, Universidad de las Américas Puebla [en línea]. Diciembre 2003 [citado febrero 24, 2012]. Disponible en Internet: http://catarina.udlap.mx/u_dl_a/tales/documentos/msp/de_l_g/capitulo2 .pdf. [10] J. A. Freeman, and D.M. Skapura. Redes Neuronales. Algoritmos, aplicaciones y técnicas de propagación. México: Addison-Wesley, p. 306, 1993. [11] Offensive Computing, LLC. Disponible en Internet: http://www.offensivecomputing.net/ [12] VX Heavens. Disponible en Internet: http://vx.netlux.org/ [13] VirusTotal. Disponible en Internet: https://www.virustotal.com/