¡CloudWatcher Ahora es de Código Abierto!
Protege su instancia de Azure siguiendo las mejores prácticas, pero ¿alguna vez se queda despierto por la noche preguntándose si alguien cambió sus recursos de Azure y agregó una puerta trasera? ¡Lo hicimos! Siguiendo la mentalidad de Microsoft de asumir ataques, no podíamos sentirnos cómodos con las soluciones de monitoreo actuales para Azure. ¡Es por eso que creamos CloudWatcher! CloudWatcher, como su nombre lo indica, es una solución que vigila sus recursos en la nube en busca de cambios y le avisa si hay algún cambio.
Cómo Funciona CloudWatcher
CloudWatcher es un PowerShell diseñado para ejecutarse utilizando la cuenta RunAs en una cuenta de Azure Automation. Aprovecha los módulos de Azure PowerShell para escanear sus recursos y compararlos con una línea de base. Si el estado actual de los recursos no coincide con la línea base, la ejecución fallará.
CloudWatcher tiene dos modos, “configuración” y “monitoreo”. El modo de configuración examinará las suscripciones a las que tiene acceso la entidad de servicio y guardará una línea base en un almacenamiento de blobs. El modo de supervisión descargará la línea base del almacenamiento de blobs y escaneará la suscripción para encontrar cualquier cambio en el RBAC o los recursos de la suscripción.
Cobertura Defcon
Blue Team Village
Cloud Village
¿Por Qué Necesitamos CloudWatcher?
Después de muchos años de proteger los recursos de Azure, descubrimos que los piratas informáticos tienen formas furtivas de ocultar puertas traseras en las implementaciones de Azure. Por eso, hemos creado una herramienta para ayudar a detectar algunos de los más comunes y la hemos hecho de código abierto para que otras personas puedan agregar más detecciones.
Vectores de Ataque Comunes
- - Agregar un miembro adicional a un grupo: Esta es una excelente técnica para agregar una identidad a un recurso, ya que la mayoría de las personas no verifican periódicamente la membresía del grupo, por lo que agregar una identidad a un grupo de seguridad de ingeniería puede brindarle acceso no detectado a muchos recursos.
- - Agregar un Administrador Clásico a la suscripción de Azure: Muchas personas no están familiarizadas con los administradores clásicos y, al moverlos Azure a una pestaña oculta dentro del IAM de las suscripciones, es fácil obtener acceso de administrador sin ser detectado.
- - Agregar una Entidad de Servicio como colaborador de la suscripción: Como probador de penetración, este fue uno de mis favoritos: creas una entidad de servicio llamada implementador, le das acceso de colaborador y nadie la tocará. ¡NADIE QUIERE SER LA PERSONA QUE ROMPA LOS DESPLIEGUES!
- - Agregar más permisos a la política de acceso de AKV: Esto puede romper la seguridad que se obtiene mediante la separación de funciones; si tiene una aplicación que solo puede guardar ciertas cosas en un secreto y se ve comprometida y se le otorga más acceso, puede causar un evento de seguridad importante.
- - Agregar direcciones IP a las reglas del firewall: Si bien Azure Security Center le avisará si sus puertos de administración están abiertos a Internet, un atacante astuto puede agregar solo un puñado de direcciones IP, evitando la detección y perdiéndose en los muchos rangos de IP que tienen la mayoría de las empresas.
¿Qué Escanea CloudWatcher?

-
Cambios de RBAC: Si se agrega o elimina una identidad en el RBAC de la suscripción.
-
Cambios en los Administradores Clásicos: Si se agrega o elimina un administrador clásico.
-
Cambios en los Proveedores de Recursos de Azure: Si se agrega o elimina un proveedor de recursos de Azure de la suscripción.
-
Creación/Eliminación de Recursos: Si se crean o eliminan recursos.
-
Cambio de Membresía de Grupo: Al escanear la suscripción, CloudWatcher mantendrá una lista de los grupos que tienen acceso a la suscripción y escaneará esos grupos en busca de cambios en la membresía (no escaneará grupos anidados).
-
Cambios en el Firewall SQL: Si se detecta un cambio en el firewall SQL (dirección IP agregada o eliminada).
-
Cambios en el Administrador de AAD de SQL Server: Esto verifica el estado del administrador de AAD de SQL Server, si el servidor tiene un administrador, se asegura de que el administrador no haya cambiado y también verifica si el requisito de identidades de AAD está marcado o no.
-
Cambios en la Política de Acceso de AKV: Comprueba si los derechos de acceso de una política de acceso han cambiado (los permisos agregados, por ejemplo, una identidad existente obtiene el permiso de “eliminar”). También detecta altas o bajas de políticas de acceso.
-
Cambios en el Firewall de AKV: Si se detecta un cambio en el firewall de AKV (dirección IP agregada o eliminada).
Cómo Configuramos CloudWatcher
En Keytos queríamos garantizar la seguridad de nuestra implementación de CloudWatcher. Para ello utilizamos 3 suscripciones diferentes, y todas apuntan entre sí con CloudWatchers.
Para simplificarlo, solo mostraré uno de los CloudWatchers en el diagrama.

La idea es que tengas la suscripción que quieres monitorear (Suscripción A). Luego, en una suscripción diferente (Suscripción B) que idealmente no comparte ninguna de las mismas identidades de administrador con la suscripción que desea monitorear, crea la cuenta de automatización de CloudWatcher. Luego en otra Suscripción (Suscripción C) (en Keytos lo hacemos en otro Tenant) tienes una cuenta de almacenamiento con la línea base. El token otorgado a CloudWatcher en la Suscripción B solo tiene acceso de lectura al blob de referencia, lo que significa que un compromiso de esa cuenta no permite realizar cambios en la línea de base.
Instrucciones de Configuración
El README del repositorio tiene instrucciones detalladas sobre cómo configurar CloudWatcher en su instancia de Azure.