elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  [Aporte] WinMalwareDetector.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Aporte] WinMalwareDetector.  (Leído 2,527 veces)
overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
[Aporte] WinMalwareDetector.
« en: 1 Diciembre 2015, 18:01 pm »

Buenas a todos, hacía tiempo que no me pasaba por aquí, siempre es un placer :D.

Después de un fin de semana de descanso de exámenes y aprovechando la temática del proyecto de fin de carrera pensé en aplicar la misma técnica que empleo para topic detection a detección de malware.

El proceso muy por encima consiste en extraer la "semántica" (mediante word2vec) de las instrucciones de un conjunto de programas de entrenamiento P (y por tanto de un programa completo, si modelamos por ejemplo la semántica de un programa como una combinación lineal de las semánticas de las instrucciones que lo componen) para construir una representación en un espacio continuo n-dimensional junto con otras características como por ejemplo las DLLS y las funciones de las que hace uso, una medida de empaquetamiento (ponderando la entropía y la aparición de secciones que dejan ciertos packers) entre otras que se pueden tener en cuenta (de momento solo son esas).

Una vez se tienen las representaciones vectoriales de las muestras de entrenamiento (prototipos) se emplea clasificación por vecinos más cercanos (NearestCentroid) para determinar si un determinado programa es malware o no (semántica del programa más cercana a las muestras malware o a las muestras no malware).

El código lo podéis clonar de su propio repo:
https://github.com/overxfl0w/WinMalwareDetect

Instalad primero las dependencias mediante el setup.py . Cuando estén instaladas tendréis que entrenar el sistema con vuestras propias muestras (no paso los ficheros de entrenamiento porque ocupan bastante si lo entrenas con muchas muestras) tenéis que meter muestras malware en ./Train/Malware y muestras no malware en ./Train/NoMalware y después indicarle al sistema que queréis entrenar, en el usage se muestra la forma de hacerlo, pero básicamente tenéis que lanzar lo siguiente:

python WinMalwareDetector.py --train ./Train/Malware ./Train/NoMalware prototypes.trained model_w2v.mm ffunctions.mm

Cuando el sistema esté entrenado, ya podéis clasificar ejecutables indicándole al sistema que queréis predecir la clase de una muestra:

python WinMalwareDetector.py --predict EJECUTABLE.exe 1 prototypes.trained modelw2v.mm ffmodel.mm

Los 3 últimos parámetros son los ficheros generados durante el entrenamiento (si le cambiáis el nombre acordaos de ellos), y el 3º (el de valor 1) es el número de vecinos a tener en cuenta en la clasificación, podéis probar más de 1 valor si sois curiosos y si no dejadlo así.

Esto es lo necesario para poner en marcha la clasificación, podéis comprobar la precisión y otras medidas del sistema sin tener que hacer el entrenamiento, solo poned las muestras malware y no malware donde dije y lanzad lo siguiente:

python WinMalwareDetector.py --statistics -lou 1 ./Train/Malware ./Train/NoMalware

Con ello indicamos al sistema que queremos sacar estadísticas, haciendo leaving one out, comprobando la precisión entrenando con todas las muestras menos 1 y esa usarla como test para ver si acierta o no, para toda muestra, usando para eso 1 vecino más cercano. Todos los resultados que indiquen porcentajes están entre 0 y 1 (multiplicadlo por 100 xD).


Para que veáis las salidas del programa en los casos que os he comentado adjunto un par de imágenes:

Estadísticas:   https://i.gyazo.com/ab564e8c37a18c121215dfe8232aed8d.png
Clasificación:  https://i.gyazo.com/25c564b92a186c5200fc7395efd2f552.png
Predicción:     https://i.gyazo.com/eadb249589f7f663e6eaf1aa41d180cb.png

En línea

[/url]
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pequeño aporte
Programación Visual Basic
demon_cry 0 1,181 Último mensaje 12 Junio 2006, 09:38 am
por demon_cry
pequeño aporte(proxy),pero aporte al fin.:D
Programación Visual Basic
Tengu 0 2,406 Último mensaje 22 Julio 2007, 17:33 pm
por Tengu
Aporte
Ingeniería Inversa
R6ID 0 2,190 Último mensaje 28 Febrero 2008, 11:35 am
por R6ID
Aporte c++
Programación C/C++
Stakewinner00 8 4,746 Último mensaje 2 Septiembre 2012, 08:33 am
por Stakewinner00
[Aporte] Aporte
Programación C/C++
Stakewinner00 3 2,491 Último mensaje 14 Noviembre 2012, 16:39 pm
por Stakewinner00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines