NewSID, una herramienta de seguridad “incuestionable” durante 12 años, no servía para nada (I)

La noticia no es nueva, realmente se hizo oficial y público en noviembre de 2009. Sin embargo, queremos recordar y ofrecer ahora esta información a nuestros lectores porque pensamos que no ha tenido la repercusión que merece. Es la historia de cómo un una herramienta de seguridad programada por el reputado Mark Russinovich ha sido utilizada durante 12 años… y no servía para nada.

Sysinternals (liderada por Russinovich y comprada por Microsoft en 2006) jubiló para siempre NewSID en noviembre de 2009, después de ser creada y usada intensamente por muchos administradores desde 1997. Simplemente, no servía para nada, declaró el propio creador. ¿Cómo es posible que alguien con tan extensa y demostrada experiencia creara una herramienta «inútil»? Repasemos la secuencia de hechos e intentemos extraer algunas conclusiones:

Detalles técnicos previos

De forma breve, el SID (Security Identifier) es una variable numérica en Windows que define internamente a sistemas y usuarios. El sistema trabaja con SIDs y no con los nombres de usuario que nos muestra, por ejemplo, a la hora de acceder a NTFS y comprobar los permisos.

Se entenderá con ejemplos:

* SID S-1-1-0 es el SID universal del grupo «Todos» en todos los Windows, así este grupo es reconocido por igual en cualquier máquina, por ejemplo. Los SID son siempre los mismos para los grupos por defecto que existen en los Windows (Administradores, Usuarios, «Administradores de dominio», etc.)

* S-1-5-21-1390034357-113127714-1060454298 es un ejemplo de SID de una máquina (y no de un usuario).

* S-1-5-21-1390067357-113007714-1060284298-500, sería el SID del administrador de esa máquina. La parte final, el RID, siempre es 500 para los administradores y 1000 para el invitado; 1001, para el primer usuario y así sucesivamente. Un usuario borrado y vuelto a crear, aunque sea con el mismo nombre, no será realmente el mismo usuario porque su RID será distinto.

Cuando un usuario se autentica en Windows, la Local Security Authority Subsystem (Lsass.exe) crea una sesión de logon y un token. Este token es una estructura numérica que contiene el SID de la cuenta y de los grupos a los que pertenece ese usuario además de todos los privilegios asignados a ese usuario y grupos. Se trata del «salvoconducto» que comprobará Windows cada vez que este usuario quiera realizar algo en el sistema tanto en cuestión de permisos (acceso a archivos en NTFS) como de privilegios.

Al presentarse en sesiones remotas (por ejemplo al acceder a unidades compartidas), es necesario autenticarse en el Windows remoto con una cuenta conocida para él (ya sea local o de dominio). En ese momento, el sistema hace uso de ese token para comprobar si realmente un usuario «en remoto» puede acceder.

Cuándo y por qué se usaba NewSID

En entornos corporativos es común instalar un Windows y clonarlo a otras máquinas. En 1997, Microsoft ya disponía de Sysprep, que es una herramienta que cambia el SID y además «generaliza» un sistema (lo prepara para que sea clonado «sin problemas»). Pero está muy limitado y (entre otros cambios) solo modifica el SID en Windows «vírgenes», si existen aplicaciones de terceros, no permite hacerlo. NewSID fue programado entonces para modificar consistentemente el SID de una máquina, aunque tuviese otras aplicaciones instaladas. Así, supuestamente, se garantizaba su estabilidad y además se evitaban problemas de seguridad por convivir con otras con el mismo SID.

Es casi seguro que todas las empresas que han clonado Windows en alguna ocasión, han usado NewSID con la esperanza de eliminar problemas de seguridad potenciales que se supone podían surgir por existir máquinas con el mismo SID en una red. Eso decía todo el mundo, y nadie lo cuestionaba. Pero… ¿era necesario?

Continuará…

Más Información:

The Machine SID Duplication Myth
http://blogs.technet.com/markrussinovich/archive/2009/11/03/3291024.aspx

Fuente: http://www.hispasec.com

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *