martes, noviembre 15, 2011

Hacking Remote Apps: Jailbreaking con Excel (I de IV)

**************************************************************************************************
- Hacking Remote Apps: Jailbreaking con Excel (I de IV)
- Hacking Remote Apps: Jailbreaking con Excel (II de IV)
- Hacking Remote Apps: Jailbreaking con Excel (III de IV)
- Hacking Remote Apps: Jailbreaking con Excel (IV de IV)
Autores: Juan Garrido "Silverhack" y Chema Alonso
**************************************************************************************************

Ha pasado tiempo ya desde que comenzamos la serie dedicada a Hacking Terminal Services y Citrix, pero aún quedan algunas cosas por dejar escritas. Esta parte está dedicada al punto que dio título a nuestra charla en Defcon sobre esta temática: Utilizar Excel para romper las restricciones en los servidores Terminal Services y Citrix.

En las partes anteriores se vio cómo descubrir los servidores Terminal Services y Citrix, cómo descubrir las aplicaciones instaladas en ellos, y algunos trucos de cómo saltarse las limitaciones para llegar al sistema a través de las aplicaciones. En esta ocasión vamos a ver cómo usar Excel, cuáles son las políticas de seguridad que se pueden aplicar un servidor Windows para fortificar la aplicación mediante políticas administrativas, y qué puede hacerse para saltarse esas políticas.

Jailbreaking

Sólo como recordatorio, en los entornos Citrix o Terminal Services, hablamos de jailbreaking al proceso de conseguir saltar de la aplicación publicada al sistema operativo, o lo que es lo mismo, a pasar de hacer unos cálculos con una hoja de Excel, a ejecutar un comando que muestre la lista de procesos en el sistema. Como ya vimos en la parte dedicada a playing de piano, - que incluso usamos para rearmar un Windows con sticky keys - hay muchas teclas rápidas, accesos directos del sistema, o cuadros de dialogo que pueden permitir conseguir ese objetivo, pero esto puede ser aún peor cuando la aplicación es compleja, y tiene su propio lenguaje de programación, como Microsoft Office

Aunque en esta parte del trabajo hemos utilizado Excel, casi todo se puede migrar a cualquier otro producto del paquete de Microsoft Office, con lo que no creímos necesario hacer pruebas con Word, PowerPoint o Access.

El poder de VBA

Visual Basic for Applications es el lenguaje de programación que se utiliza para hiper-vitaminar los documentos de Microsoft Office. Con este lenguaje es posible desarrollar auténticas aplicaciones de gestión que manejen empresas completamente. No es de extrañar que haya todavía un gran número de pequeños y medianos negocios en os que la aplicación core sea un Excel o un Access. Con este lenguaje se puede hacer prácticamente cualquier cosa, como la industria del malware descubrió hace tiempo, y Didier Stevens se empeñó hace no demasiado. Y esto le convierte en un lenguaje muy peligroso para la seguridad de una empresa cuando de un entorno Citrix o Terminal Services se trata.

Figura 1: Tasklist.xls publicado por Didier Stevens

Sin embargo, cuando la paranoía se nos venga encima, siempre se puede deshabilitar completamente. Así, es posible aplicar una política de seguridad que llevando la contraria a lo que es habitual en estas, es segura. Esta política, por desgracia, no se aplica de forma unitaria a un programa, es decir, no se puede deshabilitar VBA en Excel y dejarlo en PowerPoint, o deshabilitarlo en PowerPoint y dejarlo en Excel, sino que se aplica todos los productos del paquete.


Figura 2: Política para deshabilitar VBA en todo el paquete Office 2007 y en Office 2010

Por supuesto, una vez aplicada esta castración química de Microsoft Office, este paquete habrá perdido gran parte de su mojo, haciendo de él un paquete que no podrá poder utilizarse con la magia que lo hace autosuficiente para gestionar empresas. Ahí radicará gran parte del peso específico en la eterna diatriba que nos lleva de la seguridad a la productividad.

Como se puede ver en la Figura 2, la política se aplica en Office\14.0\common - 14.0 es Microsoft Office 2010 - y no en una rama de producto. Si se fuerza esta política, aplicativos como Access no pueden funcionar.

Excel como navaja suiza

Como ya hemos dicho, el genial investigador Didier Stevens se empeñó en hacer de Excel su particular navaja suiza, creando ficheros Excel desde los que ejecutar el taskmanager, o llamar a comandos de WMI para lanzar prácticamente cualquier cosa. Además, una de las peculiaridades más importantes es que se puede meter una dll dentro del fichero Excel que será ejecutada en el sistema, con lo que la ejecución completa de programas con los permisos de la cuenta de usuario quedan habilitados para cualquier usuario de Excel en entornos Citrix y Terminal Services.

Figura 3: El excel que hicimos nosotros para la Defcon19

Así, para un usuario, armado con los documentos Excel apropiados, conseguir ejecutar un tasklist en el sistema será tan sencillo como abrir el documento de Excel en el que lleva implementado dicho comando en VBA.

Aquí tenéis los recursos que dejó Didier Stevens listos para que os hagáis vuestra propia navaja suiza:

- Taskmanager.xls
- Taskmanager.xls para 64 bits

Excel y las restricciones de software

Una de las formas de capar a cualquier aplicación que intenta hacer jailbreak en un entorno Citrix o Terminal Services es la de bloquear los accesos a los programas más peligrosos mediante ACLs (Listas de Control de Accesso) o listas negras de hashes, firmas digitales o rutas. Todas esas opciones de protección se vienen abajo cuando eres capaz de cargar tu propia dll en tu documento Excel para ejecutar lo que te venga en gana.

Así, uno de los trucos que aprendimos y utilizamos en nuestra sesión, es el que realizó Didier Stevens convirtiendo el  interfaz de comandos del sistema operativo ReactOS y el editor del registro en sendas dlls que se cargan a través de una macro VBA en un documento Excel, permitiendo saltarse cualquier restricción que tenga el sistema. Contado con detalle en Excel with cmd.dll y regedit.dll.

Figura 4: El propio Didier lo cuenta magistralmente en este vídeo.

Conocido esto, llega la gran pregunta que se harán todos los responsables de seguridad y/o administradores de sistemas Citrix y Terminal Services que tenga que lidiar con una instancia de Excel publicada: 
"¿No hay ninguna forma de restringir el uso de macros VBA de alguna forma menos drástica que acabar con todo el soporte VBA para Microsoft Office?"

Pues lo veremos en la segunda parte de este artículo.

**************************************************************************************************
- Hacking Remote Apps: Jailbreaking con Excel (I de IV)
- Hacking Remote Apps: Jailbreaking con Excel (II de IV)
- Hacking Remote Apps: Jailbreaking con Excel (III de IV)
- Hacking Remote Apps: Jailbreaking con Excel (IV de IV)
**************************************************************************************************

3 comentarios:

Anónimo dijo...

Vamos a jugar a "Hundir la flota" a ver si hay suerte :-).
Combinación o no, de ubicaciones de confianza (creo que aquí poco seguro también), y uso de macros/ficheros firmados con uncertificado de una CA interna de la compañía.
¿Agua, tocado, hundido? ;-)
Muy interesante, gracias como siempre por compartir el conocimiento.

Anónimo dijo...

Y otra, a ver si hay suerte, desactivar por GPO el uso de scripts en CMD.

Anónimo dijo...

wow.. realmente interesante.. :)
hace tiempo que no veo algo tan bueno

Entradas populares