Puerta trasera oculta en Windows

Hoy me gustaría comentaros un error en el procesamiento del Microsoft Windows SAM que permite acceso administrativo continuo a través de un usuario oculto.
El impacto del mismo afecta a todas las versiones de Windows puesto que permiten modificaciones en tiempo real del Security Accounts Manager (SAM), con lo cuál un atacante puede crear una puerta trasera mediante una cuenta administrativa oculta para acceso continuo a un sistema una vez que el mismo ha sido comprometido.
Una vez que el atacante ha comprometido el sistema puede secuestrar una cuenta conocida o bien crear una cuenta regular oculta usando el caracter de espacio en blanco (ALT+0160). En cualquier caso dicha cuenta tendrá todos los permisos de la cuenta integrada de administrador local de la máquina compartiendo a su vez el escritorio y el perfil del mismo.
De cara al resto de usuarios de la máquina el usuario oculto no aparecerá dentro del grupo de administradores locales sino dentro del de usuarios.

Estos son los pasos indicados por StenoPlasma para explotar dicha vulnerabilidad:

Paso 1: Comprometemos el equipo Windows usando cualquier método disponible.

Paso 2: Creamos una cuenta de usuario con un nombre en blanco a través del comando 'net user " " P@$$w0rd /add'. Se puede usar la combinación de teclas ALT+0160 para crear el espacio en blanco entre las comillas dobles.

Paso 3: Creamos una tarea programada interactiva para que se ejecute un minuto después de crear el usuario. Esta tarea programada lanzará un intérprete de comandos con la cuenta NT Authority\SYSTEM. Bajo Windows 2000, XP y 2003 ejecutamos 'at 11:24 /interactive cmd.exe' mientras que bajo Windows Vista, 7 o 2008 Server sólo tenemos la opción de editar el registro mediante 'schtasks'.


Paso 4: Una vez que obtenemos el intérprete de comandos con SYSTEM, abrimos el editor del registro (regedit) desde la línea de comandos.


Paso 5: Nos situamos en 'HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names'

Paso 6: Hacemos clic en el nombre de la nueva cuenta de usuario.

Paso 7: Tomamos nota del campo "Type" para ese usuario.

Paso 8: En este ejemplo, el campo "Type" del usuario backdoor es 0x40D y el del administrador built-in (renombrado a root) es 0x01F4.


Paso 9: Bajo 'HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users' hacemos clic en 0000040D.

Paso 10: En el panel derecho hacemos doble clic sobre el valor "F".



Paso 11: Vamos al séptimo registro de los valores hexadecimales.

Paso 12: Cambiamos el valor de "0D 04" a "F4 01".



Paso 13: Salimos y volvemos a entrar con la nueva cuenta de backdoor.

Paso 14: Ahora te darás cuenta que estas usando el escritorio del administrador y sus privilegios.


Paso 15: Cuando ejecutes el comando 'net localgroup Administrators' veremos la cuenta backdoor sólo si estamos logeados con el usuario backdoor, es decir, el resto de usuarios sólo verán el resto de cuentas normales.

Paso 16: Borra cualquier cuenta temporal que hayas podido crear durante la ejecución de este método.

PRODUCTOS VULNERABLES:

Microsoft Windows 2000 Workstation, Windows 2000 Server, Windows 2003 Server, Windows XP, Windows Vista, Windows 7 y Windows 2008 Server (Windows Vista, Windows 7 y Windows 2008 Server son más difíciles de explotar porque no se puede conseguir un shell con SYSTEM, aunque si es posible editar el registro para completar el método).

