Todo lo que necesitas saber sobre los identificadores de seguridad (SIDs) en Windows

Como administrador de una red de Windows, es probable que estés familiarizado con los Identificadores de Seguridad (SIDs, por sus siglas en inglés). Cualquier objeto al que se pueda aplicar seguridad tiene un SID único. Si alguna vez has mirado un SID, sabrás que parece ser un número enorme y aleatorio. Sin embargo, hay un método en la locura y puedes aprender mucho sobre un objeto examinando su SID. A veces, incluso es posible manipular la seguridad que se aplica a un objeto manipulando su SID.

Índice de Contenido
  1. Los componentes de un SID
  2. ¿Qué significan los números del SID?
  3. Trabajando con SIDs
    1. Un ataque de elevación de privilegios
    2. Obteniendo acceso a la lista de usuarios
  4. Herramientas de solución de problemas

Los componentes de un SID

Un SID es simplemente un número que identifica de manera única un objeto. Windows no asigna permisos directamente a un SID, sino a un Descriptor de Seguridad (SD, por sus siglas en inglés). Un SD contiene un conjunto de permisos o denegaciones relacionados con un SID en particular. Los SIDs son similares en naturaleza a los UIDs (Identificadores Únicos) utilizados en entornos UNIX. Lo que los hace diferentes, sin embargo, es que los SIDs son únicos, incluso en una red.

Por ejemplo, supongamos que tienes una red que consta de dos dominios. Cada dominio tiene un usuario llamado "Administrador". Sin embargo, incluso si la contraseña, la descripción y cualquier otra cosa del Administrador se configuraran como idénticas, las cuentas serían diferentes desde la perspectiva de Windows porque tendrían SIDs diferentes. Del mismo modo, Windows trata una cuenta de administrador de dominio de manera diferente a una cuenta de administrador local debido a las diferencias en los SIDs. Incluso las cuentas administrativas locales en estaciones de trabajo dentro de un dominio se consideran únicas desde la perspectiva de Windows.

La razón por la que es posible para Windows distinguir entre SIDs, incluso en máquinas diferentes en una red, se debe a la forma en que se estructuran los SIDs. En un entorno de dominio, todos los objetos dentro de un dominio tienen SIDs que se basan en un SID raíz, que identifica al dominio. Te mostraré la completa anatomía de un SID más adelante, pero aquí tienes un ejemplo rápido. Supongamos que tienes un dominio llamado TEST, que utiliza el siguiente SID:

S-1-5-21-186985262-1144665072-74031268

Un usuario dentro de ese dominio tendría un SID que reflejaría el dominio. Por ejemplo, el SID de un usuario individual podría ser:

Los pasos esenciales para una gestión de seguridad efectiva

S-1-5-21-186985262-1144665072-74031268-1309

Como puedes ver, el número 1309 fue añadido al final del SID del dominio, identificando de manera única el objeto del usuario dentro del dominio. La última parte del SID, en este caso 1309, es lo que se conoce como identificador relativo o RID. Si varias máquinas tienen objetos con nombres idénticos, como la cuenta de Administrador, entonces es posible que el objeto tenga un RID idéntico en las diferentes máquinas. Sin embargo, cuando el RID se combina con el SID, el SID se vuelve único y se puede identificar el objeto de manera única en la red.

¿Qué significan los números del SID?

Probablemente has notado que un SID consta de números separados por guiones. Estos números no son completamente aleatorios, sino que tienen significados específicos. El primer dígito de un SID siempre es una "S". La "S" designa el número como un SID. Esto evita que el SID se confunda con un descriptor de seguridad, un identificador único global (GUID, por sus siglas en inglés) o cualquier otra cosa.

