Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este servicio crea un puerto ALPC (Local Inter-Process Communication) al que las
aplicaciones se conectan para intercambiar mensajes sobre cambios en el layout del
teclado o métodos de entrada. Cuando cualquier proceso crea una ventana, el kernel
invoca una devolución de llamada o callback, USER32!CtfHookProcWorker, que carga
automáticamente el cliente msctf.
El servidor espera continuamente los mensajes de los clientes, pero los clientes
solo buscan mensajes cuando se les notifica a través de PostMessage(). Esta es la
razón por la que los clientes llaman a RegisterWindowMessage() al inicio.
Los clientes pueden enviar comandos al monitor o pedirle al monitor que reenvíe
comandos a otros clientes especificando el threat id, es decir, se pueden mandar
mensajes a cualquier subproceso conectado, o al propio monitor configurando el
destino en el subproceso cero. Además el protocolo CTF es bastante extenso, tiene
muchos parámetros y hay fallos de diseño en este sistema... y Tavis Ormandy ha
creado una herramienta llamada CTFtool que nos permitirá interactuar como cliente
desde la línea de comandos para experimentarlos.
¡No solo se puede enviar comandos al servidor, podemos esperar a que se conecte un
cliente en particular y luego pedirle al servidor que también le envíe comandos!
Además, como habéis podido imaginar, no hay un control de acceso entre los clientes
y el servidor de MSCTF, lo que nos permitirá mandar comandos incluso a
aplicaciones/clientes con privilegios elevados.
Ahora que sabemos que se puede comprometer a cualquier cliente CTF, ¿cómo
encontramos algo útil? Como decimos, no hay control de acceso en CTF, por lo que
podemos conectarnos a la sesión activa de otro usuario o esperar a que un
Administrador inicie sesión y comprometer su sesión. Sin embargo, hay una mejor
opción: si usamos USER32!LockWorkstation, podemos cambiar al escritorio Winlogon
privilegiado que ya se está ejecutando como SYSTEM!:
Bonito... ¿verdad? ;)
Ahora a ver cómo M$ moderniza su protocolo CTF, porque esto y como dice Tavis (mis
dieses y mis miles) es sólo la punta del iceberg...