modelador de malware

Una aplicación y biblioteca de aprendizaje automático para entrenar modelos de regresión logística para la predicción de benigno vs. malicioso, además de herramientas relacionadas.
Este código es de calidad beta y probablemente tendrá errores.
Hay cuatro pasos básicos:
- Extracción de características: encontrar los k n-gramas principales, k es aproximadamente de 100k a 1m, n debe ser 8.
- Creación del archivo de conjunto de datos: a partir de su colección de malware y software bueno, crear un archivo de conjunto de datos que contenga las muestras caracterizadas como un archivo de conjunto de datos.
- Entrenamiento del modelo: entrena un modelo basado en los datos de entrenamiento, opcionalmente con validación cruzada estratificada de n pliegues (
train --folds N) que conserva solo el modelo del mejor pliegue.
- Evaluación: evalúa el modelo contra algunos datos de prueba o validación (datos reservados).
Además:
- La característica de similitud se puede utilizar para garantizar que las muestras utilizadas para el entrenamiento tengan una variación decente.
- Las características de n-gramas, los archivos de conjuntos de datos y los modelos están vinculados a un tipo de archivo.
- El modelo puede reducir las k características a una cantidad menor, lo que permite que el modelo realice una selección de características adicional para, con suerte, crear un mejor modelo.
- Los modelos solo deben crearse para un tipo de archivo. Por lo tanto, un modelo para EXE, uno para PDF, uno para ELF, etc.
- Los datos de entrenamiento deben basarse en una colección equilibrada con muchas muestras. La misma cantidad de muestras benignas y maliciosas, debe tener al menos cientos de miles.
- Estos son modelos simples, que solo son tan buenos como los datos de entrenamiento. Datos malos, mal etiquetados o demasiado similares producen un modelo sin valor.
Basado en la siguiente investigación:
- Edward Raff, William Fleming, Richard Zak, Hyrum Anderson, Bill Finlayson, Charles K Nicholas, Mark McLean, William Fleming, Charles K Nicholas, Richard Zak y Mark Mclean. KiloGrams: Very Large N-Grams for Malware Classification. En Proceedings of KDD 2019 Workshop on Learning and Mining for Cybersecurity (LEMINCS'19). 2019. Artículo.
- William Fleshman, Edward Raff, Richard Zak, Mark McLean y Charles Nicholas. Static Malware Detection & Subterfuge: Quantifying the Robustness of Machine Learning and Current Anti-Virus. En 2018 13th International Conference on Malicious and Unwanted Software (MALWARE). Octubre de 2018, 1–10. Premio al Mejor Artículo. Artículo, Arvix, DOI.
- Edward Raff y Charles Nicholas. Hash-Grams: Faster N-Gram Features for Classification and Malware Detection. En Proceedings of the ACM Symposium on Document Engineering 2018. 2018. Artículo, DOI.
- Richard Zak, Edward Raff y Charles Nicholas. What can N-grams learn for malware detection? En 2017 12th International Conference on Malicious and Unwanted Software (MALWARE). Octubre de 2017, 109–118. Artículo, DOI.
- Edward Raff, Richard Zak, Russell Cox, Jared Sylvester, Paul Yacci, Rebecca Ward, Anna Tracy, Mark McLean y Charles Nicholas. An investigation of byte n-gram features for malware classification. Journal of Computer Virology and Hacking Techniques, septiembre de 2016. Artículo, DOI.
Herramientas adicionales:
- Extraer archivos de un archivo Zip según el tipo de archivo, útil para trabajar con archivos de VirusShare.
- Obtener un resumen de los archivos de un archivo Zip por tipo de archivo.
- Comprobar la similitud a nivel de byte entre los archivos de un directorio para ayudarte a construir un conjunto de datos con buena variación.
- Dividir los directorios de malware y goodware en conjuntos equilibrados de entrenamiento de goodware, entrenamiento de malware, prueba de goodware y prueba de malware.
Notas adicionales:
- Considera obtener datos benignos de Assemblage [Paper, Paper, Code, Docs]
- Se han utilizado herramientas de IA bajo supervisión y pruebas humanas.