Cuenta LocalSystem

LocalSystem es una cuenta local predefinida especial, disponible sólo para procesos del sistema. Esta cuenta no tiene contraseña.

En equipos con NT un servicio que se sejecuta en el contexto de LocalSystem hereda el contexto de SCM. El servicio no está asociado a ninguna sesión iniciada por una cuenta de usuario y no dispone de credenciales (nombre de dominio, nombre de usuario y contraseña) para utilizarse como comprobación. El servicio tiene acceso limitado a los recursos de red, ya que no tiene credenciales y se conecta por medio de una sesión nula.

En equipos con Windows 2000/2003, el mismo servicio y contexto usa las credenciales del equipo cuando accede a recursos sobre la red y tiene acceso total a los recursos locales. Para aquéllos servicios que acceden al servicio de directorio (AD), el contexto de LocalSystem es restringido. Cuando un servicio se ejecuta bajo LocalSystem en un equipo que es miembro de un dominio, el servicio se ejecuta bajo el contexto de la cuenta del equipo en cuanto accede a los recursos del dominio. Las cuentas de equipo normalmente disponen de pocos privilegios y no pertenecen a Grupos. Añadir cuentas de equipo a grupos no es recomendable ya que las cuentas están sujetas a eliminación y nueva creación si el equipo abandona o se vuelve a unir al dominio.

Por otro lado, un servicio ejecutándose bajo el contexto de LocalSystem en un controlador de dominio tiene acceso total al directorio, ya que el DC aloja una réplica y LocalSystem tiene acceso total a los recursos locales. El servicio NET LOGON es un ejemplo de un servicio que se ejecuta bajo la cuenta LocalSystem.

Si es posible, no ejecutar servicios bajo LocalSystem en un controlador de dominio. Ya que haciéndolo damos al servicio demasiado acceso a AD, ya que en un DC LocalSystem tiene control total del AD, y podría causar daños serios a la información de directorio.

La cuenta Localystem es la misma cuenta en que todos los componentes del sistema operativo en modo usuario de Windows Server 2003 se ejecutan, incluyendo Smss.exe (Session Manager), Crss.exe (Client/Server Runtime Subsystem), Lsass.exe (local security authority subsystem service), Winlogon.exe (Winlogon process), algunos servicios ubicados en la carpeta ruta_del_sistema\System32, y Services.exe (SCM).

Desde una perspectiva de seguridad, ésta cuenta es extremadamente potente -más que cualquier cuenta local o de dominio cuando se trata de un equipo local. Algunas de sus características:

  • Es miembro del grupo de Administradores.
  • Tiene el derecho a permitir cualquier privilegio, incluso aquéllos que normalmente no dispone la cuenta de administrador local, como crear tokens de seguridad.
  • La mayoría de archivos y claves del registro permiten acceso total a la cuenta LocalSystem. Incluso no permitiéndole acceso total, un proceso en ejecución bajo su contexto puede ejercer el privilegio de tomar propiedad para ganar el acceso necesario.
  • Los procesos que se ejecutan bajo la cuenta LocalSystem corren con el perfil de Default user (HKEY_USERS\.DEFAULT). Pueden acceder a información de configuración almacenada en los perfiles de usuario de otras cuentas mediante la clave del registro HKEY_USERS\<SID>.
  • Cuando un equipo es miembro de un dominio basado en Windows Server 2003, la cuenta LocalSystem incluye el SID del equipo en el que el servicio se ejecuta. Por lo tanto, un proceso en ejecución con esta cuenta se autenticará automáticamente en otro equipo en el mismo bosque mediante la cuenta de equipo del equipo donde se ejecuta el servicio.
  • A menos que específicamente le esté permitido a la cuenta de equipo acceder a recursos (como carpetas compartidas y otros), un proceso puede acceder a recursos de red a los que permite una sesión nula -es decir, conexiones que no necesitan credenciales. Podemos especificar las carpetas compartidas y Named pipes en un equipo en particular que permita sesiones nulas en las entradas del registro NullSessionPipes y NullSessionShares de la clave HKLM\SYSTEM\CurrentControlSet\Services\Lanmanserver\parameters.

