lunes, 24 de diciembre de 2007

Escalada de privilegios (sethc)

BitXor [bitxor_nx@yahoo.com]

Tal como les prometía en la pasada edición, hoy les llega otro artículo sobre escaladas de privilegios en Windows. La semana pasada estuvimos hablando sobre escaladas al usuario SYSTEM en la versión XP del SO de Microsoft, que si era muy útil para ser explotada por un programador al implementarla a sus creaciones, no resultaba tan funcional para el usuario carente de todo privilegio. Lamentablemente para lograr una escalada con el programa AT de Windows se requiere de ciertos privilegios previos, al menos los suficientes para que el comando no nos retorne un desagradable mensaje de "Acceso denegado".

Afortunadamente la práctica a la que hoy haremos referencia nos librará de estos problemas, y si se logran seguir las instrucciones al pie de la letra al final del día nos habremos hecho de una ostentosa cuenta con privilegios administrativos.

[Reconociendo el problema]

¿Cuántas veces has estado distraído con un juego a pantalla completa y has presionado la tecla SHIFT repetidamente? Aquellos a los que les ha sucedido alguna vez recordarán la irritante sensación que experimentaron en ese momento hacia la molesta ventanita StickyKeys que se activa en Windows XP cuando un usuario presiona SHIFT cinco veces. Hoy (y probablemente por primera vez desde que instalaste XP) vamos a sacarle provecho a esa molesta aplicación que viene por defecto instalada en nuestro sistema.

Para aquellos despistados que aun no tengan una idea bien clara de lo que se está hablando vamos a proceder con un experimento de laboratorio. Para llevar a cabo esta tarea no se requieren conocimientos de C o ensamblador, tan solo presiona la tecla SHIFT repetidamente cinco veces. ¿No pasa nada?, si ya se, es posible, me pasó a mi justo escribiendo este artículo ¿y ahora qué diablos le sucede al Shift de mi teclado? No, el Shift está bien el problema es otro ¿has abierto algún juego a pantalla completa desde que iniciaste sesión? Algunos juegos para evitar el contratiempo que mencionaba justo al inicio deshabilitan la ayuda de accesibilidad de Windows temporalmente y luego olvidan rehabilitarla. Para solucionar el problema cierra la sesión actual y vuelve a entrar normalmente. Irresponsables programadores de RockStar, me sucedió a mí con Grand Theft Auto-Vice City. Solucionados los problemas proseguimos a disfrutar de nuestra aplicación de configuración de accesibilidad. Ahora si, cinco veces Shift y luego de un pitido curioso obtenemos una ventana modal con nombre StickyKeys. Un vistazo general nos llevará al administrador de tareas y desde allí no nos será difícil descubrir el nombre del proceso responsable de la ventana, se trata de "sethc.exe". Hasta ahora nada fuera de lo común, considerando que el proceso se está ejecutando con los permisos del usuario actual.

Próximo experimentos: cierra sesión nuevamente (!¿otra vez?!) y justo frente al diálogo de inserción de contraseña presiona Shift repetidamente. Mmm... cosa curiosa, a pesar de no estar logeado en el sistema Windows me ha permitido ejecutar el proceso sethc. A menos que quieras ponerte a configurar el StickyKeys desde afuera del sistema vuelve a logearte con tu usuario. Parece que hemos encontrado algo interesante en nuestro sistema a lo que le podremos sacar partido. A continuación la parte interesante (ya era hora!). Los más despiertos se estarán preguntando ¿Cómo es posible que Windows nos haya permitido ejecutar un proceso fuera del espacio de cualquier usuario?, ¿Con qué permisos se ha ejecutado el proceso sethc.exe?

[Haciéndole culto al StickyKeys]

Hora de sacarle partido a las vulnerabilidades de Windows. ¿Qué les parece si para empezar sustituimos sethc.exe por algo más interesante, cmd.exe, por ejemplo? Entre los lectores a priori puedo distinguir dos grupos bien definidos, los endemoniadamente suertudos y los tristemente desafortunados. La principal diferencia está en que los primeros no tendrán que pasar mucho trabajo para lograr explotar este bug, los segundos sin embargo necesitarán trabajar un poco más para conseguir su objetivo, de cualquier forma el resultado podría ser dos veces más gratificante, el placer es directamente proporcional al dolor requerido para obtenerlo. Olvidaba decirte que estoy asumiendo que estás probando tu suerte sentado en la PC que quieres acceder, no en tu casa frente a BlackHat. De cualquier modo se supone que estás realizando el trabajo con una cuenta con pocos privilegios. Dirígete con el explorador a la carpeta System32 del sistema y una vez allí intenta crear un nuevo documento de texto. Un mensaje de acceso denegado significa toda la diferencia entre uno y otro grupo.

