Communitygithub.com

building-cloud-siem-with-sentinel

Déployez Microsoft Sentinel en tant que SIEM/SOAR cloud-natif en configurant des connecteurs de données multi-cloud (AWS, Azure, GCP), en écrivant des requêtes de détection et de chasse en KQL, et en créant des playbooks de réponse automatisés avec Logic Apps. À utiliser pour mettre en place un SOC centralisé pour des environnements multi-cloud, migrer depuis un SIEM legacy, ou effectuer de la chasse aux menaces à l'échelle du pétaoctet ; ne pas utiliser pour des environnements purement AWS où Security Hub/GuardDuty suffisent, ni pour des besoins de détection sur les endpoints (utiliser Defender for Endpoint).

Qu'est-ce que building-cloud-siem-with-sentinel ?

Cette compétence guide le déploiement et l'utilisation de Microsoft Sentinel comme plateforme SIEM/SOAR cloud-natif pour sécuriser des environnements multi-cloud (AWS, Azure, GCP). Elle couvre l'intégralité du workflow : provisionnement de l'espace de travail et des connecteurs de données, création de règles de détection en langage Kusto (KQL), construction de playbooks de réponse automatisés avec Azure Logic Apps, configuration du data lake Sentinel pour la chasse aux menaces à grande échelle, et intégration de flux de renseignement sur les menaces. La compétence s'applique principalement aux environnements Azure, mais ses connecteurs et requêtes gèrent aussi les logs AWS CloudTrail et GCP. L'utilisateur y trouvera des exemples concrets de règles KQL (détection d'impossible travel, d'abus d'identifiants IAM, de suppression massive d'objets S3) ainsi qu'un modèle de playbook SOAR automatisant la désactivation de comptes compromis. Les concepts clés (KQL, règles d'analyse, SOAR, connecteurs de données, data lake) et les scénarios courants (détection de campagnes de vol d'identifiants cross-cloud) sont détaillés pour faciliter la prise en main par un ingénieur sécurité ou un analyste SOC.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Construire un SIEM Cloud avec Sentinel

Quand l'utiliser

  • Lors de la mise en place d'un centre d'opérations de sécurité centralisé pour des environnements multi-cloud
  • Lors de la migration depuis des plateformes SIEM legacy (Splunk, QRadar) vers une architecture cloud-native
  • Lors de la construction de workflows de réponse automatisée aux incidents pour des menaces spécifiques au cloud
  • Lors de la réalisation de chasses aux menaces à grande échelle sur des pétaoctets de télémétrie de sécurité
  • Lors de l'intégration de flux de renseignement sur les menaces avec l'analyse des logs de sécurité cloud

Ne pas utiliser pour les environnements purement AWS où Security Hub et GuardDuty suffisent, pour la détection sur les endpoints nécessitant des capacités EDR (utiliser Defender for Endpoint), ou pour la surveillance de la conformité (voir building-cloud-security-posture-management).

Prérequis

  • Abonnement Azure avec Microsoft Sentinel activé sur un espace de travail Log Analytics
  • Permissions de connecteur de données pour les sources de logs cibles (AWS CloudTrail, Azure Activity, GCP)
  • Logic Apps ou Azure Functions pour les playbooks de réponse automatisée
  • Maîtrise de KQL (Kusto Query Language) pour l'écriture de règles de détection et de requêtes de chasse

Workflow

Étape 1 : Provisionner l'espace de travail Sentinel et les connecteurs de données

Créez un espace de travail Log Analytics optimisé pour les données de sécurité et activez les connecteurs de données pour l'ingestion multi-cloud.

# Créer l'espace de travail Log Analytics
az monitor log-analytics workspace create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace \
  --location eastus \
  --retention-time 365 \
  --sku PerGB2018

# Activer Microsoft Sentinel sur l'espace de travail
az sentinel onboarding-state create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace

# Activer le connecteur 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"}}
  }'

# Activer les logs de connexion et d'audit 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"}
    }
  }'

Étape 2 : Écrire des règles de détection KQL

Créez des règles d'analyse avec Kusto Query Language pour détecter les menaces spécifiques au cloud. Mappez chaque règle aux techniques MITRE ATT&CK.

// Détecter les impossible travel - connexions depuis des localisations géographiquement éloignées
let timeframe = 1h;
let distance_threshold = 500; // km
SigninLogs
| where TimeGenerated > ago(timeframe)
| where ResultType == 0 // Connexions réussies uniquement
| 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
// Détecter l'abus d'identifiants IAM AWS depuis 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
// Détecter la suppression massive d'objets S3 (rançongiciel potentiel)
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

Étape 3 : Construire des playbooks SOAR avec Logic Apps

Créez des playbooks de réponse automatisée qui s'exécutent lorsque des règles d'analyse déclenchent des incidents. Les actions courantes incluent le blocage d'utilisateurs, l'isolation de ressources et l'enrichissement des alertes avec du renseignement sur les menaces.

{
  "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": "Utilisateur @{items('For_each_account_entity')?['Name']} désactivé par le playbook automatisé"}
            }
          }
        }
      }
    }
  }
}

Étape 4 : Configurer le data lake Sentinel pour la chasse à long terme

Activez le data lake Sentinel pour une rétention de logs à l'échelle du pétaoctet et une chasse avancée aux menaces en utilisant les points de terminaison KQL et SQL.

