Cómo ver SDDL y no romper los ojos en punto y coma



Mi camino hacia la seguridad de la información comenzó con un descubrimiento sorprendente: "encriptado de forma segura". Esta declaración ahora parece simple y obvia, y en el primer año la conciencia de este hecho produjo un efecto comparable a la bomba atómica mental. La seguridad de la información fue atacada al expandir los límites del área temática: resultó que la criptografía es solo una línea de defensa, y al final también hay aspectos legales, organizativos y simplemente físicos. Uno de los aspectos teóricos era "Todos los problemas de seguridad de la información se describen mediante el acceso de los sujetos a los objetos". Memorizó, dibujó las credenciales y los modelos de acceso discrecional, contó, aprobó y olvidó.

Me especializo en análisis de seguridad de aplicaciones de Windows. Muy a menudo, el estudio de derechos de acceso exactamente diferentes toma una parte significativa del estudio. Para automatizar el proceso de búsqueda de derechos de acceso extraños o incorrectos, tuve que entender el SDDL (lenguaje de definición de descriptor de seguridad). ¿Quién está interesado en aprender a leer los derechos en forma de SDDL (por ejemplo, algo como O: SYG: SYD: (A ;; CCLCSWLOCRRC ;;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC ;;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) ) y familiarizarse con mi utilidad para trabajar con descriptores en este formato, bienvenido a cat.

Formato SDDL


SDDL es una cadena con descripciones de derechos de acceso en forma de texto. La mayoría de las veces consta de 3 partes: propietario, grupo y derechos de acceso DACL. A veces se agrega la parte SACL: la parte de auditoría (si las acciones con el objeto se ajustan a las reglas SACL, se creará un evento del sistema que sea fácil de rastrear por varios sistemas). El descriptor se ve así:

O: <propietario> G: <grupo> D: <reglas de acceso DACL> S: <reglas de auditoría SACL>



Por lo tanto, el ejemplo anterior se puede descomponer de la siguiente manera:
  • O: SY
  • G: SY
  • D: (A ;; CCLCSWLOCRRC ;;; IU) (A ;; CCLCSWLOCRRC ;;; SU) (A ;; CCLCSWRPWPDTLOCRRC ;;; SY) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA)

El propietario y el grupo pueden indicarse como el SID del usuario o grupo del sistema operativo, o como abreviaturas especiales. Por ejemplo, en este caso, el propietario y el grupo SY es la cuenta del sistema local (NT AUTHORITY \ SYSTEM). La lista de abreviaturas (por desgracia, no exhaustiva) se puede encontrar aquí .

Las reglas de acceso consisten en la enumeración de banderas DACL y cadenas ACE (entradas de control de acceso). Aquí se presenta un análisis detallado de ACE, consideraremos el más importante. Cada línea ACE está encerrada entre paréntesis dentro de los cuales los datos están separados por un punto y coma.
De mayor interés son el primer, tercer y último grupo. Este es el tipo de acceso (permitido "A", prohibido "D"), una lista de acciones y el nombre del sujeto de acceso. La primera regla DACL del ejemplo anterior: (A ;; CCLCSWLOCRRC ;;; IU), lo consideraremos en detalle.



  • "A": la regla permite acciones al sujeto;
  • "CC", "LC", "SW", "LO", "CR", "RC" - una lista de acciones permitidas;
  • "IU": esta abreviatura significa el grupo de usuarios interactivos conectados.

Queda por entender exactamente lo que está permitido. ¿Qué significan estos misteriosos "CC", "LC", "SW", "LO", "CR", "RC"?

Aquí estamos esperando otra trampa: no siempre es posible indicar con precisión la acción por reducción. Son, por así decirlo, específicos del contexto. Por ejemplo, si estamos hablando de los derechos para trabajar con servicios, entonces WP significa "detener el servicio", si se trata de archivos, luego "ejecución", y si se trata de carpetas, luego "atravesar" (acceso a los archivos en una carpeta por nombre, si no es posible lista de contenidos). Algunas descripciones están aquí , algunas aquí , con el mundo en un hilo.

Oye, te perdiste mucho sobre las banderas DACL, las banderas ACE, la herencia
Sí, es cierto, todo esto es muy importante e interesante, pero no es tan común. Me concentro en la masa. En el caso de manifestaciones únicas de banderas inusuales, será más fácil de entender en modo manual.

Automatización


Las utilidades de Sysinternals realmente me ayudan, a saber, Process Monitor y Access Check (también conocido como procmon y accesschk). El primero le permite ver los accesos a archivos y registros en tiempo real, y el segundo le permite recopilar información del sistema operativo en descriptores de seguridad.

Por cierto, en el sistema operativo en sí, la ventana con los derechos se ve así si alguien no ha visto:



Desafortunadamente, la salida de accesschk no se puede filtrar al limitar la solicitud de derechos a acciones específicas. Process Monitor muestra solo las llamadas reales en un momento particular y obtiene una solicitud demasiado precisa que no se ve directamente afectada. Además, me gustaría tener una nota sobre qué tipo de grupo de usuarios es NO o NS , y qué tipo de acciones están ocultas detrás de CC y RC.

Así nació una sencilla utilidad para ver y filtrar registros SDDL.

Como usar


Trabajar con la utilidad es simple, solo tres pasos:

  1. Obtenga registros SDDL.
  2. Definir filtros de reglas.
  3. Ver informe



Lea más sobre cada paso.

Obteniendo SDDL. Para obtener registros SDDL, puede usar las funciones integradas en la utilidad (botones 1, 2, 3 o 4) o descargar la lista que recibió anteriormente (botón 5). Tenga en cuenta que la solicitud de derechos de acceso se realiza en nombre del usuario que lanzó el SDDL Viewer, por lo que en algunas situaciones vale la pena ejecutar el programa no solo como usuario ordinario, sino también como administrador. Bueno, en general, el campo en sí con líneas SDDL es editable: al menos puede reescribirlo manualmente.

El filtrado se realiza de acuerdo con dos parámetros: grupos de usuarios y derechos de acceso. La lista de grupos y usuarios se basa en todos los usuarios mencionados en el SDDL. Preste atención a la casilla de verificación Traducir SID (6): si está instalado, el SID de los usuarios y grupos se traducirá a nombres relativos a la computadora actual, si es posible. La lista de derechos está organizada de forma un poco más inteligente: debe seleccionar la categoría de derechos (si el SDDL se llena con la utilidad en sí, entonces la categoría necesaria se selecciona automáticamente) Además, los derechos que están presentes en el SDDL se resaltan más claramente en la lista de derechos.

El informe es simplemente el resultado de descifrar SDDL y aplicar filtros. Puede encontrar información más detallada sobre cada línea si la selecciona en la lista (sí, fue con esta función que obtuve una mordaza, lo que dio lugar a una pequeña investigación sobre los componentes internos de .NET ).

Resumen


El código fuente está disponible en github . Los archivos binarios también están en la sección Release .

Mis planes de utilidad:

  1. Agregue una búsqueda a los campos de entrada de SDDL; aún así, el filtrado no es suficiente.
  2. Agregue parámetros de inicio que permitirían generar informes sin una parte visual.
  3. ¿Quizás debería agregar relleno SDDL de procesos, carpetas compartidas e impresoras?

Estaré encantado de escuchar sugerencias en los comentarios.

Source: https://habr.com/ru/post/442662/


All Articles