¿Cuál es la mejor manera de crear una base de datos de firmas de virus? [cerrado]

-7

Estamos pensando en desarrollar un nuevo programa antivirus. La principal preocupación es crear una base de datos de firmas de virus. Quiero preguntar cuál es la mejor manera posible de agregar firmas de virus en nuestra base de datos para que sea una base de datos sólida. Por favor, guíanos de la mejor manera posible.

Nota: Su voluntad en MD5

    
pregunta Ella Bleu 08.02.2016 - 14:15
fuente

2 respuestas

5

El antivirus basado en MD5 simplemente no funciona

El antimalware basado en MD5 funciona decentemente contra las infecciones estáticas que nunca cambian. Si cambia incluso un poco, estás jodido. Sin embargo, MD5 también es vulnerable a collisions , por lo que tendrá una buena cantidad de falsos positivos.

No confiaría en este método en absoluto. SHA-256 probablemente sería mejor para esta tarea. Sin embargo, eso lleva al siguiente problema ...

Los "virus" pueden fusionarse con los ejecutables existentes

Un problema mayor es que los virus pueden fusionarse en un ejecutable no malicioso existente y hacerlo malicioso. El autor puede inyectarlo en varios lugares del programa y hacer que el hash sea completamente diferente cada vez.

Cambiar su origen o incluso recompilar el virus lo derrotará

No solo eso, sino que al cambiar el código solo un poco, puede evitar completamente la detección porque tendrá un hash nuevo cada vez. Tendrá que agregar un hash para cada cambio posible en cada archivo, lo que simplemente no es práctico en absoluto.

Incluso si pudiera hacer esto, ¿cómo sabría que el archivo era malicioso? ¿Comparaste el hash con el que aparece en el sitio web? Bueno, con md5, es posible fingir causando una colisión.

Si desea ir por la ruta hash, incluso si encuentra un algoritmo de hash que no tuvo ninguna posible colisión, entonces literalmente necesitaría una gigantesca lista blanca de hashes válidos para todos los programas legítimos conocidos. Y luego los compararías con lo que son.

Incluso si tienes un buen algoritmo de hash, no es práctico, ni siquiera posible.

¿Cuál es la mejor manera de crear una base de datos de firmas de virus?

Esto es demasiado amplio para responder aquí.

Es muy difícil crear software antivirus. Aunque esta publicación está fuera de tema, estoy respondiendo con la esperanza de que no vayas por este camino oscuro, ya que solo ofrecerá una falsa sensación de seguridad.

    
respondido por el Mark Buffalo 08.02.2016 - 14:47
fuente
2

Mark Buffalo ya ha proporcionado una buena respuesta sobre las cosas a considerar. Sin embargo, me gustaría ampliar su respuesta con pocas soluciones; por supuesto, es una pregunta muy amplia, por lo que no está ni cerca de una "mejor" solución. Es solo cosas a considerar.

Estaré haciendo muchas suposiciones basadas en esta pregunta y serán:

  • El sistema operativo que está utilizando es Windows
  • La arquitectura de su sistema es x86 o x64
  • Tiene una buena comprensión de los aspectos internos de Windows.

Los "virus" pueden fusionarse con los ejecutables existentes Hay tantas maneras de hacer ejecutables de enlace.

Digamos que tenemos "notepad.exe" como el programa legítimo y "virus.exe" que es el malware. Virus.exe podría escribirse en la RAT (Tabla de direcciones de recursos) de notepad.exe y reemplazar el OEP (Punto de entrada original) con su cargador personalizado que ejecutará el código de malware y luego ejecutará notepad.exe.

Puedes vencer esto leyendo la RAT y haciendo una firma .text PE.

Proyecto de código - .Text Checksum

Tenga en cuenta que esto puede ser derrotado por el metamórfico y el polimorfismo, cuyo código se cambia en cada ejecución, lo que resulta en un hash único para el .text pero es mucho más difícil de realizar. Lea algunos de los códigos de z0mbie sobre cómo se ejecuta y así sucesivamente.

z0mbie - Ejemplo de código de malware, etc.

Solo puedes vencer esto con medidas extremas de las que no estoy totalmente automatizado, son cosas que se ejecutan en una secuencia que está relacionada con el malware. Por ejemplo, simulemos DeleteFileW( L"C:\SomeImportantFile.exe" ); , digamos que el código es el siguiente:

MOV EAX, 0x12345
PUSH EAX
CALL Kernel32.DeleteFileW

Ahora, en términos de eficiencia, será lento, pero puede firmar el PUSH EAX, CALL, ya que siempre tendrá los mismos bytes y en su código, lea qué valores se mantienen en 0x12345 ya que esta dirección de memoria probablemente sea diferente.

Cambiar su origen o incluso recompilar el virus lo derrotará De lo anterior, podrás solucionar esto.

Para cubrir otros puntos de los que no se ha hablado:

  • inyección de Dll
  • inyección de código
  • enganche SSDT
  • parcheo de kernel

Creo que esta pregunta es más bien una pregunta para enlace Sin embargo, creo que es una pregunta demasiado detallada para responder.

    
respondido por el Paul 08.02.2016 - 15:34
fuente

Lea otras preguntas en las etiquetas