Guía de integración de almacenes de certificados de Windows

Resumen

El sensor CBOM Secure Discover_WinCerts realiza un descubrimiento de solo lectura de material criptográfico en los almacenes de certificados de la máquina local de Windows: certificados, claves públicas, cadenas y metadatos (sujeto, emisor, validez, algoritmo de clave y longitud). Lee:

  • MI – Certificados personales (incluidos aquellos con claves privadas asociadas)
  • ROOT – Autoridades de Certificación Raíz de Confianza
  • CA – Autoridades de Certificación Intermedias
  • CONFIANZA – Tienda Enterprise Trust
  • TrustedPeople: certificados para personas de confianza.
  • TrustedPublisher: certificados para editores de software de confianza

Requisitos previos

  1. Acceso administrativo al equipo o dominio Windows de destino.
  2. Windows Server 2016 o superior, o Windows 10/11.
  3. Usuarios y equipos de dominio (cuentas de dominio) o usuarios y grupos locales (cuentas locales).
  4. El paquete de sensores CBOM se descargó y extrajo en el dispositivo de destino.
  5. PowerShell 5.1+, certlm.msc y certutil.exe disponibles.
  6. Conectividad de red con la plataforma CBOM, además de su URL y un token API válido.

Guía paso por paso

Paso 1: Crear una cuenta de servicio dedicada

Cree una cuenta con privilegios mínimos (nunca de administrador de dominio). Dominio: ADUC > Nuevo > Usuario svc-cbom-wincerts. Local: Administración de equipos > Usuarios y grupos locales > Nuevo usuario svc-cbom-wincerts. Establezca una contraseña segura con la opción "La contraseña nunca caduca" y "El usuario no puede cambiar la contraseña".

Paso 2: Otorgar acceso de lectura a los almacenes de certificados.

Para las claves privadas de MY-store, abra certlm.msc y, para cada certificado con una clave privada: Todas las tareas > Administrar claves privadas > Agregar svc-cbom-wincerts > otorgar permisos de solo lectura. Confirme que los demás almacenes sean legibles:

$stores = @("ROOT","CA","TRUST","TrustedPeople","TrustedPublisher") foreach ($s in $stores) { $st = New-Object System.Security.Cryptography.X509Certificates.X509Store($s,'LocalMachine') try { $st.Open('ReadOnly'); Write-Host "$s: Accesible"; $st.Close() } catch { Write-Host "$s: NO accesible - $_" } }

Otorgar permisos de inicio de sesión como servicio a través de secpol.msc > Asignación de derechos de usuario > Iniciar sesión como servicio > agregar la cuenta.

Paso 3: Instalar y restringir los archivos del sensor

mkdir "C:\Program Files\CBOM\Logs" icacls "C:\Program Files\CBOM\Logs" /grant "svc-cbom-wincerts:(OI)(CI)M" icacls "C:\Program Files\CBOM\Sensors\WinCerts" /inheritance:r icacls "C:\Program Files\CBOM\Sensors\WinCerts" /grant "Administradores:(OI)(CI)F" icacls "C:\Program Files\CBOM\Sensors\WinCerts" /grant "svc-cbom-wincerts:(OI)(CI)RX"

Paso 4: Configurar el sensor de seguridad CBOM

sensor: nombre: Discover_WinCerts descripción: "Descubrimiento del almacén de certificados de la máquina local de Windows" plataforma: url: "https://cbom.example.com" token_api: "${CBOM_API_TOKEN}" entorno: "producción" objetivo: nombre_host: "WIN-APPSERVER01.corp.example.com" os: "windows" intervalo_escaneo_horas: 24 almacenes_certificados: ámbito: "MáquinaLocal" almacenes: - { nombre: MY, habilitado: verdadero, incluir_metadatos_clave_privada: verdadero } - { nombre: ROOT, habilitado: verdadero } - { nombre: CA, habilitado: verdadero } - { nombre: TRUST, habilitado: verdadero } - { nombre: TrustedPeople, habilitado: verdadero } - { nombre: TrustedPublisher, habilitado: verdadero } descubrimiento: recopilar_sujeto: verdadero; recopilar_emisor: verdadero; recopilar_fechas_de_validez: verdadero recopilar_algoritmo_clave: verdadero; collect_key_length: true; collect_chain: true service_account: username: "CORP\\svc-cbom-wincerts"