El siguiente número en la serie es el número de versión. Todas las versiones actualmente existentes de Windows usan el número 1 como número de versión. El siguiente número es el identificador de la autoridad de nivel superior. La mayoría de las veces, este número será 5, pero también se utilizan los números del 0 al 4. Esto se debe a que hay cinco autoridades de seguridad diferentes:

  • AUTORIDAD_SECURITY_NULL_SID: Este SID se refiere a un grupo sin miembros, esencialmente un grupo nulo. Esta autoridad se designa con el número 0. Se utiliza principalmente para números SID universales. Es decir, SIDs que serían iguales en mi máquina que en la tuya.
  • AUTORIDAD_SECURITY_WORLD_SID: Este SID está representado por el número 1. Esta autoridad es responsable del grupo de Todos (Everyone). El grupo de Todos se designa con el prefijo de SID S-1-1-0.
  • AUTORIDAD_SECURITY_LOCAL_SID: Esta autoridad de SID gestiona a los usuarios locales y se designa con el número 2. Cualquier persona con el permiso de iniciar sesión localmente será miembro de un grupo con el prefijo de SID S-1-2-0.
  • AUTORIDAD_SECURITY_CREATOR_SID: Este SID, designado por el número 3, está asociado con el Identificador del Propietario Creador (S-1-3-0) y el Grupo del Propietario Creador (S-1-3-1).
  • AUTORIDAD_SECURITY_NT_AUTHORITY: Este SID, designado por el número 5, es con mucho la autoridad de SID más utilizada. Es responsable de generar SIDs para todas las cuentas de usuario, grupos globales y grupos locales (por ejemplo, S-1-5-21).

(El número 4 permite la creación de SIDs que no son únicos. No discutiremos aquí el uso de AUTORIDAD_SECURITY_NON_UNIQUE en este artículo).

El siguiente conjunto de números en la serie tiene significados diferentes, pero se utilizan comúnmente para reflejar grupos. Por ejemplo, el grupo de Todos se designa con el prefijo de SID S-1-1-0. En un entorno de dominio, aquí tienes otros prefijos de SID comúnmente utilizados:

Configuración y monitoreo de IPCop: una guía completa para administrar tu firewall Linux
  • Todos - S-1-1-0
  • Creador/Propietario - S-1-3-0
  • Proceso por lotes - S-1-5-3
  • Usuario Autenticado - S-1-5-11
  • Sistema - S-1-5-18

El prefijo de SID funciona de manera un poco diferente para los sistemas locales. Un prefijo de SID de S-1-5-32 indica que el objeto se interpreta solo localmente. Algunos prefijos de SID locales comunes son los siguientes:

  • Administradores - S-1-5-32-544
  • Usuarios - S-1-5-32-545
  • Invitados - S-1-5-32-546

Puedes encontrar una lista más completa de SIDs conocidos en el sitio web de soporte de Microsoft.

Ahora que he explicado los diferentes componentes de un SID, echemos otro vistazo al ejemplo de SID que utilicé anteriormente. Como recordarás, el SID de ejemplo era S-1-5-21-186985262-1144665072-74031268-1309. En este ejemplo, los números tienen las siguientes funciones:

  • S - Identifica el número como un SID
  • 1 - Número de versión
  • 5 - Designa la autoridad de SID SECURITY_NT_AUTHORITY
  • 21-186985262-1144665072-74031268 - Identificador de dominio
  • 1309 - Identificador relativo del objeto

Trabajando con SIDs

Ahora que sabes cómo leer un número de SID, es posible que te preguntes qué puedes hacer con él. Desde un punto de vista administrativo, poder entender el significado de un SID te ayudará a identificar la función de muchas entradas en el registro del sistema. En una nota más oscura, la manipulación de SIDs también se puede utilizar para hackear un sistema. En las secciones siguientes, voy a demostrarte algunas técnicas de hacking relacionadas con los SIDs.

Un ataque de elevación de privilegios

Una de las técnicas más comunes para el hacking basado en SID se llama ataque de elevación de privilegios. Es difícil para un hacker simplemente modificar un SID en el dominio local y obtener acceso administrativo al dominio. Hay dos razones para esto. Primero, modificar un SID no es un proceso sencillo. Segundo, el proceso requiere privilegios administrativos. Aunque se ha utilizado esta técnica en ocasiones, una técnica más común es aprovechar la forma en que Windows implementa las relaciones de confianza entre dominios.

En Windows 2000, se utilizan relaciones de confianza transitiva. Esto significa que si el Dominio A confía en el Dominio B, y el Dominio B confía en el Dominio C, entonces, por naturaleza de las relaciones de confianza transitivas, el Dominio A confía en el Dominio C. Un hacker puede utilizar esta relación para obtener acceso a un dominio confiado a partir de un dominio de confianza.

Guía para principiantes sobre la infraestructura de clave pública (PKI)

Normalmente, cuando una solicitud se pasa de un dominio de confianza a un dominio confiado, la solicitud se pasa al dominio junto con el SID del usuario que está realizando la solicitud. Dado que la solicitud proviene de un dominio confiable, el SID se basaría en el SID raíz del dominio confiable.

Ahora, supongamos que un hacker quiere obtener acceso administrativo al dominio de confianza. Podría modificar el SID que se pasa junto con la solicitud de una manera que refleje la pertenencia al grupo administrativo. Este sería un SID con el número S-1-5-SID del dominio-500 (cuenta de administrador del dominio) o S-1-5-SID del dominio-512 (grupo Administradores del dominio).

El verdadero truco para llevar a cabo este tipo de ataque es que el hacker debe usar un SID de dominio falso. La razón de esto es que cuando se utiliza una relación de confianza, el dominio de confianza verifica la legitimidad del SID asociado con la solicitud entrante. Sin embargo, no verifica que el dominio confiado sea autoritativo para todos los SID entrantes. Por lo tanto, si la parte de dominio del SID apunta a un dominio desconocido o no autorizado, entonces el dominio de confianza asume que la solicitud está relacionada con una relación de confianza transitiva y, por lo tanto, debe pertenecer a un dominio desconocido que es confiable para el dominio confiable. La solicitud se valida y el hacker ingresa al dominio de confianza con privilegios administrativos.

Entonces, ¿cómo puedes prevenir este tipo de ataque? Para detener este tipo de ataque, debes utilizar el filtrado de SIDs. El filtrado de SID es una técnica mediante la cual Windows 2000 verifica la legitimidad de las solicitudes entrantes. Esencialmente, el filtrado de SID deshabilita las relaciones de confianza transitivas y, por lo tanto, no debe utilizarse en organizaciones que hacen uso legítimo de relaciones de confianza transitivas.

Si deseas implementar el filtrado de SID, debes asegurarte de que cada controlador de dominio esté ejecutando Windows 2000 Service Pack 2 o superior. Luego puedes utilizar la utilidad NETDOM para implementar el filtrado de SID. Debes utilizar la versión de NETDOM incluida en la carpeta de Herramientas de Soporte de Service Pack 2. Esta versión de NETDOM incluye un interruptor llamado /FILTERSIDS. Debes ejecutar NETDOM con el interruptor /FILTERSIDS y todos los demás interruptores correspondientes en cada controlador de dominio del dominio.

Obteniendo acceso a la lista de usuarios

Otra forma en que los SIDs pueden ser explotados es utilizándolos para obtener acceso a la lista de usuarios. Una vez que alguien conoce los nombres de usuario dentro de un dominio, es fácil descifrar las contraseñas correspondientes. Es absolutamente aterrador ver lo fácil que es adquirir la lista de usuarios.

Cuál es la relación entre suposiciones y riesgos en un proyecto

Comienza estableciendo una sesión nula con la máquina a la que pretendes hackear aprovechando la parte compartida IPC$ de la máquina. Puedes hacer esto a través del comando NET USE. Por ejemplo, para esta demostración, estaré hackeando una máquina llamada DR-EVIL. Por lo tanto, ingresaré el siguiente comando:

NET USE \\dr-evil\ipc$

Una vez que se haya establecido la sesión, debes utilizar una utilidad llamada USER2SID, que está disponible en varios sitios web de hackers. La utilidad USER2SID te permite encontrar el SID de un usuario o grupo específico. Por ejemplo, si quisieras encontrar el SID del grupo Administradores del dominio en DR-EVIL, ingresarías el siguiente comando:

USER2SID \\dr-evil "Administrators"

Cuando ejecuté la utilidad en mi máquina de prueba, se devolvieron la siguiente información:

S-1-5-21-746137067-764733703-83952215-512
Número de subautoridades: 5
Dominio: TEST
Longitud del SID en memoria: 28 bytes
Tipo de SID: SidTypeGroup

10 problemas éticos planteados por las capacidades de TI

El siguiente paso en el proceso es conocer un poco acerca de cómo funcionan los SIDs. Anteriormente, expliqué que los objetos de usuario y grupo dentro de un dominio utilizan el SID del dominio y un RID añadido. Si el número RID está por debajo de 1000, se relaciona con un usuario o grupo integrado, mientras que los valores de 1000 o superiores se relacionan con objetos no predeterminados. Esto significa que puedes calcular los SIDs de usuarios y grupos comenzando con el SID del dominio, agregando un valor de RID de 1000 y contando hacia arriba desde allí.

La siguiente pieza del ataque es el uso de la herramienta complementaria de USER2SID llamada SID2USER. Esta herramienta viene con USER2SID y convierte números SID en nombres de usuario. Ahora, vamos a trabajar de manera inversa para encontrar los nombres de usuario.

Anteriormente, determinamos que el grupo de Administradores de dominio tenía un SID de S-1-5-21-746137067-764733703-83952215-512. Esto significa que podríamos determinar los nombres de usuario del dominio comenzando con el SID S-1-5-21-746137067-764733703-83952215-1000, y luego trabajando hacia arriba para S-1-5-21-746137067-764733703-83952215-1001, S-1-5-21-746137067-764733703-83952215-1002, etc. Incluso podrías escribir un script que verifique cada SID por ti.

Ahora, simplemente ingresa el siguiente comando para adquirir los nombres de usuario:

SID2USER \\nombre_de_máquina SID

Por ejemplo, si estuvieras tratando de encontrar los usuarios en DR-EVIL, usarías este comando:

Cómo usar un árbol de decisiones para gestionar los riesgos del proyecto

SID2USER \\DR-EVIL 5 21 746137067 764733703 83952215 1000

Observa en el comando anterior que los guiones se han reemplazado por espacios. También notarás que se ha omitido la "S" y el "1" al comienzo del SID, y que el SID comienza con el número de autoridad de SID, en este caso, 5. Cuando ejecutas este comando, la salida se verá algo así:

Nombre: User1
Dominio: Test
Tipo de SID: SidTypeAlias

Puedes ver una captura de pantalla real de este tipo de hack a continuación en Figura A:

Todo lo que necesitas saber sobre los identificadores de seguridad (SIDs) en Windows - Seguridad | Imagen 1 Newsmatic

En este caso, apuntamos a los usuarios encontrados en el grupo Administradores de dominio. Sin embargo, podríamos haber apuntado fácilmente a cualquier otro grupo simplemente especificando un grupo diferente para buscar el SID.

Cómo habilitar el envejecimiento de contraseñas en Linux

Entonces, ¿cómo te proteges contra este tipo de hack? Internamente, la única protección es utilizar contraseñas seguras que no sean fáciles de adivinar o descifrar. Externamente, puedes bloquear este tipo de ataque bloqueando el puerto TCP 139.

Herramientas de solución de problemas

Tratar de entender cómo funcionan los SIDs puede volverte loco, pero una vez que comprendas cómo se construyen, pueden ser realmente útiles. Cuando se utilizan conjuntamente con herramientas de hacking, pueden proporcionarte una herramienta poderosa para ayudar a solucionar problemas en tu servidor de Windows 2000.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Seguridad, allí encontraras muchos artículos similares a Todo lo que necesitas saber sobre los identificadores de seguridad (SIDs) en Windows , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.