Restrict Anonymous Logins
Antes de comenzar a hablar sobre este casi olvidado tema me voy a adentrar en explicar algunos puntos a cubrir respecto de lo que llamamos "Null user" (usuario nulo).
Dentro de lo que es el esquema de autenticación de Microsoft Windows, se encuentra el objeto "user" (usuario). Cuando creamos una cuenta, se le esta asignando derechos, privilegios y politicas restrictivas respecto de lo que puede hacer o no dentro de nuestra red.
Adicionalmente de las cuentas de usuario standard, Windows admite un tipo especial de cuenta llamado "Null User", que basicamente es una pseudo-cuenta que no tiene nombre de usuario o contraseña, pero se le permite acceder a cierta información en la red.
Por su diseño, dicha cuenta puede enumerar nombres de cuentas y recursos compartidos en los controladores de dominio, en los servidores miembro así como también en las estaciones de trabajo. Con lo cual un usuario sin credenciales (Null User), puede ser utilizado para conseguir bastante información de nuestra red.
Como bien leí por ahi, la pregunta a formularnos es ""porque es necesaria esta "cuenta"?"
Antes de comenzar a hablar sobre este casi olvidado tema me voy a adentrar en explicar algunos puntos a cubrir respecto de lo que llamamos "Null user" (usuario nulo).
Dentro de lo que es el esquema de autenticación de Microsoft Windows, se encuentra el objeto "user" (usuario). Cuando creamos una cuenta, se le esta asignando derechos, privilegios y politicas restrictivas respecto de lo que puede hacer o no dentro de nuestra red.
Adicionalmente de las cuentas de usuario standard, Windows admite un tipo especial de cuenta llamado "Null User", que basicamente es una pseudo-cuenta que no tiene nombre de usuario o contraseña, pero se le permite acceder a cierta información en la red.
Por su diseño, dicha cuenta puede enumerar nombres de cuentas y recursos compartidos en los controladores de dominio, en los servidores miembro así como también en las estaciones de trabajo. Con lo cual un usuario sin credenciales (Null User), puede ser utilizado para conseguir bastante información de nuestra red.
Como bien leí por ahi, la pregunta a formularnos es ""porque es necesaria esta "cuenta"?"
La cuenta "Null User" es utilizada por IPC$ (Interprocess Communications - Comunicación entre procesos).
Para ser más claros con un ejemplo, en un modelo de multiples dominios donde las relaciones de confianza creadas son unidireccionales (one-way), la cuenta "Null user" es utilizada cuando los permisos para los recursos en el dominio confíado (dominio A) necesitan ser asignados a cuentas de usuario del dominio confiado (dominio B) para acceder a los mismos. Con lo cual es necesario que exista una forma de poder listar las cuentas del dominio vecino sin estar autorizados/confiados en el mismo, he aquí un modo claro de ver la utilidad de dicha cuenta.
Entonces vemos que el problema que se nos presenta, es que cualquier persona con acceso a establecer una conexión NETBIOS, puede facilmente obtener un listado completo de todos los nombres de usuario, grupos, recursos compartidos, permisos, politicas, servicios y más.
Una buena herramienta para probar esto es DUMPSEC, la cual pueden bajar desde:
Aparece RestrictAnonymous para NT
La situación anteriormente comentadada fue notada por Microsoft, quien con la salida de SP3 nos brindo la hermosa rama:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA (RestrictAnonymous)
con lo cual un administrador puede "solucionar" dicho inconveniente cambiando un simple valor de parametro y listo. No más ataques de enumeración y todos contentos.. pero...
paso que de golpe alguien vio que NT4 no impedía la obtención de información (enumeración) mediante el agregado de esta Key en la registry, sino que solo lo limitaba. Ya que la funcionalidad del "null user" es más que necesaria para las funciones principales de Dominio de NT, Microsoft tomo la desición de solo limitar algunas de esas funcionalidades en lugar de eliminarlas.
De esta manera lo que se hizo fue agregarle ACLs a ciertas APIs (Ej: NetServerGetInfo), para impedir que sean invocados por una sesion "Null user", pero dejo de lado muchas otras, con lo cual el problema persistió (Ej:LookupAccountName).
El problema es que podriamos conseguir al conseguir el SID de un grupo recurrente (ej: domain admins) y concatenarlo con el UserID de las cuentas Built-in (Ej: Administrador = 500) a una porción del SID se podría determinar el SID full de dicho usuario incluso hasta si se ha renombrado la cuenta.
Que ocurrió con Windows 2000?
Llego el turno de RestrictAnonymous para Windows 2000 y con el más sorpresas. Windows 2000 introduce soporte para un nuevo valor en la rama RestrictAnonymous, de "2".
Este valor 2 No permite acceso sin permisos anónimos explícitos según la documentación de Microsoft. Con este valor, el token de acceso creado para los usuarios "no autenticados" no incluye el grupo EVERYONE, por lo que ya no se tiene acceso a recursos que conceden permisos a dicho grupo.
Pero ojo, no todo es paz y amor (que raro), Cuando el valor RestrictAnonymous se establece en 2 en el Registro para un controlador de dominio basado en Microsoft Windows 2000, tambien se esta restringiendo lo siguiente:
- Las estaciones de trabajo o servidores miembro no pueden establecer un canal seguro de netlogon.
- Los controladores de dominio de los dominios que confían no pueden configurar un canal seguro de netlogon.
(recordemos que por ejemplo NT crea una sesión de inicio con la cuenta "Null User", contra un controlador de dominio después que su nombre NETBIOS fuese registrado correctamente por este, previo a tener que loguearnos con una cuenta de usuario. De modo que NT requiere establecer un inicio de sesión "null" exitoso, ya que sino no sería capaz de inicializar un canal seguro de netlogon contra el DC)
- Los usuarios de Microsoft Windows NT no pueden cambiar su contraseña cuando ésta ha caducado.
- El servicio BROWSER, no puede listar dominios o servidores desde el Master Browser, Backup Master Browser o Domain Master Browsers que tengan seteado el valor RestrictAnonymous del Registro en 2.
Por estos motivos es que para Entornos en modo Mixto, se recomienda no configurar en 2 el valor de RestrictAnonymous. Si es recomendable hacerlo en entornos 100% 2000 y trás haber realizado todas las pruebas pertinentes.
Ojo si tenemos relaciones de confianza con dominios NT, ya que el setear el valor en 2, sabemos que traerá problemas.
Otro dato a tener en cuenta, es que a la hora de aplicar plantillas de seguridad High predefinidas, configuran el valor de RestrictAnonymous en 2, con lo cual sepan a que estan sujetos en caso de aplicarlas.
Para cerrar el tema, cito parte del KB de Microsoft
RestrictAnonymous se configura cambiando la clave del Registro a 0 o a 1 para Windows NT 4.0, o a 0, 1 ó 2 en el caso de Windows 2000. Estos números corresponden a las configuraciones siguientes:
0 Ninguna. Se basa en los permisos predeterminados
1 No permite la enumeración de nombres y cuentas SAM
2 No permite acceso sin permisos anónimos explícitos
Bien, has leido todo y estas decidido a ajustar un poco más el tema seguridad en tu red?
COn una cuenta con los permisos suficientes, vás a INICIO, EJECUTAR, escribe REGEDIT
Efectúa un backup de la rama a modificar en caso que algo no resulte bien y luego procede a cambiar el siguiente valor:
Valor del Registro RestrictAnonymous
Utilice el Editor del Registro para ver la clave del Registro siguiente y, a continuación, agregue el valor siguiente a esta clave; o modifíquela si el valor ya existe:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA
Valor: RestrictAnonymous
Tipo del valor: REG_DWORD
Información del valor: 0x2 (Hex)
Para que se apliquen los cambios habrá que reiniciar el equipo.
Enlaces consultados:
Mskb Q246261: How to use the RestrictAnonymous registry value in Windows 2000
Mskb Q143474: Restringir la información disponible a los usuarios anónimos
MSKB Q129457: RestrictAnonymous Access Enabled Lets Anonymous Connections Obtain the Password Policy Mskb Q129457: RestrictAnonymous acceso permitido Permite conexiones anónimas obtener la directiva de contraseñas
MSKB Q246261: Como usar el valor de registro RestrictAnonymous Registry en Windows 2000
Mskb Q246261: Cómo utilizar el valor del Registro RestrictAnonymous en Windows 2000
Security Focus - RestrictAnonymous
http://www.securityfocus.com/infocus/1352
Publicar un comentario