Nota: El token api_token otorga permisos de ingesta CBOM; obténgalo de un administrador de secretos y restrinja el archivo de configuración a los administradores y la cuenta de servicio.

Paso 5: Implementar como un servicio de Windows (o tarea programada).

sc crear "CBOM-WinCerts" ^ binPath= "\"C:\Program Files\CBOM\Sensors\WinCerts\cbom-sensor-runner.exe\" --config \"C:\Program Files\CBOM\Sensors\WinCerts\sensor-config.yaml\"" ^ DisplayName= "CBOM WinCerts Sensor" start= auto ^ obj= "CORP\svc-cbom-wincerts" contraseña= " " sc failure "CBOM-WinCerts" reset= 86400 actions= restart/60000/restart/120000/restart/300000 sc start "CBOM-WinCerts" && sc query "CBOM-WinCerts"

Como alternativa, registre una tarea programada diaria (Register-ScheduledTask) que se ejecute como la cuenta de servicio en RunLevel Highest.

Paso 6: Validar

certutil -store MY && certutil -store ROOT && certutil -store CA type "C:\Program Files\CBOM\Logs\wincerts-sensor.log" # buscar Scan complete + HTTP 200

En la plataforma CBOM, vaya a Activos > Certificados y filtre por Origen Discover_WinCerts y el host de destino para confirmar que los metadatos se hayan rellenado correctamente.

Errores comunes

Acceso denegado al abrir la tienda MY (el conjunto de claves no existe).

Causa: La cuenta carece de permisos de lectura en una ACL de clave privada, o no se ha concedido el acceso como servicio.

Solución: Añada la cuenta con permisos de lectura a través de la gestión de claves privadas en cada certificado MY, confirme la opción "Iniciar sesión como servicio" y reinicie el servicio.

Envío de informe – HTTP 401 No autorizado

Causa: El token de API es incorrecto, ha caducado o ha sido revocado.

Solución: Genere/confirme el token en Configuración > Tokens de API, actualice la configuración y reinicie el servicio.

El servicio no se inicia: error 1069. Error de inicio de sesión.

Causa: La contraseña de la cuenta de servicio es incorrecta, ha sido cambiada o ha caducado desde el registro.

Solución: Verifique la contraseña, actualícela en la pestaña Iniciar sesión del servicio (o escriba sc config … password=) e inicie el servicio.

Recomendaciones de seguridad

  • Principio de mínimo privilegio: conceder únicamente permisos de lectura en el almacén y en las ACL de clave privada; nunca añadir la cuenta a los administradores ni a los administradores de dominio.
  • Proteja el archivo sensor-config.yaml (que contiene el token de la API): restrinja el acceso a los administradores y a la cuenta de servicio, y que nunca sea legible para todos los usuarios.
  • Rote el token de la API cada 90 días y reinicie el servicio después de cada rotación.
  • Auditar los inicios de sesión de la cuenta de servicio (ID de evento 4624/4625) para la cuenta.
  • En la sección "Administrar claves privadas", asigne el permiso de solo lectura (nunca el de control total) para que la cuenta no pueda exportar ni eliminar claves.

Conclusión

Con una cuenta de servicio de privilegios mínimos, un almacén con ámbito definido y listas de control de acceso (ACL) de clave privada, y la implementación como un servicio administrado o una tarea programada, Discover_WinCerts transfiere los metadatos de los certificados (algoritmos, longitud de las claves, validez, sujeto/emisor y cadenas) de cada almacén de máquinas locales de Windows a CBOM Secure para la gestión centralizada de activos criptográficos y la elaboración de informes de cumplimiento.