// Requête de chasse aux menaces : détecter le mouvement latéral entre comptes 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

Étape 5 : Intégrer le renseignement sur les menaces

Connectez les fournisseurs de renseignement sur les menaces et créez des règles de correspondance basées sur des indicateurs pour détecter les communications avec une infrastructure malveillante connue.

# Activer le connecteur Microsoft Threat Intelligence
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"}}
  }'
// Faire correspondre les indicateurs réseau avec les logs de flux cloud
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

Concepts clés

TermeDéfinition
KQLKusto Query Language, le langage de requête principal de Microsoft Sentinel utilisé pour rechercher, analyser et visualiser les données de sécurité
Règle d'analyseLogique de détection dans Sentinel qui évalue les données de logs selon un calendrier et crée des incidents lorsque les conditions correspondent
Playbook SOARWorkflow automatisé déclenché par des incidents qui exécute des actions de réponse telles que le blocage de comptes, l'enrichissement des alertes ou la notification des équipes
Connecteur de donnéesModule d'intégration qui ingère les logs de sécurité des services cloud, des fournisseurs d'identité et des outils tiers dans Sentinel
Data lake SentinelCouche de stockage à l'échelle du pétaoctet offrant une rétention à long terme des logs avec des interfaces de requête KQL et SQL pour la chasse avancée
WorkbookTableau de bord interactif dans Sentinel affichant des visualisations des données de sécurité, des tendances et des métriques opérationnelles
WatchlistTables de données de référence dans Sentinel utilisées pour enrichir les alertes avec du contexte, telles que des listes d'utilisateurs VIP ou des plages IP approuvées
Détection FusionMoteur de corrélation basé sur l'apprentissage automatique qui détecte automatiquement les attaques multi-étapes à travers plusieurs sources de données

Outils & Systèmes

  • Microsoft Sentinel : Plateforme SIEM/SOAR cloud-native construite sur Azure Log Analytics avec détection des menaces basée sur l'IA
  • Azure Logic Apps : Plateforme d'automatisation low-code pour construire des playbooks SOAR déclenchés par des incidents Sentinel
  • Microsoft Threat Intelligence : Flux de renseignement intégrés fournissant des indicateurs IP, de domaine et d'URL pour la correspondance avec les logs de sécurité
  • Azure Data Explorer : Moteur d'analyse haute performance sous-jacent aux requêtes KQL Sentinel pour l'exploration de données à grande échelle
  • MITRE ATT&CK Navigator : Cadre pour mapper les règles de détection Sentinel aux tactiques et techniques des adversaires

Scénarios courants

Scénario : Détection d'une campagne de vol d'identifiants cross-cloud

Contexte : Un attaquant compromet un compte Azure AD via hameçonnage, puis utilise le compte pour accéder aux ressources AWS via une identité fédérée. Sentinel doit corréler l'anomalie de connexion Azure AD avec une activité AWS API inhabituelle.

Approche :

  1. Créer une règle d'analyse détectant les impossible travel Azure AD ou le risque de connexion anormal
  2. Écrire une requête KQL corrélant l'identité Azure AD compromise avec les événements AWS CloudTrail AssumeRoleWithSAML
  3. Construire une règle de détection Fusion liant les événements de risque Azure AD avec l'activité d'escalade de privilèges AWS subséquente
  4. Déployer un playbook SOAR qui désactive automatiquement le compte Azure AD et révoque les sessions STS AWS
  5. Créer un workbook montrant la chronologie depuis la compromission initiale jusqu'au mouvement latéral vers AWS
  6. Exécuter une requête de chasse sur le data lake pour rechercher des modèles similaires affectant d'autres comptes

Pièges : Ne pas corréler l'identité entre les fournisseurs cloud manque la chaîne d'attaque complète. Définir une fréquence de règle d'analyse trop basse (ex. 24 heures) laisse aux attaquants des heures d'accès non détecté.

Format de sortie

Rapport des opérations SOC Microsoft Sentinel
=============================================
Espace de travail : sentinel-workspace
Sources de données : 14 connecteurs actifs
Période du rapport : 2025-02-01 au 2025-02-23

INGESTION DE DONNÉES :
  Logs de connexion Azure AD :     2,3 To (23 jours)
  AWS CloudTrail :                 1,8 To (23 jours)
  Azure Activity :                 0,9 To (23 jours)
  Alertes Defender pour le Cloud : 45 Go (23 jours)
  Ingestion totale :               5,1 To

RÉSUMÉ DE LA DÉTECTION :
  Règles d'analyse actives : 87
  Incidents créés : 234
    Critique : 8 | Élevé : 34 | Moyen : 89 | Faible : 103
  Délai moyen de détection (MTTD) : 4,2 minutes
  Délai moyen de réponse (MTTR) : 18 minutes

PRINCIPAUX TYPES D'INCIDENTS :
  Impossible travel détecté :             42 incidents
  Schéma d'appel API AWS non autorisé :   28 incidents
  Suppression massive de fichiers dans S3 : 3 incidents
  Enregistrement suspect d'application Azure AD : 12 incidents

AUTOMATISATION :
  Playbooks exécutés : 156
  Comptes auto-désactivés : 23
  Incidents auto-enrichis : 198
  Taux de faux positifs : 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 associés