Este dolor de cabeza se repite cada tanto en mi vida, por suerte con el tiempo la cosa va mejorando en Windows pero siempre nos falta 10 para el peso 😑.
Supuestos para que funcione
- Auditoria activa sobre la carpeta (everyone) [SACL (System Access Control List)]
- Navega a las carpetas compartidas donde los archivos se están ocultando.
- Haz clic derecho -> Propiedades -> Pestaña Seguridad -> Opciones avanzadas -> Pestaña Auditoría.
- Haz clic en "Agregar".
- Selecciona la entidad de seguridad "Everyone" o un grupo de usuarios/cuentas de servicio relevantes.
- Asegúrate de que "Tipo" sea "Todos" (All).
- En "Permisos básicos", marca la casilla "Escribir atributos" (Write attributes) y "Escribir atributos extendidos" (Write extended attributes). Esto generará un Event ID 4663 cuando se modifique un atributo del archivo.
- Asegúrate de que la auditoría se aplique a "Esta carpeta, subcarpetas y archivos".
- Auditoria activa de objetos en la política de seguridad (Fail and Success)
- Por si no te acordas 😏, abrir la Directiva de Seguridad Local (
secpol.msc
) o la GPO aplicada - Ir a
Configuración de seguridad
->Directivas locales
->Directiva de auditoría
. - Habilitar "Auditar acceso a objetos" (Audit object access) para "Correcto" (Success) y "Erróneo" (Fail).
- Ir a
Configuración avanzada de directivas de auditoria
->Directivas de auditoría
->Acceso a objetos
:- Habilitar "Auditar sistema de archivos" (Audit File System) para "Correcto" y "Erróneo".
- Habilitar "Auditar manipulación del identificador" (Audit Handle Manipulation) para "Correcto" y "Erróneo".
Primera pregunta: Como determino por auditoria si un file se elimino de una carpeta?
Rapidamente, con el Event ID 4663 dentro del campo Access que contenga DELETED (ó %%1537)
Ejemplo:
Esto es mejor que utilizar los Event ID "4656 (open) + 4660 (delete)" ya que el 4663 no requiere correlación para obtener el nombre del archivo.
Secuencia completa de Acceso a un Objeto
A grandes rasgos tenemos
Entre los Event ID 4656 y 4658, pueden existir otros eventos más pero por lo general vamos a tener un 4663 de Access. En caso que el archivo no pueda ser abierto/accedido, el evento 4656 da Fail y se termina el proceso.
Entendiendo los campos
- Handle ID : es un numero semi-unico (unico entre reboots del sistema) que permite correlacionar al objeto desde que se abre (open) hasta que se cierra (close)
- Process ID : es el proceso que realizo la acción, para mas detalle hay que buscar el Event ID 4688 (correlacionado por el Process ID)
- Resource Attributes: se incorporo a partir de Windows Server 2012/ Windows 8, proporciona información adicional sobre las propiedades de recursos del objeto al que se está accediendo, son metadatos que se pueden asignar a archivos y carpetas en Windows para propósitos de clasificación y control de acceso dinámico (DAC). DAC permite a las organizaciones aplicar permisos basados en atributos de usuario y atributos de recursos, lo que proporciona una forma más flexible y granular de controlar el acceso a los datos.
- Access: son los permisos que fueron ejercidos, los mas comunes son
- DELETE: eliminación
- WriteData: modificación de datos
- WriteDAC: modificación de permisos
- Access Mask: es el equivalente en bits del campo Access (ver tabla mas abajo)
Tabla de Access
Código |
Nombre |
Descripción |
0x1 |
ReadData
/ ListDirectory |
ReadData: Para un objeto de archivo, el derecho a leer los
datos de archivo correspondientes. Para un objeto de directorio, el permiso a
leer los datos de directorio correspondientes. |
0x2 |
WriteData / AddFile |
WriteData: para un objeto de archivo,
el permiso a escribir datos en el archivo. Para un objeto de directorio, el permiso
a crear un archivo en el directorio (FILE_ADD_FILE). |
0x4 |
AppendData
/ AddSubdirectory / CreatePipeInstance |
AppendData: para un objeto de archivo, el derecho a anexar
datos al archivo. (En el caso de los archivos locales, las operaciones de
escritura no sobrescribirán los datos existentes si el flag es especificado
sin FILE_WRITE_DATA). Para un objeto de directorio, el permiso a crear un subdirectorio (FILE_ADD_SUBDIRECTORY). CreatePipeInstance: para un named pipe, el permiso a crear un pipe. |
0x8 |
ReadEA |
El permiso a leer atributos extendidos
de archivo. |
0x20 |
Execute
/ Traverse |
Ejecutar: para un archivo de código nativo, el permiso a
ejecutar el archivo. Este derecho de acceso otorgado a los scripts puede
hacer que el script sea ejecutable, dependiendo del intérprete de scripts. |
0x40 |
DeleteChild |
En el caso de un directorio,
el derecho a eliminar un directorio y todos los archivos que contiene,
incluidos los archivos de solo lectura. |
0x80 |
ReadAttributes |
El derecho a leer los atributos del archivo. |
0x100 |
WriteAttributes |
El derecho a escribir
atributos de archivo. |
0x10000 |
DELETE |
El derecho a eliminar el objeto. |
0x20000 |
READ_CONTROL |
El derecho a leer la
información en el descriptor de seguridad del objeto, sin incluir la
información en la lista de control de acceso al sistema (SACL). |
0x40000 |
WRITE_DAC |
El derecho a modificar la lista de control de acceso discrecional
(DACL) en el descriptor de seguridad del objeto. |
0x80000 |
WRITE_OWNER |
El permiso a cambiar el
propietario en el descriptor de seguridad del objeto |
0x100000 |
SYNCHRONIZE |
El derecho a utilizar el objeto para la sincronización. Esto permite
que un subproceso espere hasta que el objeto esté en el estado señalizado.
Algunos tipos de objetos no admiten este derecho de acceso. |
0x1000000 |
ACCESS_SYS_SEC |
El derecho de acceso ACCESS_SYS_SEC controla la capacidad de
obtener o establecer la SACL en el descriptor de seguridad de un objeto. |
Como cuernos se lee el Resource Attributes?
El formato
del campo Resource Attributes suele ser una cadena con el siguiente patrón (o
similar):
S:AI(RA;ID;;;;WD;("NombreAtributo",TI,0xValorHex,ValorEntero))
Descifremos esto 😐:
- S: Indica que es una cadena de seguridad.
- AI: Auditoría de "Information"
(información).
- RA: Atributo de recurso.
- ID: Indica que el atributo ha sido heredado.
- WD: "Well-known SID" (SID bien
conocido), relacionado con "Everyone" o un grupo
específico.
- ("NombreAtributo",TI,0xValorHex,ValorEntero): Esta es la parte más
importante y repetible, que define cada atributo de recurso individual.
- "NombreAtributo": El nombre amigable del
atributo de recurso. Por ejemplo, "ClasificacionDatos",
"Departamento", "ImpactoNegocio".
- TI: Tipo de atributo (por
ejemplo, "TI" puede significar "Texto").
- 0xValorHex: Un valor hexadecimal asociado
al atributo.
- ValorEntero: El valor real del atributo.
Este valor puede ser una cadena, un número, etc., dependiendo de cómo se
haya definido el atributo de recurso.
Otros Event-ID de borrado
Existen dos eventos mas, pocos útiles pero estan y prestan confusión
- 4656: Intención de borrar
- 4660: Eliminacion definitiva (real)
El 4660 solo ocurre si 4656 es exitoso
Pero quiero ver los archivos que se cambio el atributo de System y/o Hidden?
Aca la cosa cambia, ya que Windows no considera como algo de seguridad estos cambios de atributos de NTFS por lo que no se vera reflejado en el log (de seguridad) explicitamente el evento 😕.
Mientras que el 4663 puede mostrar que se ejerció el permiso WriteAttributes
(escribir atributos), no te dice que atributos específicos del archivo (solo lectura, oculto, sistema, etc.) fueron modificados ni a qué valor. Sólo indica que la capacidad de escribir atributos fue utilizada.
Para saber cuáles atributos específicos (solo lectura, oculto, etc) cambiaron y a qué estado, es mucho más efectivo utilizar Sysmon con su Event ID 26 ... si, como pasa de costumbre se requiere complementos adicionales para solventar las deficiencias 🙄
Sysmon (Event ID 26: File Attribute Change):
- Para una auditoría más granular, para mostrar los cambios de atributos de archivo (entre otras cosas), la herramienta Sysmon de Sysinternals es la recomendada.
- Sysmon tiene un Event ID 26: File Attribute Change que está específicamente diseñado para registrar estos cambios. Este evento suele proporcionar:
TargetFilename
: El archivo afectado.User
: El usuario que realizó el cambio.OldFileAttributes
: Los atributos del archivo antes del cambio.NewFileAttributes
: Los atributos del archivo después del cambio.
- Se requiere instalar y configurar Sysmon, se puede crear una regla para monitorear los cambios de atributos en las rutas relevantes (para evitar una inundación de eventos).
Referencias
- https://system32.eventsentry.com/security/event/4663
- https://system32.eventsentry.com/codes/field/File%20System%20Objects%20Access%20Rights
- https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=4663
- https://www.ultimatewindowssecurity.com/blog/default.aspx?p=5aea7883-80c4-40cb-b182-01240cc86070
- https://michaelfirsov.wordpress.com/windows-audit-part-5-problems-in-tracing-file-deletions/
0 comments:
Publicar un comentario