banner

¿Cómo saber cuando una aplicación se esta ejecutando en el AppContainer en Windows 8?


En el momento Windows 8 vio la luz oficialmente el 26 de Octubre 2012, no dude ni un instante en instalarlo y empezar a usarlo; un hecho objetivo fruto de la casualidad que coincidió con el típico ciclo de reinstalación de Windows.

Es por ello, que no tuve que "reflexionar" demasiado sobre la necesidad o no de instalar un nuevo sistema operativo, ! es que el ordenador me lo estaba pidiendo a gritos ¡. Sin embargo, en cuanto lo tuve instalado, apareció una nueva pantalla de inicio (METRO), y la verdad es que resulta muy poco útil en un equipo de escritorio. 

Efectivamente, es lo que esta pensando, la "odiosa" interfaz METRO, que en mi opinión, para un dispositivo portátil  como una tablet, donde su utilización principal esta destinada al manejo de las redes sociales y al consumo de información, la interfaz METRO es seguramente ágil y fácil de manejar, sobretodo gracias a la pantalla táctil. Sin embargo, en el equipo de sobremesa, se hace engorroso y confuso.

Seguramente a estas alturas habrás leído que Microsoft afirma que la ejecución de la aplicaciones en la interfaz METRO, se produce en un entorno seguro (sandbox) con restricciones de seguridad y un control exhaustivo de los permisos de la aplicación. Esto es cierto, ya que existe el AppContainer, el contexto donde se ejecutan las aplicaciones de METRO Store (la tienda de aplicaciones de Windows).

¿Qué es el AppContainer? 
Es el entorno seguro (sandbox) donde se ejecutan todas la aplicaciones que han sido desarrolladas para la interfaz METRO, y se mantienen bajo control.

Pero, seguro que ya tienes una idea rondándote la cabeza, ¿Qué ocurre cuando ejecuto una aplicación windows compatible? ¿Si se ejecuta desde la pantalla de inicio, ésta se ejecuta dentro del Sandbox AppContainer? 

AppContainer ¿Si o No?

Imaginemos por ejemplo, que descargamos de Internet la ultima versión de Mozilla Firefox, y la instalamos, en ese momento nos aparecerá un "bonito" icono en la pantalla principal (METRO), como puede verse en la siguiente imagen:

Pantalla inicio Windows 8 - METRO
Si lo ejecutamos,
¿Cómo sabemos si la aplicación se ejecuta dentro del entorno seguro o no?

La mejor forma para saberlo es analizar el proceso que se esta ejecutando, para éste análisis es necesario utilizar el Process Explorer , esta herramienta, es cómo el administrador de tareas del sistema operativo pero con funcionalidad avanzadas, es decir, el Process Explorer muestra información acerca de los procesos y archivos DLL que se han abierto o cargado en el sistema.

Una vez instala la aplicación, se tiene que activar el campo "Integrity" en la barra para saber con que contexto (nivel de integridad) se esta ejecutando la aplicación y/o proceso correspondiente.

Process Explorer - Integrity column.
Una vez activado la columna "Integrity", se podrá observar el contexto de ejecución de la aplicación, siguiendo con nuestro ejemplo, si iniciamos el navegador "firefox" desde la pantalla de inicio "METRO", y lo examinamos con la herramienta process explorer, se puede observar que en el contexto "Integridad" aparece : "Nivel obligatorio medio".

Process Explorer: Windows 8 - Integrity Level - Win32 Apps.
Pero seguramente ahora te estés preguntando,
¿Qué son los niveles de Integridad (Windows Integrity Levels) ?

La integridad (contexto de ejecución) es algo que se introdujo en el motor de "ejecución (run time)" de Windows Vista, y por supuesto ha sido heredado por Windows 7 y ahora, Windows 8. 

En concreto, el nivel de integridad, es un componente (modulo) del núcleo del Sistema Operativo que controla los permisos con los que se ejecuta una aplicación determinada. Este modulo de protección asigna un nivel de integridad a cada uno de los procesos que se ejecutan en el Sistema.

Existen varios niveles:

Untrusted: un proceso que no se ha identificado en el sistema, es asignado automaticamente como desconosido, de no confianza.

High: Es el nivel de Administrador del Sistema, este nivel es capaz de trabajar y modificar las condicionen de los procesos de menor nivel, debido a la necesidad de las tareas administrativas, y son aquellas que normalmente los usuarios no pueden hacer. Esta reservado a los procesos ejecutados como Administrador.

