Horizon View y vTPM

Que tal gente, el día de hoy estaré estrenando este nuevo blog compartiéndoles algo bastante interesante que nos ofrece vSphere en términos de seguridad para escritorios virtuales de Horizon View. 

Mi posición actual dentro de VMware me acerca a trabajar con integradores globales como lo son IBM, DXC, etc. de tal manera que me veo involucrado en proyectos de una muy alta visibilidad, importancia y/o complejidad.  Hace algunas semanas me comencé a trabajar en un nuevo proyecto donde se requería cumplir con lineamientos de seguridad bastante detallados y estrictos, este cliente tiene una postura de seguridad compleja en todas las diferentes capas que ustedes puedan imaginar del centro de datos, seguridad física, etc. 

Para los escritorios virtuales basados en Windows 10 se requería poder habilitar Credential Guard  basado en hardware y no en software.

¿Que es Credential Guard?

Credential Guard forma parte de la visión mucho mas amplia de seguridad de Microsoft llamada VBS (Virtualization-based Security), VBS permite a sistemas Microsoft (Windows 10 y Windows 2016) crear una “burbuja” o area de memoria aislada de las demás paginas de memoria y del sistema operativo como tal, esto a través de tecnologías de virtualización. La siguiente imagen nos puede dar una mejor idea de lo que se trata:

Como podemos ver existe un espacio de memoria separado del sistema operativo que corre en un contexto de usuario aislado, este espacio se le conoce como “Security Enclaves”, estos Security Enclaves son controlados en su totalidad por el hipervisor. Por lo cual aun cuando el sistema haya sido comprometido no se puede acceder a la información que reside en esas paginas de memoria. 

Ahora ¿Donde queda Credential Guard?… Una vez entendiendo (a muy pero muy alto nivel) como es que VBS permite aislar información a través de los security enclaves vamos a entender donde queda Credential Guard y porque es en este proyecto era un requerimiento. Los sistemas operativos Microsoft utilizan un proceso llamado LSA (Local Security Authority) para manejar diversos temas de seguridad local dentro del cliente en cuestión, temas como tokens de seguridad, hashes, SIDs, políticas, etc, el gran problema con LSA es que este proceso corre en memoria , y si, en un area de memoria que no esta aislada por lo cual es posible tener acceso a la información que esta almacenada en dicho proceso, permitiendo que se pueda  usar dicha información en ataques de tipo pass-the-hash o pass-the-ticket lo cual podría permitir a un atacante escalar usar técnicas para escalar los privilegios y moverse de manera horizontal dentro de el ambiente.

La siguiente imagen nos puede dejar mas claro como funciona LSA en sistemas operativos habilitados con Credential Guard:

Como podemos ver existen dos procesos de LSA el que corre dentro del sistema operativo y un proceso de LSA aislado que corre dentro de este “Security Enclave” el proceso de LSA habla con LSAIso a través de llamadas a procedimiento remoto (RPC), dentro de la “burbuja” solo se encuentra un pequeño grupo de elementos del sistema operativo que son necesarios para los temas de seguridad, todos estos elementos son firmados por certificados en los que el OS confía y son medidos por TPM en el momento de boot, por lo que cualquier cambio  el hash que arroje la medición de estos elementos bastará para que se pare la carga del sistema. Con esto podemos estar seguros que aunque nuestro sistema se vea comprometido no se podrán extraer los hashes previniendo que el atacante pueda acceder otros sistemas con métodos de escalación de privilegios. Es importante comprender que esto no protege contra Keyloggers o procesos que capturan el input del usuario.

TPM y vSphere

TPM 2.0 esta soportado a partir de vSphere 6.7, versiones anteriores de vSphere soportaban TPM 1.2 que es bastante diferente a la nueva implementación que encontramos en 2.0. Si quieren aprender mas de como vSphere usa TPM los invito a leer el articulo de Mike Foley:

https://blogs.vmware.com/vsphere/2018/04/vsphere-6-7-esxi-tpm-2-0.html

Horizon View y TPM

Con la versión 7.7 de Horizon View es posible agregar un dispositivo virtual de TPM a los escritorios virtuales basados en instant clones, esto permite que pooles de escritorios creados ya tengan la capacidad de poder habilitar Credential Guard. En el momento de la creación del pool podemos decidir si queremos agregar vTPM:

Se necesita cumplir con lo siguiente para poder agregar un dispositivo vTPM: 

  • El servidor físico debe de contar con un chip de TPM
  • vSphere 6.7+
  • Servicio de KMS (Key Management Server) configurado y disponible
  • VMs Windows 10 y 2016
  • La VM maestra deberá ser configurada con firmware UEFI

La gran diferencia entre vTPM y un TPM físico reside en el hecho que toda la información escrita y asegurada por el dispositivo vTPM es almacenada directamente al archivo de memoria virtual de la VM (.nvram) y este archivo es encriptado con VM encryption (lo cual crea una dependencia operativa a nuestro infraestructura de KMS). Las VMs habilitadas con vTPM pueden migrarse con vMotion sin problemas en el caso de migración cross-vcenter tendríamos que registrar dicho servicio de KMS al servidor vCenter destino.

Les dejo un poco de lectura extra:

https://blogs.vmware.com/vsphere/2018/05/vsphere-6-7-virtual-trusted-platform-modules.html

https://blogs.vmware.com/vsphere/2018/05/introducing-support-virtualization-based-security-credential-guard-vsphere-6-7.html

https://docs.microsoft.com/en-us/windows/security/information-protection/tpm/how-windows-uses-the-tpm#credential-guard

https://docs.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-how-it-works

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s