¿Cómo se escanea una base de datos MySQL en busca de malware?

7

Tengo muchos medios para buscar códigos maliciosos dentro del sistema de archivos, monitorear el tráfico, escanear archivos de registro, buscar procesos sospechosos / enmascarados, etc.

Sin embargo, escanear una base de datos relacional como MySQL no es una tarea fácil. Algunos exploits como el Magento Shoplift de 2015 tienen como objetivo inyectar código malicioso dentro de la base de datos, teniendo en cuenta su estructura y la forma en que coopera con las aplicaciones del lado del servidor. Volcar la base de datos y luego ejecutar una búsqueda basada en firmas sería completamente ineficiente ya que algunos de los datos se almacenan en BLOB y otros tipos de datos. Además, no necesariamente parece sospechoso y está lejos de lo que podría parecer un shell web de PHP, por ejemplo.

Mi pregunta es: ¿cuál es la forma más práctica y eficiente de detectar anomalías y detectar códigos maliciosos en una base de datos MySQL ?

¿Se podría considerar lo siguiente como un enfoque decente?

  1. Volcar la base de datos;
  2. Compruébelo línea por línea en comparación con la misma base de datos desde un archivo de copia de seguridad;
    • decir que usa una funcionalidad similar a la de diffchecker.com;
  3. Analizar los datos recién insertados / actualizados;
    • esto podría implicar omitir grandes cantidades de datos, lo que claramente no es un comportamiento malicioso;

Gracias.

    
pregunta McJohnson 19.09.2016 - 23:56
fuente

1 respuesta

1

Pregunta interesante. Primero tienes que definir qué tipo de malware estás buscando. En este caso, esto podría ser:

  • Datos maliciosos: datos modificados que perdieron integridad.
  • Código malicioso: datos establecidos, incrustados o modificados que pueden ejecutarse (por ejemplo, binarios ejecutables, XSS almacenados).

Si está intentando detectar datos maliciosos, puede elegir una de las opciones:

  • Analice la integridad de los datos usando expresiones regulares. Esto puede llevar mucho tiempo para la preparación porque debe saber cómo deben ser exactamente sus estructuras de datos.
  • Compare datos legítimos con los conjuntos de datos actuales para detectar diferencias. Puede crear un valor hash de campos, registros o tablas y compararlos de vez en cuando. Almacenarlos en la misma base de datos puede no ser aconsejable. Utilice otra base de datos o incluso otro medio para eso (por ejemplo, un enfoque basado en archivos). Si un atacante puede comprometer la base de datos e influir en la integridad, es posible que no pueda hacer lo mismo en el sistema de archivos.

Este enfoque también puede detectar código malicioso. Pero es posible que pueda utilizar otras técnicas para detectarla correctamente:

  • Use un enfoque basado en firmas para determinar los fragmentos de código malicioso. La forma más fácil es seleccionar tus campos. Pero esto espera que los datos estén en un formato que sea entendido por el motor de exploración. Si está serializando o codificando sus datos, esto podría perjudicar las posibilidades de detección.
  • Es posible que desee crear una posibilidad de acceso a la API dedicada para sus deseos de escaneo. Su base de datos debe proporcionar los datos como si estuvieran dentro de un ataque. Por ejemplo, si está utilizando sus datos dentro de un archivo adjunto de correo, su API creará dicho archivo adjunto para que sea posible analizar cómo será al final. Otros ejemplos son resultados basados en archivos y en la web.

Los enfoques de escaneo basados en firmas son propensos a errores, ineficientes y lentos. Si tiene la oportunidad de establecer una verificación de integridad tan pronto como se escriben los datos, esto podría ser mucho más sólido.

    
respondido por el Marc Ruef 27.03.2017 - 15:38
fuente

Lea otras preguntas en las etiquetas