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 nomero 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 oltimos 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 poblico 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 oltimos 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 nomero 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:
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, segon plataforma, en:
Intel
http://www.microsoft.com/downloads/release.asp?ReleaseID=17606<7a>
Alpha
http://www.microsoft.com/downloads/release.asp?ReleaseID=17607
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
http://www.lac.co.jp/security/test/files/RecyclerSnooper.exe
Microsoft Security Bulletin (MS00-007)
http://www.microsoft.com/technet/security/bulletin/ms00-007.asp
Bernardo Quintero
bernardo@hispasec.com