Medium: este es el contexto común de ejecución de la mayoría de aplicaciones y/o procesos. Es el nivel asignado por defecto, y el que reciben los usuarios estándar del sistema.

Low: esta considerado como el modo de trabajo para los procesos que interactuán con Internet, es un nivel de protección del sistema con restricciones de acceso al disco duro, protección de escritura salvo en los directorios de la propia aplicación, etc

System: es el contexto reservado al Sistema, es decir, es el nivel de ejecución utilizado por el núcleo (Kernel) del Sistema Operativo, y es el nivel al que aspiran los hackers. Ya que tiene acceso y permisos para manipular todo el sistema.

Installer: es un caso especial, esta considerado con el nivel más alto de todos, y es el que se usa para instalar una aplicación, drivers, o desinstalar.

Estos niveles fueron implementados en Windows Vista en lo que se denomina (WIC), ahora en Windows 8 se ha invertido tiempo en desarrollar un nuevo nivel de integridad para proteger mejor el sistema frente a los agentes Malware, sobre todo esta orientado a aplicaciones que se encuentra permanentemente conectadas a Internet, de modo que esas aplicaciones se ejecutan en un nuevo contexto y/o entorno denominado "AppContainer", basado en el antiguo "Low Level" y mejorado.

Detalles del nuevo nivel de Integridad "AppContainer"

El nuevo modelo de Sandbox, que ha introducido Windows 8, se basa en:

  • Aislamiento del proceso a nivel de Kernel, donde se ejecuta con unos permisos muy limitados.
  • Restricciones de comunicación entre procesos, a nivel de red (firewall), e incluso de acceso a dispositivos y ubicaciones del disco duro. Limitándose a el directorio de instalación, bloqueando el acceso de lectura/escritura a otras partes del disco duro, y solicitando autorización del administrador para acceder a dispositivos como webcam, microfonos, etc.

Es decir, el nivel de aislamiento de los procesos no confiables, se aplicará restricciones a 4 aspectos fundamentales del procesos:

 - Token: restricción para eliminación de privilegios, desactivar o restringir SID.

 - Job (proceso en ejecución): acceso limitado al escritorio, portapapeles, CPU, I/O process, prohibido crear subprocesos, etc.

 - Escritorio: mensajes de windows, acceso al escritorio, al portapapeles, etc

 - Nivel de Ingtegridad (low level): restricción de acceso a ficheros, solo escritura en  su directorio, AppData, Local y Roaming. No pueden cambiar los privilegios, etc.

Es decir, el AppContainer Level, es un modo de ejecutar las aplicaciones de forma segura y protegida. Aunque en el caso del IE10, nada más ver la luz, sufrió una vulnerabilidad que permitía al atacante evitar el sandbox. Esto no quiere decir, que el modo de protección no sea "seguro", de hecho el atacante para poder ejecutar código arbitrario tenia que evitar (bypass) el sistema de protección, por lo que hace la función correctamente, y la vulnerabilidad no esta en el sistema de protección sino en la aplicación / proceso que se ejecutaba bajo ese entorno de protección.

Ejemplo de uso del AppContainer

Ahora que sabemos que es el "nivel de integridad", podemos afirmar que la aplicación Firefox, que se ejecuta desde la pantalla de inicio METRO no se ejecuta con un nivel de protección "AppContainer" sino que recibe el modo por defecto, es decir nivel medio.

Para ejecutar una aplicación en el contexto "AppContainer" nos bastará con ejecutar alguna aplicación descargada de la tienda de Microsoft (todas la aplicaciones METRO, se ejecutan por defecto en el sandbox), en mi caso tengo instalada la aplicación "Google Search" o incluso Internet Explorer 10, como se puede observar en la siguiente imagen:

Process Explorer - AppContainer Level Integrity
Hasta aquí el artículo que os tenía preparados sobre Windows 8 y el modo de ejecución AppContainer.

Saludos.

REFERENCIAS:

Si deseas profundizar más acerca de los niveles de integridad, te recomiendo que leas las siguientes referencias:

[1] Windows: Run Time - Hack in the Box 2012
[2] Windows Integrity Mechanism.
[3] Introduction to Windows Integrity Control (WIC)
[4] Chml: tools para manage Windows Integrity Levels

No hay comentarios :

Publicar un comentario en la entrada