Puedes ver parte de los privilegios de LocalSystem Account aquí.

Otra restricción para servicios ejecutándose bajo la cuenta LocalSystem es que estos generalmente no pueden mostrar cuadros de diálogo o ventanas iterativas en el escritorio del usuario sin el uso de una bandera especial de la función MessageBox. Esta limitación nos es resultado directo de ejecución bajo LocalSystem, es una consecuencia de la forma en que SCM asigna los servicios a las estaciones de ventanas.

Csrss.exe asocia cada proceso Win32 con una window station. Esta, a su vez, contiene escritorios, y los escritorios contienen ventanas. Sólo una window station puede ser visible en una consola y recibir la entrada de ratón y teclado. En un entorno de Terminal Server, una window station por sesión es visible, pero los servicios se ejecutan todos como parte de una sesión de consola. Win32 nombra la ventana visible como WinSta0. Todos los procesos iteractivos acceden a WinSta0.

Un servicio interactivo debe abrir WinSta0, pero antes de que SCM permita al servicio interactivo acceder a WinSta0 comprobará si ve si el valor de la entrada del registro NonInteractiveServices que cuelga de HKLM\SYSTEM\CurrentControlSet\Control\Windows es 1. Los administradores establecen este valor para impedir que los servicios configurados como interactivos muestren pantallas en la consola. Esta opción es deseable en un entorno de servidor sin atención en el que no hay presente usuario para responder a cuadros de mensajes de los servicios interactivos.

Nota:La herramienta de línea de comandos Objdir.exe puede utilizarse para ver objetos nombrados, incluyendo window stations en el objeto de directorio ruta_del_sistema\WindowStations. Winobj es la versión GUI. Para listar todos los servicios interactivos, debemos enumerar todos los servicios y llamar a QueryServiceConfig para cada servicio. Una buena forma es crear un script para hacer esto usando WMI o un archivo por lotes (BAT).

A menos que se indique otra cosa, SCM asocia los servicios con una window station no visible llamada Service-0x0-3e7$ que todos los servicios no interactivos comparten. El número en el nombre, 3e7, representa el identificador de sesión iniciada que Lsass.exe asigna para la cuenta LocalSystem.

De forma más específica, SCM utiliza el <LUID> del servicio donde <LUID> es el LOGON ID del inicio de sesión realizado por este servicio. Los servicios que se ejecutan con la cuenta LocalSystem reciben 0x0-3e5 y los que se ejecutan con la cuenta NetworkService 0x0-3e4. Aunque los primeros normalmente reciben el 0x0-3e7.

Los servicios configurados para ejecutarse con una cuenta de usuario se ejecutan en una window station no visible distinta cuyo nombre es el Lsass.exe LOGON PID asignado para la sesión iniciada del servicio.

A pesar de si los servicios se ejecutan con una cuenta de usuario o la cuenta LocalSystem, los que no se ejecutan en la window station visible no reciben entradas desde nosotros o de la pantalla en la consola. De hecho, si un servicio abre un cuadro de diálogo normal en la window station puede que aparezca como colgado ya que no hay usuario capaz de ver el cuadro de diálogo, que por supuesto impediría al usuario proporcionar cualquier entrada (ratón o teclado) para descartarlo.

Sólo los servicios configurados para ejecutarse con la cuenta LocalSystem pueden configurarse como interactivos.

Cuando SCM inicia un servicio configurado como interactivo, inicia el proceso en el contexto de seguridad de la cuenta LocalSystem pero lo conecta con WinSta0 en lugar de la window station de servicio no interactivo. Esta conexión hacia WinSta0 permite al servicio mostrar cuadros de diálogo y ventanas en la consola y permite a estas ventanas responder a entradas del usuario.

Leave a Reply

Your email address will not be published. Required fields are marked *


*