Comentarios

  1. Muy flojo el articulo. :(

    Primero, esto no es una "vulnerabilidad", porque solo funciona si un atacante ya consiguio el control de la maquina. Es un "backdoor" (puerta trasera) para que el atacante recupere el acceso al sistema por otros medios mas adelante.

    Segundo, es una tecnica muy pero muy vieja. Estas cosas ya se hacian en Unix, en Novell Netware y hasta en DOS desde antes quizas que el autor del articulo haya nacido. Estaria bueno aclarar eso, y que no es un problema especifico en Windows sino una tecnica que uno puede utilizar en cualquier sistema.

    Tercero, al menos habria que traducir las instrucciones en lugar de copiarlas y pegarlas de la pagina en ingles, no? :)

    En fin, que no quiero tirarles piedras tampoco :) quisiera que piensen en este comentario como critica constructiva...

    Un saludo!

    ResponderEliminar
  2. Hola Mario,

    ante todo agradecerte tu comentario porque, como bien dices, se trata de una crítica constructiva.

    Efectivamente la técnica de ocultar usuarios como puerta trasera a un sistema ya comprometido es más vieja que la tos, pero el artículo trata específicamente de usar esa técnica mediante de un fallo de Microsoft Windows al procesar la SAM enmascarando el usuario con privilegios de administrador. No trata de explicar como crear un cuenta oculta, sino como modificar la SAM en tiempo real de forma que no sea detectable por nadie.

    Si te fijas en la descripción de Securityfocus (http://www.securityfocus.com/archive/1/514979) verás 'steps to exploit this vulnerability' o 'VULNERABLE PRODUCTS:' por lo que desde mi perspectiva se trata también de una vulnerabilidad.

    Además viendo el 'TIMELINE' vemos que el autor lo notificó a Microsoft el 8 de Agosto y 2 días después el MSRC respondió que no tenía nada que investigar porque la acción sólo podía ocurrir después que un sistema fuera comprometido. Bajo mi punto de vista eso también es un error porque facilita el acceso contínuo a un sistema y, como dice StenoPlasma, es díficil que una herramienta de auditoría se "de cuenta" que se ha modificado un valor hexadecimal cuando ni siquiera los administradores locales pueden leer la SAM...

    Respecto a los pasos, ya los he traducido al castellano y he adjuntado algunos pantallazos de Iñaki. Disculpanos, ya sabes que la falta de tiempo a veces no nos deja hacer las cosas tan bien como quisiéramos.

    Muchas gracias!

    ResponderEliminar
  3. Buen articulo, y tambien buena la aclaracion que le has echo a @Mario . Eso de "Muy flojo el articulo. :(" no me parece una buena frace para iniciar una critica constructiva. En fin.... Gracias .

    ResponderEliminar
  4. Existe una lista de caracteres no válidos para nombres de usuario pero no sé si se puede editar de algún modo. Si así fuera bastaría con añadir el carácter " " (alt+0160).

    http://support.microsoft.com/kb/909264

    Pero si no lo han hecho ya no debe ser tan trivial.
    En cualquier caso, el usuario se muestra haciendo un net user o mediante cualquier herramienta gráfica de gestión de usuarios. Eso sí, sin nombre.

    ResponderEliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. Salu2.
    La entrada esta currada... :)
    Cuando ves los usuarios
    "net user" si tienes permisos de administrador simplemente con hacer
    "net user usuario *" te pedirá la nueva contraseña sin pedir la antigua...
    Y para ser admin me he dado cuenta hace mucho tiempo de que Windows tiene un fallo enorme... "que raro no?"
    bueno quien no sabe lo que pasara si pulsas 5 veces la tecla shift?
    el archivo q bota es sethc que esta en system32, si cogemos un CDlive de cualquier distribución linux y nos vamos a la carpeta system32 hacemos una copia del cmd.exe y borramos sethc.exe y a la copia le ponemos el nombre del anterior archivo :P
    al iniciar nuestro Windows pulsamos 5 veces shift y wuala! tenemos la consola... y como no hemos conectado como un usuario somos system! :P

    Mas detalles aquí "me hago un poco de publi :P jeje"
    http://hackdefender.wordpress.com/2010/11/13/contrasena-de-usuario-windows/

    ResponderEliminar
  7. @yuriy la verdad es que el método de las sticky keys es viejo, del 2007 creo, pero se sigue utilizando.
    También podrías resetear la password del administrador desde tu Ubuntu con 'sudo chntpw -u nombre_usuario SAM', con Barts o con algún liveCD que ataque a la SAM.

    Buen blog por cierto!

    ResponderEliminar
  8. PEEEERRRRAAAAAAAAA
    PINCHE ROLLO TAN MAS CULERO NO ME FUNCIONO
    Pero de cualkier forma
    Buen Aporte Y gracias por compartir

    ResponderEliminar
  9. Se veía prometedor, pero en Windows 10 no funcionó!!!

    ResponderEliminar

Publicar un comentario