Si no has tenido permiso de escritura en System32 deberás leer la próxima sección de este artículo, suponiendo que tengas permiso de escritura en la susodicha carpeta lo que haremos será sustituir el archivo sethc.exe por una copia de cmd.exe. Tendrá que hacer el cambio lo más rápido posible, ya que si Windows encuentra que le falta un archivo registrado en System32 lo recreará. Particularmente yo prefiero proceder en este paso con un fichero batch. Primeramente abre el nuevo documento de texto que acabamos de crear y en él escribe:

copy %SystemRoot%\System32\sethc.exe %SystemRoot%\System32\sethc_copy.exe
del %SystemRoot%\System32\sethc.exe
copy %SystemRoot%\System32\cmd.exe %SystemRoot%\System32\sethc.exe

Guarda los cambios, renombra el archivo como batchexploit.bat y ejecútalo. Solo para comprobar que todo marcha bien presiona Shift cinco veces y deberá mostrarse una consola del sistema en lugar del StickyKeys. El terreno está preparado, cierra sesión, ojo con esto, he dicho CERRAR sesión, NO bloquear el equipo con Win+L. Desde la pantalla de login presiona la tecla mágica repetidamente y aparecerá nuestra privilegiada consola.

¿Qué podemos hacer en este punto?
Para empezar agreguemos un nuevo usuario. Teclea el siguiente comando:

net user servant pass123 /add

Con esto estaremos creando un nuevo usuario llamado "servant" con password "pass123". Solo nos falta agregarlo al grupo de administradores

net localgroup Administradores servant /add

Te cuidado a la hora de agregar el usuario al grupo Administradores, sucede que si el SO está en inglés el grupo no se llamará Administradores sino Administrators. Para finalizar cierra la consola y entra al sistema con la cuenta que acabas de crear. Ya eres dueño de esa PC. Quizás hubieras preferido simplemente agregar tu viejo usuario al grupo de administradores en vez de crearte uno nuevo. De cualquier forma yo te aconsejo que al terminar de hacer lo que quieras dejes todo como mismo estaba. Para eliminar un usuario desde la consola usa

net user servant /del

Y para solo eliminarlo del grupo de administradores:

net localgroup Administradores servant /del

[Para los desafortunados]

Aquellos tristes mortales a los que System32 no les dio permiso de escritura no deben preocuparse. Existe más de un medio por el cual podría hacerse el cambio de archivos. Particularmente yo cuando me veo en este tipo de apuros siempre recurro a mi querido Knoppix Live CD. Para los que no estén al tanto, Knoppix es un sistema Linux que viene en live CD y nos permite levantar todo el sistema desde la torre de CD, dando acceso incluso al sistema de directorios. Solo insertas el CD, reinicias la máquina y haces un boot por la torre de disco. Una vez tengas Knoppix corriendo desde el escritorio das click derecho al disco duro donde tengas instalado Windows y deshabilitas la opción Read Only. Luego solo navegas hasta la carpeta en cuestión y haces el cambio. No necesitas un script shell para hacerlo, solo borra o renombra sethc.exe, hazle una copia a cmd.exe y renómbrala como sethc.exe. Los que no estén familiarizados con sistemas Linux no se alarmen, ¿es que acaso no han oído hablar de Winternal? Winternal es un live CD de reparación que nos permite levantar Windows desde un CD. Bien puedes hacer los cambios por allí. Hasta aquí solo he mencionado dos soluciones, pero no te limites... existen mil formas más, no olvides nuestro querido CIA Commander, por si no dispones de torre de CD. Incluso podrías simplemente hacerle llegar un archivo batch a un administrador del equipo para que lo ejecute por ti. Si eres programador, mucho más fácil. Crea un pequeño programa que haga el cambio y déjalo en una carpeta visible por todos con un título interesante. En fin, solo usa tu imaginación.
No te voy a mentir, hay máquinas donde se te puede poner el juego difícil. Unas pocas medidas de seguridad podrían ponerte en más aprietos... restricción de acceso al setup, unidades externas de disco deshabilitadas, etc. pero si eres bueno podrás hacer el cambio de archivos.


Artículos relacionados


No hay comentarios: