¿Hay alguna forma de predecir el comportamiento del malware a través de un algoritmo de aprendizaje automático mediante ingeniería inversa de muestras de malware?

Si. La pregunta es ¿en qué estás tratando de entrenar el algoritmo? Cuando un ser humano está invirtiendo una aplicación, generalmente sigue un conjunto específico de pasos. Repasar los flujos de código para comprender la funcionalidad, profundizar en funciones específicas, tratar de repasar las llamadas API, tal vez incluso los códigos de operación reales, etc.

Por lo tanto, cada uno de estos análisis de comportamiento puede ser un tipo de característica que necesita extraer de la aplicación. En términos generales, estos son los pasos que deberá seguir para producir un modelo de predicción basado en un algoritmo que elija.

Lo primero que debe hacer es ensamblar un conjunto de datos etiquetado de aplicaciones maliciosas y benignas. Cuanto mayor sea la escala, mejor, pero tiene que ser 50/50 malicioso y benigno. Una cosa más que es crítica es el etiquetado, hay una razón por la cual la gente siempre dice basura en la basura. Es más difícil entrenar algo en etiquetas falsas, al final, sea cual sea la metodología que elija para el entrenamiento, habrá una función que intentará optimizar todas las variables para llegar al punto en que sea capaz de diferenciar con precisión entre las dos (benigna y malicioso).

A continuación, trabajará en sus métodos de extracción de características. Tendrá que desarrollar una infraestructura que pueda tomar una aplicación y extraer todos los indicadores necesarios al igual que el tipo que realiza la inversión manualmente.

Cuando llegue a un conjunto de características que puede extraer de cada aplicación, trabaje en la tubería.

Desarrolle la infraestructura que puede crear una representación de todas las aplicaciones de su conjunto de datos, con su etiquetado y las características (si existen o no, si hacen lo que es el valor).

La siguiente es una etapa que depende de sus recursos de capacitación. Si tiene muchas funciones, tendrá que decidir para cuáles de ellas desea exponer el algoritmo. En general, este proceso se llama reducción de dimensionalidad. Cada característica representa otra dimensión. Si tiene muchas dimensiones y menos recursos, tendrá que elegir las características que serán más útiles para la misión que su conjunto debe resolver: la diferenciación de la aplicación benigna y maliciosa.

Entonces entrenarás tu modelo según el método que elijas.

Luego, dejará una parte aleatoria del conjunto de datos que ha compuesto y lo usará como un conjunto de prueba para validar lo que el algoritmo ha aprendido y qué tan bien lo está haciendo (relación FP / FN, precisión, recuperación, etc.).

Hay muchas formas de producir tales modelos. La mayoría de los desafíos del mundo real se relacionan con llegar a conjuntos de datos a gran escala con un etiquetado decente y obtener un marco valioso que realmente pueda extraer características que puedan representar comportamientos e indicaciones sustanciales de la aplicación (las palabras que ayudarán a que el algoritmo se articule las oraciones que servirán tienen el modelo de predicción.

Mi mejor sugerencia para usted es comenzar a pequeña escala y después de lograr obtener una especie de tubería que funcione, intente expandirla: más muestras para el conjunto de datos, más características, etc.

Comience con un pequeño prototipo, amplíe y mejore mientras itera.