XSEC: cómo aprender el control de acceso de Windows en dos horas

¿Quiere aprender el subsistema de control de acceso de Windows en dos horas? Además, ¿conocer este tema como ninguno de tus profesores lo sabe? ¿Se pregunta cómo utilizar la función API de Windows con el nombre más largo: AccessCheckByTypeResultListAndAuditAlarmByHandle? ¿Y ve el código que crea estructuras de Windows indocumentadas? ¡Entonces estás aquí!





El artículo presenta una descripción de la biblioteca y un conjunto de pruebas que permitirán a cualquier usuario estudiar el subsistema de control de acceso de Windows de la forma más completa posible con un conocimiento inicial bastante reducido. Se consideran los problemas de trabajar con DACL, SACL, Conditional ACE, verificación de integridad obligatoria y muchos otros. Las pruebas permiten al usuario cambiar arbitrariamente los datos de entrada y modificarlos de forma independiente para un estudio más detallado de los temas necesarios para un usuario en particular. La biblioteca presentada le permitirá analizar y crear todas las estructuras internas del subsistema de seguridad de Windows, y también le permitirá crear "tokens de acceso" con datos iniciales arbitrarios.





Hace mucho tiempo, comencé a aprender sobre el subsistema de seguridad de Windows. Leo libros excelentes, pero cada libro debe estar respaldado en primer lugar por la práctica. Así comencé mis experimentos prácticos. En primer lugar, comencé con una técnica estándar: crear una determinada estructura de archivos con varios niveles (directorios) anidados. En las etapas iniciales del estudio, tal "sitio experimental" fue suficiente. Sin embargo, cuando pasé a aprender sobre DAC (Control de acceso dinámico), el "sitio" de prueba se volvió mucho más complicado: ya tenía que implementar varias máquinas virtuales, una de las cuales era Windows Server y la otra era un sistema operativo cliente normal. . Aquí ya era necesario estudiar el proceso de configuración de muchos subsistemas de Windows Server, lo que distrajo un tanto de la tarea original: el estudio del subsistema de seguridad.Al final, tenía una biblioteca bastante desarrollada escrita que me permitió obtener en una forma conveniente para mí todos los valores de varias estructuras relacionadas con el subsistema de seguridad de Windows, y para la mayoría de ellos, también crearlos a partir de valores previamente guardados. . Pero un día se me ocurrió una idea que cambió radicalmente (y simplificó enormemente) todo mi enfoque para estudiar este tema.





, , , , , . Microsoft .





, Windows – : «» (access token) « » (security descriptor a.k.a. SD). , , – . /, Windows , . : 1) ; 2) ; 3) . , - – . , , .





- . , «Run As Administrator». Visual Studio. , - : SeCreateTokenPrivilege (Create a token object), SeTcbPrivilege (Act as part of the operating system), SeImpersonatePrivilege (Impersonate a client after authentication).





C++. « » , . . . , , « , , copyright». – - , Windows Access Control, , , .





, :





1. Windows ?





. . , -. – . ( ) – . ​





2. Windows API - AccessCheckByTypeResultListAndAuditAlarmByHandle?





, AccessCheckByTypeResultListAndAuditAlarmByHandle. , . AccessCheckByTypeResultListAndAuditAlarmByHandle . , , , .





3. , Windows?





Aquí, en este enlace , puede encontrar una función que crea una "representación binaria" para el tipo de datos CLAIM_SECURITY_ATTRIBUTE_V1. La estructura en sí está documentada en [MS-DTYP], pero no hay una descripción de cómo se representa en datos binarios. Esta estructura es necesaria para establecer los "atributos de recursos" (el concepto se refiere a DAC, Control de acceso dinámico) para el descriptor de seguridad (por ejemplo, para configurar los recursos de un archivo).








All Articles