29 de diciembre de 2010

Sandboxie Cristalizada

Cuan niño en la playa, hace unos meses vimos que la solución de Sandboxie ofrecía una virtualización a la carta para cualquier problema o archivo que quisiéramos abrir en un entorno controlado. Lo cierto es que es una utilidad que te permite ejecutar esos anexos sospechosos de forma más o menos segura y sin necesidad de tirar de máquinas virtuales como Virtual PC, VMWare, etc. El modelo de Sandboxie es tan bueno que hay sistemas operativos como Qubes OS (del cual vuelvo a hablar, jeje) que se basan completamente en la virtualización de todo, Chromium OS (al cual estoy deseando echarle el guante) parece que también va a apostar por un fuerte aislamiento de procesos.

Y ya está, ya tenemos seguridad. Surfeemos por las olas más peligrosas de Internet con nuestro navegador en su cajita de arena bien tranquilos de que los tiburones de las vulnerabilidades, troyanos, etc. se llevarán un chasco al morder. ¡Error!, veamos de lo que nuestra cajita de arena es capaz de protegernos por defecto:

Levantar un servicio: Sandboxie es capaz de capturar todas las llamadas a rutinas del sistema, por tanto hace una cosa en la que se basa gran captidad de malware, “hookea” esas llamadas y las intercepta según estén permitidas o no. Por defecto no podremos levantar servicios:

Ejecutar una tarea programada: No nos servirá de nada, si recordáis existía un pequeño fallo que permitía programar una tarea con el comando “at” y que el proceso lanzado fuera con unos privilegios un tanto superiores, eso en una sandbox no pasará:

¡¡Escapar de la sandbox!! No, lo he intentado, pero no se puede. Podemos probar a lanzar un Word y a partir del explorador abrir cmd.exe, exploradores, etc. de la forma recursiva que queramos hasta hacer una lista de 40 o 100 subprocesos, da igual que sea la ejecución de un comando o el lanzamiento de un notepad, todo estará en la misma cajita de arena :-S

¡¡Destrozar la sandbox!! ¿Y si lanzamos una máquina virtual dentro de VmWare? No es mala idea, hay que ver al lanzar una máquina virtual con un sistema operativo propio tendrá sus propias llamadas al sistema, que no tendrán que ver con las del anfitrión, sin embargo sandboxie detecta que nos pasamos de tamaño y lanza un error:

Con lo que la máquina virtual no carga. Sin embargo no se porta tan bien si nos da por destrozar archivos, no hay nada como ejecutar un cmd.exe y lanzar un del *.* en SYSTEM y SYSTEM32, esos comandos se ejecutarán dentro de las limitaciones de todo usuario administrador, también podemos formatear otras unidades etc. Como la SANDBOX virtualiza todos los cambios en el sistema el archivo de "cambios", irá creciendo. Sin embargo se da la particularidad de que la propia SANDBOX tira de esos archivos virtuales para correr, por lo que si nos cargamos por ejemplo la librería de la imagen, sayonara SANDBOX.

Java Virtual Machine: Otra buena idea que no funciona, si lanzamos una aplicación Java cuando quiera interactuar con el sistema será capturada, también nos aparecerá entre almohadillas “#”

Entonces no hay de que preocuparse,,, ¡o si!

Todo cambio que un programa en su cajita de arena haga en el sistema quedará reflejado dentro de la cajita de arena, es decir siempre que entres en la sandbox estará conforme el último programa ejecutado lo haya dejado. Por ejemplo si renombras cmd.exe por Pepito.exe y magnify.exe por cmd.exe (aprovechando el fallo de la lupa de Windows que comentaban en Security by Default) siempre que estés virtualizado la lupa será el cmd, de ahí que se aconseje cambiar la arena al 3x2, como a los gatos.

Pero todo esto no quita lo más importante de todo, que todo programa dentro del sanboxie tiene la capacidad de leer del sistema. No solo eso, de lanzar los comandos y aplicaciones que el usuario tenga permisos, por lo tanto podrás leer el archivo SAM o cualquier otro que te interese de los “importantes del sistema” si ejecutas tu equipo como Administrador, también podrás lanzar un FTP para mandar esa información donde quieras:

Luego podemos hacer dos cosas, o utilizamos un usuario con privilegios mínimos (lo que reduce la necesidad de utilizar sandboxies) o configuramos de forma segura la sandboxie, deshabilitando el acceso a ciertas carpetas o la ejecución de programas.

Por otro lado Sandboxie como aplicación que hookea las llamadas al sistema no se lleva bien con determinados antivirus y drivers, que pueden permitir “fugas” de la caja de arena o bien incompatibiliza la ejecución de cierto software bajo su control, tenéis una lista aquí, hay algún caso llamativo como el antivirus de Mcaffee, etc.

En todo caso y en previsión de accesos no deseados o ejecución de terceras aplicaciones ocultas, etc. en la configuración de toda sandbox se puede hacer lo siguiente:

- Restringir el acceso a Internet (eliminarlo o reducirlo a las aplicaciones que querramos).

- Obligar a que ciertas aplicaciones se ejecuten siempre dentro de la sandbox, o que todo lo que venga desde una unidad externa (CD, DVD, USB, etc.) se abra en una sandbox.

- Restringir derechos de administrador, esta opción es la más importante, así se evitará el acceso a archivos de sistema.

- NO habilitar ninguna de las opciones para reducir la seguridad de la sandbox (cambiar contraseñas, etc.) a nivel software o hardware.

- Bloquear el acceso al registro del sistema así como a los recursos que no deseemos compartir con la humanidad.

- No añadir (salvo que sea imprescindible) la comunicación mediante servicios COM como excepción de seguridad, esto permitirá que un programa dentro de la sandbox pueda comunicarse con otro que está fuera.

- Deshabilitar el acceso en navegadores a cookies del sistema, así como a cualquier recurso fuera de la sandboxie.

- Deshabilitar la recuperación instantanea de recursos. Cuando querramos cambiar la arena al gato, perdón a la sandboxie, esta opción permite recuperar automáticamente los archivos creados, lo que puede permitir a un virus salir fuera de la cajita. Esta opción debería mejorarse, ya que se basa en listas negras cuando parece más lógico que sea por listas blancas.

Como véis una solución de virtualización también puede quedarse corta si no se configura adecuadamente, sería trivial extraer por ejemplo los servicios que se están ejecutando o copiar el archivo de SAM a un PC externo. Por lo tanto es importante restringir los derechos y asegurarnos de que no ejecutamos software incompatible mientras mejora el aislamiento de procesos en nuestros sistemas operativos, que parece que es la tónica a seguir a partir de ahora :-p

Y esto es todo por hoy,,, que no por este 2010, ¡vuelvo pronto!

Salu2