¿Hipervisor de VM que no filtra que es una VM para el invitado?

7

Necesito un hipervisor de VM que no se filtre al invitado que está en una VM. El huésped debe creer que está en una máquina física completa.

Aparentemente VirtualBox falla en esto , junto a with Virtual PC y VMWare . Antes de sumergirme en monstruos como Xen, ¿hay algún hiperviosor que pueda hacer esto?

    
pregunta TheLQ 11.01.2012 - 18:54
fuente

5 respuestas

12

Xen , por definición, está virtualizado. Asume un código de invitado específico para el kernel del sistema operativo. No trata de ocultar la presencia de la virtualización, en realidad lo anuncia claramente. Esta no es la máquina virtual que estás buscando.

Un hipervisor completamente invisible es teóricamente factible, pero no es barato. El problema es con el tiempo. Un hipervisor funciona al ser capaz de interceptar algunas "operaciones sensibles", en particular relacionadas con el acceso a la memoria, y alterar su comportamiento. La alteración se realiza con software, que puede permanecer oculto de manera efectiva al bloquear algunos accesos de memoria, emulando en su lugar una ausencia de RAM. Sin embargo, tal intercepción toma un poco de tiempo: el manejo de un acceso a la memoria interceptada usará algunos ciclos de reloj adicionales sobre lo que haría una llamada no interceptada en "hardware en bruto". Dado que el código puede acceder a un reloj con precisión de ciclo de reloj (no precisión) a través del código de operación rdtsc , se puede detectar la intercepción . A menos que también se intercepte el código de operación rdtsc , para hacerlo "más lento".

En efecto, nuestro hipervisor invisible puede permanecer invisible solo al "ralentizar" la máquina virtual, de modo que obtenga suficientes "ciclos adicionales" ocultos para sus intercepciones. Así que el sistema operativo invitado debe:

  • tampoco tienen acceso a una fuente de tiempo externa (y, si el sistema operativo invitado tiene alguna red, puede acceder a fuentes de tiempo externas);
  • o cree que el hardware está cronometrado a una velocidad inferior a la que realmente ejecuta el hardware físico.

Como caso extremo, considere emulators . Los emuladores para sistemas más antiguos de la década de 1980 pueden tener una precisión de ciclo de reloj, es decir, hacen que la emulación sea tan perfecta que el código que se ejecuta en ella no es capaz de detectar que no se ejecuta en el hardware original. Pero solo pueden hacerlo lanzándole una gran cantidad de poder computacional; la sobrecarga es tremenda (estamos hablando de una pérdida de potencia informática de 10x o 20x). Además, emular los efectos de tiempo para un Atari ST es una tarea relativamente simple porque no hay caché en tal máquina.

La Blue Pill es una demostración de un llamado "hipervisor invisible", y generó un debate candente (como dicen, "con más calor que luz"), principalmente porque no hay igualdad entre las habilidades en la programación del sistema de ensamblaje y la capacidad para explicar las cosas a otras personas con pedagogía y serenidad. Sin embargo, la "píldora azul" debería ser detectable, aunque encontrar un código real que lo haga, publicado en la Web, podría ser un desafío.

Un punto interesante planteado por el desarrollador de la píldora azul es que se supone que los hipervisores deben convertirse en la corriente principal y "normal", por lo que la presencia de un hipervisor no debería, a largo plazo , indicar que la virtualización está ocurriendo. Es posible, e incluso probable, que los sistemas operativos futuros siempre activen un hipervisor en el momento del arranque, por lo que la detección de que la virtualización está implementada ya no indicará un posible juego sucio. Sin embargo, aún no hemos llegado a ese punto.

    
respondido por el Tom Leek 11.01.2012 - 22:29
fuente
2

No es factible 100% en x86. Hay algunas instrucciones que no son virtualizables, por lo tanto, si sabe qué buscar, siempre puede determinar si está ejecutando virtualización o simple.

Aquí hay algunas fuentes para leer: enlace es el mejor punto de partida sobre este tema.
Otra buena es enlace

    
respondido por el Marcin 11.01.2012 - 21:33
fuente
2

Lo que quieres básicamente no es factible, en la práctica. Vea el siguiente análisis detallado de la literatura de investigación:

Hay varias formas en que un huésped malintencionado puede detectar que se está ejecutando en una máquina virtual: sincronización, discrepancias en la semántica de ciertas instrucciones de CPU poco claras, discrepancias en el manejo de controladores y periféricos, discrepancias en el tamaño de varios cachés (que causa efectos detectables en el rendimiento), y muchos más. Vea el artículo para un análisis detallado. Profundizan más que cualquier respuesta aquí, o hay espacio para cubrir aquí.

    
respondido por el D.W. 07.02.2012 - 21:49
fuente
1

Parece que estás buscando un rookit de hipervisor , el blue pill es un buen ejemplo de este tipo de rookit.

Este es solo un tipo de máquina virtual que se oculta a sí mismo del invitado y da la casualidad de que se puede usar para ocultar las actividades de un atacante. Puedes usar este software como quieras, no tienes que ser un atacante. Puede utilizar nmap y ping para depurar problemas de red. Se puede usar un martillo para clavar un clavo o romper una ventana.

    
respondido por el rook 11.01.2012 - 19:42
fuente
1

KVM usa hardware "estándar", pero si sabe lo que está buscando, todavía puede decirlo.

(También, obviamente, si instala las herramientas del sistema operativo invitado, se volverá aparente independientemente de lo que use)

Lo que estás tratando de ocultar es cualquier cosa que mencione la VM en los procesos, archivos, registro, memoria, hardware o instrucciones del procesador.

Si puedes hacer todo eso (dependiendo de lo importante que sea este proyecto en realidad), tendrás que ocultar el método de comunicación (que sé que en VMWare usa un valor codificado).

¿Qué estás tratando de resolver en particular con esta solución?

  • Engañar a los usuarios para que piensen que es una máquina real
  • Análisis de malware, etc.
  • Algo más enteramente
respondido por el doyler 11.01.2012 - 21:15
fuente

Lea otras preguntas en las etiquetas