Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

226
Visualizações
¿Qué significa el valor de nivel de integridad obligatorio de 0x2010?

Estoy ejecutando el siguiente fragmento de código en mi proceso de modo de usuario que se inicia cuando una cuenta de usuario de Windows inicia sesión en la estación de trabajo. O, en otras palabras, su ruta se ubica en la clave de registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run .

Se supone que el código determina el nivel de integridad obligatorio de mi proceso de usuario. Va como tal:

 DWORD getMIL() { //Try to get integrity level //-1 Unknown //SECURITY_MANDATORY_UNTRUSTED_RID 0x00000000 Untrusted. //SECURITY_MANDATORY_LOW_RID 0x00001000 Low integrity. //SECURITY_MANDATORY_MEDIUM_RID 0x00002000 Medium integrity. //SECURITY_MANDATORY_MEDIUM_PLUS_RID SECURITY_MANDATORY_MEDIUM_RID + 0x100 Medium high integrity. //SECURITY_MANDATORY_HIGH_RID 0X00003000 High integrity. //SECURITY_MANDATORY_SYSTEM_RID 0x00004000 System integrity. //SECURITY_MANDATORY_PROTECTED_PROCESS_RID 0x00005000 Protected process. DWORD dwIntgtyLvl = -1; HANDLE hToken; if(OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY, &hToken)) { DWORD dwSizeIntgtyLvl = 0; if(!GetTokenInformation(hToken, TokenIntegrityLevel, NULL, dwSizeIntgtyLvl, &dwSizeIntgtyLvl) && ::GetLastError() == ERROR_INSUFFICIENT_BUFFER) { BYTE* pbIntgtyLvl = new BYTE[dwSizeIntgtyLvl]; if(pbIntgtyLvl) { TOKEN_MANDATORY_LABEL* pTML = (TOKEN_MANDATORY_LABEL*)pbIntgtyLvl; DWORD dwSizeIntgtyLvl2; if(GetTokenInformation(hToken, TokenIntegrityLevel, pTML, dwSizeIntgtyLvl, &dwSizeIntgtyLvl2) && dwSizeIntgtyLvl2 <= dwSizeIntgtyLvl) { dwIntgtyLvl = *GetSidSubAuthority(pTML->Label.Sid, (DWORD)(UCHAR)(*GetSidSubAuthorityCount(pTML->Label.Sid)-1)); } //Free mem delete[] pbIntgtyLvl; pbIntgtyLvl = NULL; } } ::CloseHandle(hToken); } return dwIntgtyLvl; }

En un flujo normal de eventos, esperaría obtener el valor de 0x2000 para SECURITY_MANDATORY_MEDIUM_RID , o 0x3000 para SECURITY_MANDATORY_HIGH_RID , pero si tengo una cuenta de usuario de Windows ya iniciada, y luego cambio de usuario e inicio sesión con otra cuenta de usuario , el método anterior me dará el valor de 0x2010 para el nivel de integridad obligatorio.

¿Alguien sabe qué significa ese valor?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Se describe justo en la parte inferior de la página de MSDN en Diseño del mecanismo de integridad de Windows :

Los RID están separados por intervalos de 0x1000 para permitir la definición de niveles adicionales en el futuro. La separación también permite asignar un nivel de integridad a un proceso que es ligeramente superior al medio: por ejemplo, para cumplir con objetivos específicos de diseño del sistema.

...

A las aplicaciones que se inician con derechos UIAccess para un usuario estándar se les asigna un valor de nivel de integridad ligeramente superior en el token de acceso. El nivel de integridad del token de acceso para la aplicación UIAccess para un usuario estándar es el valor del nivel de integridad medio, más un incremento de 0x10. El nivel de integridad más alto para las aplicaciones de UIAccess evita que otros procesos en el mismo escritorio en el nivel de integridad medio abran el objeto de proceso de UIAccess

over 4 years ago · Santiago Trujillo Relatório

0

No está teniendo en cuenta que los niveles de integridad usan rangos de valores, donde a un token/proceso se le puede asignar un valor dentro de un rango de valores para su nivel de integridad. Solo busca valores específicos.

La integridad no confiable puede tener cualquier valor entre SECURITY_MANDATORY_UNTRUSTED_RID (incluido) y SECURITY_MANDATORY_LOW_RID (no incluido).

La integridad baja puede ser cualquier valor entre SECURITY_MANDATORY_LOW_RID (incluido) y SECURITY_MANDATORY_MEDIUM_RID (no incluido).

La integridad media puede ser cualquier valor entre SECURITY_MANDATORY_MEDIUM_RID (incluido) y SECURITY_MANDATORY_HIGH_RID (no incluido). Que es lo que estás viendo en tu ejemplo.

La integridad alta puede ser cualquier valor entre SECURITY_MANDATORY_HIGH_RID (incluido) y SECURITY_MANDATORY_SYSTEM_RID (no incluido).

Cualquier valor igual o superior a SECURITY_MANDATORY_SYSTEM_RID está reservado para el sistema.

Hay una tabla en la documentación que muestra esto:

Diseño del mecanismo de integridad de Windows

Tabla 2 Niveles de integridad definidos y valores correspondientes

Valor Descripción Símbolo 

0x0000 Nivel no confiable SECURITY_MANDATORY_UNTRUSTED_RID
0x1000 Nivel de integridad bajo SECURITY_MANDATORY_LOW_RID
0x2000 Nivel de integridad medio SECURITY_MANDATORY_MEDIUM_RID
0x3000 Nivel de integridad alto SECURITY_MANDATORY_HIGH_RID
0x4000 Nivel de integridad del sistema SECURITY_MANDATORY_SYSTEM_RID
over 4 years ago · Santiago Trujillo Relatório

0

Aquí hay una lista con nombre: SID conocidos

 | SID | Name | DEC | HEX | BIN | |-------------- |----------------------------------- |------- |------ |----------------: | | S-1-16-0 | Untrusted Mandatory Level | 0 | 0000 | 0 | | S-1-16-4096 | Low Mandatory Level | 512 | 0200 | 1000000000 | | S-1-16-8192 | Medium Mandatory Level | 8192 | 2000 | 10000000000000 | | S-1-16-8448 | Medium Plus Mandatory Level | 8448 | 2100 | 10000100000000 | | S-1-16-12288 | High Mandatory Level | 12288 | 3000 | 11000000000000 | | S-1-16-16384 | System Mandatory Level | 16384 | 4000 | 100000000000000 | | S-1-16-20480 | Protected Process Mandatory Level | 20480 | 5000 | 101000000000000 | | S-1-16-28672 | Secure Process Mandatory Level | 28672 | 7000 | 111000000000000 |

Pero, como se dijo en otras respuestas, los valores entre dos elementos enumerados son válidos y si debe nombrarlos, debe optar por el nombre de valor más bajo (por ejemplo, 511 debe llamarse untrusted plus no Low Mandatory ).

Los procesos solo pueden interactuar con objetos del sistema con el mismo o menor nivel de integridad.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda