Introspección de la máquina virtual frente a la instrumentación

3

No puedo diferenciar entre la introspección de la máquina virtual y la instrumentación. Dado que el objetivo de la introspección de la máquina virtual es examinar las propiedades de un objetivo a través del monitor de la máquina virtual, cuál es el propósito y el uso de la técnica de instrumentación.

    
pregunta Ali Ahmad 27.07.2013 - 14:17
fuente

2 respuestas

6

La terminología es resbaladiza y no está completamente estabilizada; sin embargo, podemos decir que, por lo general, , la "instrumentación de código" se relaciona con modificaciones de algún código objetivo para que se puedan aplicar herramientas de monitoreo (u otro tipo de herramientas de administración automática); esto no implica necesariamente una máquina virtual. Con una máquina virtual, por otro lado, el código para inspeccionar y monitorear no está modificado y no es consciente del hecho de que está monitoreado.

Por ejemplo, si compila el código C con GCC , puede "perfilarlo" (monitoreo del rendimiento en la granularidad de las funciones individuales ) con el indicador de línea de comando -pg : este indicador indica a GCC que agregue instrucciones adicionales en el binario que registran la entrada y salida de la función para cada función. Esto es instrumentación. No necesita ningún tipo de máquina virtual.

Para hacer una metáfora, la introspección de una máquina virtual es como un zoólogo agazapado en una colina rocosa, con poderosos binoculares, observando desde lejos a un león acechando una manada de cebras. La instrumentación se parece más a la sedación del león, a una mesa de exploración y al zoólogo que fuerza un endoscopio en la garganta. No es la misma actividad, no los mismos objetivos, no es el mismo tipo de datos recolectados; y la instrumentación es un poco más "invasiva".

    
respondido por el Tom Leek 27.07.2013 - 14:32
fuente
3

El símil de león es genial. Un punto interesante que debe incluirse es que la introspección en una máquina virtual es mucho más difícil / específica de destino que la instrumentación. Como dice tom-leek arriba, la instrumentación se suma al código bajo inspección donde la introspección no lo hace. Este es un gran problema para la introspección.

Las API de introspección para un hipervisor como Xen no hacen mucho más que permitir que una VM inspeccione / mapee la memoria que pertenece a otra VM. Sin ningún instrumento para ayudar al programa de introspección, debe poder deducir por sí mismo lo que se encuentra en la memoria que está observando. Esto sería como si el zoólogo en Tom-Leeks tuviera que determinar qué es un león y una cebra, tal vez nunca lo haya visto antes (¿no es un zoólogo entonces?). Este problema se ha denominado "brecha semántica".

Por lo tanto, el valor en un motor de introspección es su capacidad para determinar lo que está viendo. Típicamente, tendrá que saber algo sobre la estructura del programa binario que está viendo. La mayoría de los sistemas utilizan un archivo system.map para obtener datos sobre el kernel de Linux y luego seleccionar estructuras de datos específicas (lista de procesos, etc.) para monitorear. Para Windows es una historia completamente diferente y las compañías que hacen introspección en Windows generalmente consideran que sus métodos son propiedad intelectual extremadamente valiosa.

Había una gran compañía llamada Virtuata que hizo introspección en el kernel de Windows usando Xen. Desafortunadamente, fueron adquiridas por Cisco el año pasado y desde entonces han desaparecido: enlace

Buena lectura sobre este tema:

  • Linux Kernel Integrity Monitor (LKIM) - enlace
  • Bromium tiene un blog de marketing que muestra las limitaciones de la introspección (también conocida como la brecha semántica). Es una buena lectura, pero tenga en cuenta sus objetivos y el producto que venden: enlace
  • También hay una serie de artículos en los que los académicos intentan "cerrar" la brecha semántica con métodos automatizados. No conozco a muchos de ellos, pero Virtuoso es una buena lectura: enlace
respondido por el flihp 27.07.2013 - 20:33
fuente

Lea otras preguntas en las etiquetas