lunes, 17 de diciembre de 2007

Escalada de privilegios

BitXor [bitxor_nx@yahoo.com]

Luego de haber terminado el código que presento en esta misma edición sobre cómo hacer que un programa corra con privilegios de SYSTEM pensé ¿por qué no aprovechar la oportunidad para introducir el tema de la escalada de privilegios desde la óptica del usuario no programador? ¿Qué tan útil podría resultar conocer este tema?, para responder esta pregunta permíteme hacerte otra ¿Cuántas veces te haz sentado en una PC con tantas restricciones que apenas te dejan usar el mouse? Pues esta es la santa solución a tus problemas.

Durante las próximas semanas tratare de ir publicando varios artículos sobre distintas técnicas de escalada de privilegios. Al primero de estos artículos le corresponde la escalada de privilegios con el comando AT.

[Escalando con AT]

Antes de comenzar permítanme aclararles algunos detalles sobre lo que estaremos haciendo en los próximos minutos. Como ya habrás tenido oportunidad de conocer, Windows como cualquier sistema operativo divide a sus usuarios en grupos, cada uno de los cuales tiene permisos individuales. De tal forma para ser administrador se debe pertenecer al grupo Administradores, o para ser usuario avanzado se debe pertenecer al grupo Usuarios Avanzados. Para ver todos los grupos disponibles en tu sistema abre una consola y a continuacion teclea

net localgroup

Bien, ahora solo necesitas saber que en Windows existe una cuenta un tanto "especial" y su especialidad la justifican varias individualidades que no poseen ninguna de las otra cuenta. Primeramente la cuenta SYSTEM no pertenece a ninguno de los grupos de usuarios de tu equipo, además, como su nombre indica, está reservada solo para uso exclusivo de Windows.

Lo que seguidamente intentaremos hacer será explotar un bug presente en WindowsXP que nos dará pleno acceso a la cuenta SYSTEM. Debes saber que todo lo que aquí expongo debe realizarse desde una cuenta con privilegios administrativos, quizás funcione con cuentas con menos privilegios, pero eso te encargas de probarlo tú.

Para los que aun no conocen: ¿qué es el AT y para qué sirve? AT es una aplicación que debe ser llamada desde la línea de comandos del sistema y nos proporciona un medio para programar la ejecución de comandos o aplicaciones en una PC.
Para ver la ayuda interna del programa solo abre una consola y teclea

AT /help

una vez en la pantalla de ayuda podremos detallar todos los parámetros relacionados, no te preocupes si no entiendes mucho, de todos los parámetros el único que necesitaremos es "/interactive", este nos permitirá que la aplicación cuya ejecución fue programada interactúe con el escritorio del usuario actual. Veamos un ejemplo de la sintaxis de este comando.

at 16:11 /interactive notepad.exe

Tecleando esta línea en el sistema le estaré diciendo que cree una nueva tarea cuya ejecución será a las 4:11pm y consistirá en ejecutar el bloc de notas. Aquí hay un detalle importante que debes tener en cuenta, el tiempo que le especificas debe estar en hora militar, de modo que si quieres que se ejecute a las cuatro de la tarde deberás decirle AT 16:00 ... de lo contrario el programa entenderá que debe hacer la tarea a las cuatro de la mañana.

Pues bien, con los nuevos conocimientos adquiridos realizaremos un pequeño experimento. Abre el símbolo del sistema y chequea la hora que tengas en el reloj al lado de la tray bar justo en la esquina inferior derecha. Ahora le indicaremos al comando AT que realice una tarea un minuto adelantada a la hora actual, de modo que si son las 3:20pm teclearemos en la consola

at 15:21 /interactive notepad.exe

la respuesta debe ser la siguiente:

Se ha agregado un nuevo trabajo con identificador = n

Listo, ya sabemos utilizar el comando AT, aunque aun no tenemos ni idea de como nos puede servir para realizar una escalada de privilegios. Si esperas un minuto o menos podrás ver como se ejecuta el bloc de notas por si solo luego de haber sido llamado por AT. Hasta este punto todo resulta de lo más normal y por tanto aburrido, pero es ahora cuando la situación comienza a tornarse interesante.

Solo por curiosidad presiona CTRL+ALT+DEL para abrir el administrador de tareas y en la lista de procesos busca el Notepad que se acaba de ejecutar. ¿Qué tiene de curioso ese proceso? pues nada más y nada menos que se está ejecutando bajo el usuario SYSTEM, mmm.... Cosa realmente extraña esta, considerando que todo lo que abre un usuario se ejecuta bajo su nombre y privilegios. Pues resulta ser que las solicitudes de ejecución del programa AT son respondidas por uno de los procesos SVCHOST.EXE y esta última aplicación se carga 5 veces en sistema, dos como Servicio de Red, una como Servicio Local y otras dos como SYSTEM (si tienes una sexta corriendo con tu nombre de usuario es un virus), pues todo parece indicar que uno de los SVCHOST cargados como SYSTEM es el encargado de responder las tareas de AT, y teniendo en cuenta que el proceso padre tiene privilegios SYSTEM resulta que todos sus procesos descendientes también. Punto menos para el equipo Microsoft, punto más para nosotros.

Muy bien, ahora que podemos ejecutar cualquier cosa como SYSTEM vamos a correr un programa más interesante que el inofensivo bloc de notas, ¿qué les parece una consola del sistema con altos privilegios?
Manos a la obra, el mismo procedimiento, chequea el reloj (3:42pm en mi caso) ahora escribimos en el símbolo del sistema

at 15:43 /interactive cmd.exe

Esperamos unos segundos y nos aparecerá una nueva consola, verificamos en el administrador de tareas y veremos que el proceso también está corriendo como SYSTEM. Perfecto ya casi somos dioses. Ahora haremos todo como debe ser, arreglemos Windows. Comenzaremos por cerrar el proceso explorer.exe que actualmente está corriendo con nuestro usuario. Para esto escribe en la consola system:

taskkill /im explorer.exe /f

No olvides el parametro /f para hacer un cierre forzado, de lo contrario te preguntará si quieres apagar el PC. Muy bien, se nos desaparecieron los iconos del escritorio y la barra de tareas. Ahora vamos a volver a ejecutar el explorer, esta vez con privilegio de dios. Solo escribe en la consola system:

explorer.exe

mmm.... que cosa más extraña, toda mi configuración ha cambiado, mi fondo de escritorio, mis iconos en el portapapeles, abro el botón inicio y ... !que sorpresa! hasta mi nombre ha cambiado, ya no me llamo BitXor ahora me llamo SYSTEM.

Como ya tendrás oportunidad de notar, SYSTEM es un cuenta especial. Esta no está diseñada para que la use un usuario, solo existe para ser usada por el sistema. ¿Qué puedo hacer ahora? Pues según Microsoft la cuenta SYSTEM tiene virtualmente privilegios ilimitados, así que si quieres hacer algún cambio súper crítico en el registro o acceder a los System Volumen Information este es el momento.



Artículos relacionados


No hay comentarios: