Communitygithub.com

construcción-siem-en-la-nube-con-sentinel

Implementa Microsoft Sentinel como un SIEM/SOAR nativo de la nube configurando conectores de datos multi-cloud (AWS, Azure, GCP), escribiendo consultas de detección y caza (hunting) en KQL y creando playbooks de respuesta automatizada con Logic Apps. Úsalo al establecer un SOC centralizado para entornos multi-cloud, migrar desde un SIEM heredado o realizar caza de amenazas a escala de petabytes; no uses para entornos solo AWS donde Security Hub/GuardDuty sean suficientes ni para necesidades de detección en endpoints (EDR).

¿Qué es construcción-siem-en-la-nube-con-sentinel?

Esta skill proporciona una guía completa para implementar Microsoft Sentinel como un SIEM/SOAR nativo de la nube adecuado para entornos multi-cloud (AWS, Azure, GCP). Cubre desde el aprovisionamiento del espacio de trabajo y la configuración de conectores de datos hasta la escritura de reglas de detección avanzadas en KQL, la construcción de playbooks de automatización con Azure Logic Apps y la integración con fuentes de inteligencia de amenazas. La habilidad es especialmente útil para equipos de SOC que necesitan centralizar la supervisión de seguridad a través de múltiples nubes, migrar desde plataformas SIEM heredadas como Splunk o QRadar, o realizar caza de amenazas a escala de petabytes. Incluye ejemplos prácticos de consultas KQL, fragmentos de código para automatizar la implementación y conceptos clave como reglas analíticas, playbooks SOAR y el lago de datos de Sentinel. Se recomienda su uso en entornos multi-cloud; no es adecuada para implementaciones solo en AWS (donde Security Hub y GuardDuty son suficientes) ni para detección de endpoints que requieran capacidades EDR.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/building-cloud-siem-with-sentinel

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Construcción de SIEM en la Nube con Sentinel

Cuándo Usarlo

  • Al establecer un centro de operaciones de seguridad centralizado para entornos multi-cloud
  • Al migrar desde plataformas SIEM heredadas (Splunk, QRadar) a una arquitectura nativa de la nube
  • Al construir flujos de trabajo automatizados de respuesta a incidentes para amenazas específicas de la nube
  • Al realizar caza de amenazas a gran escala a través de petabytes de telemetría de seguridad
  • Al integrar fuentes de inteligencia de amenazas con el análisis de registros de seguridad en la nube

No usar para entornos solo AWS donde Security Hub y GuardDuty sean suficientes, para detección en endpoints que requieran capacidades EDR (usar Defender for Endpoint), o para monitoreo de postura de cumplimiento (ver construcción-de-gestión-de-postura-de-seguridad-en-la-nube).

Requisitos Previos

  • Suscripción de Azure con Microsoft Sentinel habilitado en un espacio de trabajo de Log Analytics
  • Permisos de conector de datos para las fuentes de registro objetivo (AWS CloudTrail, Azure Activity, GCP)
  • Logic Apps o Azure Functions para los playbooks de respuesta automatizada
  • Competencia en KQL (Kusto Query Language) para escribir reglas de detección y consultas de caza

Flujo de Trabajo

Paso 1: Aprovisionar el Espacio de Trabajo de Sentinel y los Conectores de Datos

Cree un espacio de trabajo de Log Analytics optimizado para datos de seguridad y habilite los conectores de datos para la ingesta multi-cloud.

# Crear espacio de trabajo de Log Analytics
az monitor log-analytics workspace create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace \
  --location eastus \
  --retention-time 365 \
  --sku PerGB2018

# Habilitar Microsoft Sentinel en el espacio de trabajo
az sentinel onboarding-state create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace

# Habilitar conector de AWS CloudTrail
az sentinel data-connector create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace \
  --data-connector-id aws-cloudtrail \
  --kind AmazonWebServicesCloudTrail \
  --aws-cloud-trail-data-connector '{
    "awsRoleArn": "arn:aws:iam::123456789012:role/SentinelCloudTrailRole",
    "dataTypes": {"logs": {"state": "Enabled"}}
  }'

# Habilitar registros de inicio de sesión y auditoría de Azure AD
az sentinel data-connector create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace \
  --data-connector-id azure-ad \
  --kind AzureActiveDirectory \
  --azure-active-directory '{
    "dataTypes": {
      "alerts": {"state": "Enabled"},
      "signinLogs": {"state": "Enabled"},
      "auditLogs": {"state": "Enabled"}
    }
  }'

Paso 2: Escribir Reglas de Detección en KQL

Cree reglas analíticas utilizando Kusto Query Language para detectar amenazas específicas de la nube. Asigne cada regla a técnicas de MITRE ATT&CK.

// Detectar viajes imposibles: inicios de sesión desde ubicaciones geográficamente distantes
let timeframe = 1h;
let distance_threshold = 500; // km
SigninLogs
| where TimeGenerated > ago(timeframe)
| where ResultType == 0 // Solo inicios de sesión exitosos
| project TimeGenerated, UserPrincipalName, IPAddress, Location,
          Latitude = toreal(LocationDetails.geoCoordinates.latitude),
          Longitude = toreal(LocationDetails.geoCoordinates.longitude)
| sort by UserPrincipalName asc, TimeGenerated asc
| extend PrevLatitude = prev(Latitude, 1), PrevLongitude = prev(Longitude, 1),
         PrevTime = prev(TimeGenerated, 1), PrevUser = prev(UserPrincipalName, 1)
| where UserPrincipalName == PrevUser
| extend TimeDiff = datetime_diff('minute', TimeGenerated, PrevTime)
| where TimeDiff < 60
| extend Distance = geo_distance_2points(Longitude, Latitude, PrevLongitude, PrevLatitude) / 1000
| where Distance > distance_threshold
| project TimeGenerated, UserPrincipalName, IPAddress, Location, Distance, TimeDiff
// Detectar abuso de credenciales de IAM de AWS desde CloudTrail
AWSCloudTrail
| where TimeGenerated > ago(24h)
| where EventName in ("ConsoleLogin", "AssumeRole", "GetSessionToken")
| where ErrorCode == ""
| summarize LoginCount = count(), DistinctIPs = dcount(SourceIpAddress),
            IPList = make_set(SourceIpAddress, 10)
            by UserIdentityArn, bin(TimeGenerated, 1h)
| where DistinctIPs > 3
| project TimeGenerated, UserIdentityArn, LoginCount, DistinctIPs, IPList
// Detectar eliminación masiva de objetos S3 (posible ransomware)
AWSCloudTrail
| where TimeGenerated > ago(1h)
| where EventName == "DeleteObject" or EventName == "DeleteObjects"
| summarize DeleteCount = count(), BucketsAffected = dcount(RequestParameters_bucketName)
            by UserIdentityArn, bin(TimeGenerated, 10m)
| where DeleteCount > 100
| project TimeGenerated, UserIdentityArn, DeleteCount, BucketsAffected

Paso 3: Construir Playbooks SOAR con Logic Apps

Cree playbooks de respuesta automatizada que se ejecuten cuando las reglas analíticas activen incidentes. Las acciones comunes incluyen bloquear usuarios, aislar recursos y enriquecer alertas con inteligencia de amenazas.

{
  "definition": {
    "triggers": {
      "Microsoft_Sentinel_incident": {
        "type": "ApiConnectionWebhook",
        "inputs": {
          "body": {"incidentArmId": "subscriptions/@{triggerBody()?['workspaceInfo']?['SubscriptionId']}/resourceGroups/@{triggerBody()?['workspaceInfo']?['ResourceGroupName']}/providers/Microsoft.OperationalInsights/workspaces/@{triggerBody()?['workspaceInfo']?['WorkspaceName']}/providers/Microsoft.SecurityInsights/Incidents/@{triggerBody()?['object']?['properties']?['incidentNumber']]},
          "host": {"connection": {"name": "@parameters('$connections')['microsoftsentinel']['connectionId']"}}
        }
      }
    },
    "actions": {
      "Get_incident_entities": {
        "type": "ApiConnection",
        "inputs": {"method": "post", "path": "/Incidents/entities"}
      },
      "For_each_account_entity": {
        "type": "Foreach",
        "foreach": "@body('Get_incident_entities')?['Accounts']",
        "actions": {
          "Disable_Azure_AD_user": {
            "type": "ApiConnection",
            "inputs": {
              "method": "PATCH",
              "path": "/v1.0/users/@{items('For_each_account_entity')?['AadUserId']}",
              "body": {"accountEnabled": false}
            }
          },
          "Add_comment_to_incident": {
            "type": "ApiConnection",
            "inputs": {
              "body": {"message": "Usuario @{items('For_each_account_entity')?['Name']} deshabilitado por playbook automatizado"}
            }
          }
        }
      }
    }
  }
}

Paso 4: Configurar el Lago de Datos de Sentinel para Caza a Largo Plazo

Habilite el lago de datos de Sentinel para la retención de registros a escala de petabytes y la caza avanzada de amenazas utilizando endpoints KQL y SQL.

// Consulta de caza de amenazas: detectar movimiento lateral entre cuentas de AWS
let suspicious_roles = AWSCloudTrail
| where TimeGenerated > ago(7d)
| where EventName == "AssumeRole"
| extend AssumedRoleArn = tostring(parse_json(RequestParameters).roleArn)
| where AssumedRoleArn contains "cross-account" or AssumedRoleArn contains "admin"
| summarize AssumeCount = count(), UniqueSourceAccounts = dcount(RecipientAccountId)
            by UserIdentityArn, AssumedRoleArn
| where AssumeCount > 10 and UniqueSourceAccounts > 2;
suspicious_roles
| join kind=inner (
    AWSCloudTrail
    | where TimeGenerated > ago(7d)
    | where EventName in ("RunInstances", "CreateFunction", "PutBucketPolicy")
) on UserIdentityArn
| project TimeGenerated, UserIdentityArn, AssumedRoleArn, EventName, SourceIpAddress

Paso 5: Integrar Inteligencia de Amenazas

Conecte proveedores de inteligencia de amenazas y cree reglas de coincidencia basadas en indicadores para detectar comunicación con infraestructura maliciosa conocida.

# Habilitar conector de Inteligencia de Amenazas de Microsoft
az sentinel data-connector create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace \
  --data-connector-id microsoft-ti \
  --kind MicrosoftThreatIntelligence \
  --microsoft-threat-intelligence '{
    "dataTypes": {"microsoftEmergingThreatFeed": {"lookbackPeriod": "2025-01-01T00:00:00Z", "state": "Enabled"}}
  }'
// Hacer coincidir indicadores de red con registros de flujo en la nube
let TI_IPs = ThreatIntelligenceIndicator
| where TimeGenerated > ago(30d)
| where isnotempty(NetworkIP)
| distinct NetworkIP;
AzureNetworkAnalytics_CL
| where TimeGenerated > ago(24h)
| where DestIP_s in (TI_IPs)
| project TimeGenerated, SrcIP_s, DestIP_s, DestPort_d, FlowType_s

Conceptos Clave

TérminoDefinición
KQLKusto Query Language, el lenguaje de consulta principal para Microsoft Sentinel utilizado para buscar, analizar y visualizar datos de seguridad
Regla AnalíticaLógica de detección en Sentinel que evalúa datos de registro según un cronograma y crea incidentes cuando se cumplen las condiciones
Playbook SOARFlujo de trabajo automatizado activado por incidentes que realiza acciones de respuesta como bloquear cuentas, enriquecer alertas o notificar a equipos
Conector de DatosMódulo de integración que ingiere registros de seguridad de servicios en la nube, proveedores de identidad y herramientas de terceros en Sentinel
Lago de Datos de SentinelCapa de almacenamiento a escala de petabytes que proporciona retención de registros a largo plazo con interfaces de consulta KQL y SQL para caza avanzada
WorkbookPanel interactivo en Sentinel que muestra visualizaciones de datos de seguridad, tendencias y métricas operativas
Lista de VigilanciaTablas de datos de referencia en Sentinel utilizadas para enriquecer alertas con contexto, como listas de usuarios VIP o rangos de IP aprobados
Detección FusionMotor de correlación impulsado por aprendizaje automático que detecta automáticamente ataques de múltiples etapas a través de fuentes de datos

Herramientas y Sistemas

  • Microsoft Sentinel: Plataforma SIEM/SOAR nativa de la nube construida sobre Azure Log Analytics con detección de amenazas impulsada por IA
  • Azure Logic Apps: Plataforma de automatización de bajo código para construir playbooks SOAR activados por incidentes de Sentinel
  • Inteligencia de Amenazas de Microsoft: Fuentes de amenazas integradas que proporcionan indicadores de IP, dominio y URL para comparación con registros de seguridad
  • Azure Data Explorer: Motor de análisis de alto rendimiento que subyace a las consultas KQL de Sentinel para la exploración de datos a gran escala
  • MITRE ATT&CK Navigator: Marco para mapear reglas de detección de Sentinel a tácticas y técnicas de adversarios

Escenarios Comunes

Escenario: Detección de Campaña de Robo de Credenciales Multi-Cloud

Contexto: Un atacante compromete una cuenta de Azure AD mediante phishing, luego usa la cuenta para acceder a recursos de AWS a través de identidad federada. Sentinel necesita correlacionar la anomalía de inicio de sesión de Azure con la actividad inusual de la API de AWS.

Enfoque:

  1. Cree una regla analítica que detecte viajes imposibles o riesgo de inicio de sesión anómalo en Azure AD
  2. Escriba una consulta KQL que correlacione la identidad comprometida de Azure AD con eventos AssumeRoleWithSAML de AWS CloudTrail
  3. Cree una regla de detección Fusion que vincule eventos de riesgo de Azure AD con actividad posterior de escalada de privilegios en AWS
  4. Implemente un playbook SOAR que deshabilite automáticamente la cuenta de Azure AD y revoque las sesiones STS de AWS
  5. Cree un workbook que muestre la línea de tiempo desde el compromiso inicial hasta el movimiento lateral hacia AWS
  6. Ejecute una consulta de caza en el lago de datos para verificar si hay patrones similares que afecten a otras cuentas

Errores comunes: No correlacionar la identidad entre proveedores de nube pierde toda la cadena de ataque. Configurar la frecuencia de la regla analítica demasiado baja (por ejemplo, 24 horas) permite a los atacantes horas de acceso no detectado.

Formato de Salida

Informe de Operaciones del SOC de Microsoft Sentinel
======================================================
Espacio de Trabajo: sentinel-workspace
Fuentes de Datos: 14 conectores activos
Período del Informe: 2025-02-01 a 2025-02-23

INGESTIÓN DE DATOS:
  Registros de inicio de sesión de Azure AD:     2.3 TB (23 días)
  AWS CloudTrail:                                1.8 TB (23 días)
  Azure Activity:                                0.9 TB (23 días)
  Alertas de Defender for Cloud:                 45 GB (23 días)
  Ingestión Total:                               5.1 TB

RESUMEN DE DETECCIÓN:
  Reglas Analíticas Activas: 87
  Incidentes Creados: 234
    Críticos: 8 | Altos: 34 | Medios: 89 | Bajos: 103
  Tiempo Medio para Detectar (MTTD): 4.2 minutos
  Tiempo Medio para Responder (MTTR): 18 minutos

PRINCIPALES TIPOS DE INCIDENTES:
  Viaje Imposible Detectado:                   42 incidentes
  Patrón de Llamada a API No Autorizada en AWS: 28 incidentes
  Eliminación Masiva de Archivos en S3:         3 incidentes
  Registro de Aplicación Sospechosa en Azure AD: 12 incidentes

AUTOMATIZACIÓN:
  Playbooks Ejecutados: 156
  Cuentas Deshabilitadas Automáticamente: 23
  Incidentes Enriquecidos Automáticamente: 198
  Tasa de Falsos Positivos: 12%

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills relacionados