El proceso de creación de las carpetas donde se almacenan los
contenidos de las papeleras de reciclaje, únicas para cada
usuario de Windows NT, permite a un atacante, bajo determinadas
circunstancias, acceder a las papeleras del resto de usuarios
del sistema. Lo que puede permitir crear, borrar, modificar y, en
algunos casos, leer su contenido.
La papelera de reciclaje
Windows NT establece unos permisos a las carpetas que contienen
las distintas papeleras de reciclaje de forma que tan sólo
el usuario legítimo tiene acceso a sus contenidos. Esta
característica sólo la podemos encontrar en aquellos sistemas
con volumen NTFS ya que, como sabemos, en el caso de que la
partición sea FAT Windows NT no puede establecer permisos para
controlar el acceso no autorizado a los distintos objetos.
Cuando se da de alta un nuevo usuario en el sistema, Windows NT
no crea su papelera de reciclaje, sino que espera a que dicho
usuario intente utilizarla por primera vez, por ejemplo cuando
borra su primer archivo. Es en este momento cuando Windows NT
intenta acceder a su papelera, cuyo nombre está basado en el
SID (IDentificador de Seguridad) del usuario, al no encontrar
la carpeta correspondiente Windows NT interpreta que es la
primera vez que el usuario va a utilizarla y procede a su
creación con los permisos de seguridad adecuados para que los
usuarios ajenos no tengan acceso a ella. Por ejemplo, si
accedemos en un sistema Windows NT a la carpeta «C:/RECYCLER»
podemos encontrar la papelera de reciclaje con el siguiente
nombre: S-1-5-21-117035468-727127485-1262349622-500
La vulnerabilidad
El problema se presenta cuando Windows NT encuentra la carpeta,
creada con anterioridad, en tal caso interpreta que el usuario
había utilizado la papelera antes. Como entiende que no se trata
de la primera vez que hace uso de la papelera tampoco chequea
que ésta tenga los permisos adecuados para impedir el acceso
al resto de usuarios.
Aprovechando esta característica, un atacante podría crear la
carpeta de un usuario determinado antes de que éste haga uso
de la papelera de reciclaje, asignando los permisos adecuados
para tener acceso a sus contenidos. Para poder aprovechar la
vulnerabilidad el atacante debe tener acceso local a Windows
NT, averiguar el SID de la víctima y realizar todo el proceso
antes de que el usuario haga uso por primera vez de la papelera
de reciclaje.
Identificador de Seguridad (SID)
Uno de los puntos más problemáticos puede resultar, a priori,
dar con el SID de la víctima. Sin embargo, vamos a comprobar
como en realidad resulta trivial.
Durante la instalación de Windows NT se crea el SID del sistema,
un número de 96 bits, que servirá de prefijo para la creación
del resto de SIDs de los usuarios y grupos del sistema. Para
visualizar los SIDs podemos acceder en el registro del sistema,
a través de la aplicación «regedit», a HKEY_USERS:
S-1-5-21-117035468-727127485-1262349622-500
S-1-5-21-117035468-727127485-1262349622-1000
S-1-5-21-117035468-727127485-1262349622-1001
…
La entrada que termina en «500» corresponde al SID de la
cuenta del administrador, mientras que a partir de la
terminación «1000» comienzan los SIDs del resto de usuarios
del sistema incrementando el grupo de estos cuatro últimos
dígitos.
El exploit
En realidad, aunque en el ejemplo vemos distintos SIDs, tan
sólo se puede visualizar el SID correspondiente a la cuenta
que hemos utilizado para entrar en el sistema. Además del
acceso al SID a través del registro, podemos averiguarlo por
medio de las API (LookupAccountSid), no obstante el atacante
se encuentra con el problema de tener que anticiparse al SID
de la víctima con tan sólo saber el suyo propio.
El exploit que se ha hecho público en Bugtraq soluciona este
problema, de forma poco elegante, ya que crea un rango de carpetas
de papeleras de reciclaje basándose en el SID del usuario que esté
autentificado en ese momento y modifica los últimos cuatro dígitos.
Véamos el ejemplo donde el propio autor del exploit, Nobuo Miwa,
explica en Bugtraq el funcionamiento de la utilidad
«RecyclerSnooper.exe».
La utilidad requiere dos parámetros, el primero es el número
de papeleras de reciclaje y el segundo la unidad donde las
creará. Ejemplo: «RecyclerSnooper.exe 200 C»
Si el SID de la cuenta actual (usuario1) es:
S-1-5-21-823518204-813497703-1708537768-1004
el programa creará papeleras de reciclaje con los SID:
S-1-5-21-823518204-813497703-1708537768-1001
S-1-5-21-823518204-813497703-1708537768-1002
S-1-5-21-823518204-813497703-1708537768-1003
…
…
S-1-5-21-823518204-813497703-1708537768-1199
S-1-5-21-823518204-813497703-1708537768-1200
Si el usuario2 utiliza por primera vez la papelera de reciclaje
después de haber actuado la utilidad, y su SID es por ejemplo
…-1006, el usuario1 podrá acceder a su carpeta.
El parche
Microsoft ha facilitado el parche correspondiente para eliminar
la vulnerabilidad, consiste en una modificación por la cual
cada vez que se utiliza la papelera de reciclaje el sistema
chequea que tiene los permisos de seguridad adecuados. Cuando
Windows NT detecta una irregularidad en sus permisos, borra
la carpeta y crea una nueva con los permisos adecuados.
El parche está disponible, según plataforma, en:
Intel
Alpha
Repercusión
En realidad, quitando casos contados, nos encontramos con una
vulnerabilidad con demasiados condicionantes para poder tacharla
de grave. En primer lugar es local, el atacante necesita poseer
cuenta en el sistema. El acceso puede estar restringido, si bien
es cierto que puede crear ficheros y pudiera utilizarse para
introducir, por ejemplo, un troyano, que el usuario tendría que
restaurar y ejecutar. Por otro lado, no siempre se podrá leer el
contenido de la carpeta, ya que cuando se borra un objeto y se
«mueve» a la papelera de reciclaje, en realidad el objeto se
renombra, pero no cambian sus propiedades de acceso,
por lo que seguirá inaccesible al atacante si originalmente no
tenía permisos para leerlo.
Más información:
RecyclerSnooper.exe
Bugtraq
Microsoft Security Bulletin (MS00-007)
bernardo@hispasec.com
Deja una respuesta