¿Cómo funcionan los programas anti-exploit?

6

Hay muchas respuestas disponibles que detallan cómo funcionan los programas antivirus y antimalware, incluidos detalles sobre firmas, heurísticas, sandboxing, etc. Sin embargo, parece que hay relativamente pocos recursos sobre cómo los programas antiexplotación (como EMET , MBAE y HitmanPro.Alert) realmente detectan y evitan las explotaciones.

Las acciones que realmente ocurren durante un exploit parecen ser casi imposibles de detectar sin adjuntar un depurador al proceso, lo que parece tener impactos de rendimiento inaceptables.

¿Cuáles son los diferentes métodos utilizados por los programas antiexplotación para detectar y mitigar los intentos de explotación?

    
pregunta konsolas 24.09.2016 - 13:56
fuente

1 respuesta

1

Responderé a esto de acuerdo con mi experiencia con el compilador CBMC . Nunca he usado HitmanPro , malwarebytes anti -explique o EMET de Microsoft pero no veo ninguna razón por la que harían las cosas completamente a diferencia de CBMC.

Protección contra exploits conocida

Si observamos el video anti-exploit malwarebytes (investigado amablemente por OP), vemos que MBAE podría encontrar un exploit identificando un archivo malicioso descargado. Así es exactamente cómo funciona un programa antivirus moderno: comprueba la firma de un malware conocido (o "explota la carga útil" si quiere llamarlo así) y detiene su ejecución si coincide.

En ese caso específico, podemos argumentar que Anti-Exploit es simplemente un nombre de marca para un programa Anti-Virus. En teoría, puede argumentar que AV (Anti-Virus) solo verifica la firma de los archivos, mientras que AE (Anti-Exploit) verifica la carga útil (por ejemplo, al descargar un archivo). También puede argumentar que AE busca CVE mientras que los AVs buscan firmas de malware. . Pero todos los AV modernos realizan todo eso: se actualizan cuando salen las CVE, verifican las firmas del tráfico de la red (archivos descargados) y lo hacen en tiempo real. Así que argumentaré que, a partir de ese video, podemos concluir que los EA son simplemente AV con una nueva marca.

Sin embargo, hay más: las AE prometen ser capaces de encontrar exploits de día cero. Y eso sería diferente de los AVs.

Explosiones de día cero

No puedes encontrar un exploit de día cero en un programa sin ejecutar el programa. Pero ejecutar un programa poco fiable es imprudente. Esto se debe a que, si hay un punto explotable en el entorno de ejecución, la ejecución de un programa puede explotar exactamente esa violación. El sandboxing es una opción, pero los sandboxes a menudo tienen violaciones de sus ganancias. Entonces, ¿cómo podemos ejecutar un programa sin ejecutarlo? Ejecución simbólica al rescate.

Como dije al principio de la respuesta, usaré CBMC, una herramienta que necesitaba en algún momento en el pasado. Realiza ejecución simbólica, pero es una herramienta de investigación. Y nadie realmente argumenta que la ejecución simbólica puede encontrar todos los problemas posibles que puede tener un programa.

CBMC es un compilador de C (y también tiene una versión comercial para VHDL) que no compila un programa en un código de máquina. En su lugar, compila el programa en un lenguaje llamado GOTO, que es una representación simbólica simplificada del programa . Luego se usa un procesador GOTO (parte de CBMC) para ejecutar la representación simbólica del programa.

Una representación simbólica es mucho más fácil de razonar, y el programa puede ejecutarse asumiendo una amplia gama de entradas. Por ejemplo, una de las cosas que CBMC / GOTO atrapa bien en los programas de C son los desbordamientos de búfer.

Ahora, CBMC funciona en programas C y VHDL, pero lo mismo se puede hacer con el ensamblaje. Aunque no sería tan preciso como construir una representación simbólica a partir del código fuente (ya que el desmontaje no es perfecto), permitiría ejecutar la representación simbólica del programa y verificar los errores de codificación.

Los desbordamientos de búfer son las cosas más fáciles que uno puede pensar que también se pueden encontrar en el ensamblaje, pero otras posibilidades pueden incluir una entrada no verificada (la entrada se rastrea en una representación simbólica, al menos en CBMC) o abriendo sockets de red (ya que es un syscall conocido).

Descargo de responsabilidad : no sé cómo se construye realmente un AE, pero si tuviera que construir algo que pudiera encontrar una vulnerabilidad simbólica, la ejecución simbólica del día cero sería la ruta que probaría. La ejecución simbólica no se produce sin problemas (conocidos por la comunidad de investigación abierta, algunas fuentes no reveladas pueden haber encontrado soluciones para algunos de ellos):

  • SE no encuentra todos problemas, por ejemplo. a menudo no se encuentra interacción entre diferentes configuraciones.
  • SE es bastante lento.
  • Intel o ARM (o cualquier otro) disassebmly nunca es perfecto, y los problemas de desmontaje se reflejan en los resultados SE.
respondido por el grochmal 25.09.2016 - 02:23
fuente

Lea otras preguntas en las etiquetas