Communitygithub.com

construindo-siem-na-nuvem-com-sentinel

Implante o Microsoft Sentinel como um SIEM/SOAR nativo da nuvem configurando conectores de dados multinuvem (AWS, Azure, GCP), escrevendo consultas de detecção e caça em KQL e criando playbooks de resposta automatizados com Logic Apps. Use ao estabelecer um SOC centralizado para ambientes multinuvem, migrar de um SIEM legado ou realizar caça a ameaças em escala de petabytes; não use para ambientes apenas AWS onde Security Hub/GuardDuty são suficientes ou para necessidades de EDR em endpoints.

O que é construindo-siem-na-nuvem-com-sentinel?

Esta skill capacita você a construir um SIEM/SOAR nativo da nuvem usando o Microsoft Sentinel, ideal para centralizar operações de segurança em ambientes multinuvem (AWS, Azure, GCP). Ela abrange desde o provisionamento do workspace e a configuração de conectores de dados (CloudTrail, Azure AD, GCP) até a criação de regras de detecção em KQL mapeadas para MITRE ATT&CK, playbooks de automação com Azure Logic Apps e consultas de caça a ameaças em petabytes. A skill é especialmente útil ao migrar de SIEMs legados (Splunk, QRadar), integrar inteligência contra ameaças e automatizar respostas a incidentes, como desabilitar contas comprometidas ou bloquear acessos suspeitos. Ela suporta as plataformas Azure, Logic Apps e Azure Data Explorer, com exemplos práticos de código para PowerShell e KQL que podem ser diretamente aplicados em seu ambiente de segurança.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Construindo SIEM na Nuvem com Sentinel

Quando Usar

  • Ao estabelecer um centro de operações de segurança centralizado para ambientes multinuvem
  • Ao migrar de plataformas SIEM legadas (Splunk, QRadar) para uma arquitetura nativa da nuvem
  • Ao construir fluxos de trabalho automatizados de resposta a incidentes para ameaças específicas da nuvem
  • Ao realizar caça a ameaças em larga escala em petabytes de telemetria de segurança
  • Ao integrar feeds de inteligência contra ameaças com análise de logs de segurança na nuvem

Não use para ambientes apenas AWS onde Security Hub e GuardDuty são suficientes, para detecção em endpoints que exijam recursos de EDR (use Defender para Endpoint) ou para monitoramento de postura de conformidade (veja construindo-gerenciamento-de-postura-de-segurança-na-nuvem).

Pré-requisitos

  • Assinatura do Azure com Microsoft Sentinel habilitado em um workspace do Log Analytics
  • Permissões do conector de dados para as fontes de log de destino (AWS CloudTrail, Azure Activity, GCP)
  • Logic Apps ou Azure Functions para playbooks de resposta automatizados
  • Proficiência em KQL (Kusto Query Language) para escrever regras de detecção e consultas de caça

Fluxo de Trabalho

Etapa 1: Provisionar o Workspace do Sentinel e Conectores de Dados

Crie um workspace do Log Analytics otimizado para dados de segurança e habilite conectores de dados para ingestão multinuvem.

# Criar workspace do 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 no workspace
az sentinel onboarding-state create \
  --resource-group security-rg \
  --workspace-name sentinel-workspace

# Habilitar conector do 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 logs de entrada e auditoria do 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"}
    }
  }'

Etapa 2: Escrever Regras de Detecção em KQL

Crie regras de análise usando a Kusto Query Language para detectar ameaças específicas da nuvem. Mapeie cada regra para técnicas MITRE ATT&CK.

// Detectar viagem impossível - entradas de locais geograficamente distantes
let timeframe = 1h;
let distance_threshold = 500; // km
SigninLogs
| where TimeGenerated > ago(timeframe)
| where ResultType == 0 // Apenas entradas bem-sucedidas
| 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 credenciais IAM da AWS via 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 exclusão em massa de objetos S3 (possível 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

Etapa 3: Construir Playbooks SOAR com Logic Apps

Crie playbooks de resposta automatizados que são executados quando regras de análise disparam incidentes. Ações comuns incluem bloquear usuários, isolar recursos e enriquecer alertas com inteligência contra ameaças.

{
  "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": "Usuário @{items('For_each_account_entity')?['Name']} desabilitado pelo playbook automatizado"}
            }
          }
        }
      }
    }
  }
}

Etapa 4: Configurar o Data Lake do Sentinel para Caça de Longo Prazo

Habilite o data lake do Sentinel para retenção de logs em escala de petabytes e caça avançada a ameaças usando endpoints KQL e SQL.

// Consulta de caça a ameaças: detectar movimento lateral entre contas 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

Etapa 5: Integrar Inteligência contra Ameaças

Conecte provedores de inteligência contra ameaças e crie regras de correspondência baseadas em indicadores para detectar comunicação com infraestrutura maliciosa conhecida.

# Habilitar conector de Inteligência contra Ameaças da 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"}}
  }'
// Corresponder indicadores de rede contra logs de fluxo da nuvem
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

Conceitos-Chave

TermoDefinição
KQLKusto Query Language, a linguagem de consulta principal do Microsoft Sentinel usada para pesquisar, analisar e visualizar dados de segurança
Regra de AnáliseLógica de detecção no Sentinel que avalia dados de log em um agendamento e cria incidentes quando as condições são atendidas
Playbook SOARFluxo de trabalho automatizado disparado por incidentes que executa ações de resposta, como bloquear contas, enriquecer alertas ou notificar equipes
Conector de DadosMódulo de integração que ingere logs de segurança de serviços em nuvem, provedores de identidade e ferramentas de terceiros no Sentinel
Data Lake do SentinelCamada de armazenamento em escala de petabytes que fornece retenção de longo prazo com interfaces de consulta KQL e SQL para caça avançada
WorkbookPainel interativo no Sentinel que exibe visualizações de dados de segurança, tendências e métricas operacionais
WatchlistTabelas de dados de referência no Sentinel usadas para enriquecer alertas com contexto, como listas de usuários VIP ou intervalos de IP aprovados
Detecção FusãoMecanismo de correlação alimentado por aprendizado de máquina que detecta automaticamente ataques em vários estágios entre fontes de dados

Ferramentas e Sistemas

  • Microsoft Sentinel: Plataforma SIEM/SOAR nativa da nuvem construída no Azure Log Analytics com detecção de ameaças alimentada por IA
  • Azure Logic Apps: Plataforma de automação low-code para construir playbooks SOAR acionados por incidentes do Sentinel
  • Inteligência contra Ameaças da Microsoft: Feeds de ameaças integrados que fornecem indicadores de IP, domínio e URL para correspondência com logs de segurança
  • Azure Data Explorer: Mecanismo de análise de alto desempenho que sustenta consultas KQL do Sentinel para exploração de dados em larga escala
  • MITRE ATT&CK Navigator: Estrutura para mapear regras de detecção do Sentinel para táticas e técnicas do adversário

Cenários Comuns

Cenário: Detectando Campanha de Roubo de Credenciais entre Nuvens

Contexto: Um invasor compromete uma conta do Azure AD por meio de phishing e, em seguida, usa a conta para acessar recursos da AWS por identidade federada. O Sentinel precisa correlacionar a anomalia de entrada do Azure AD com a atividade incomum da API da AWS.

Abordagem:

  1. Crie uma regra de análise detectando viagem impossível do Azure AD ou risco de entrada anômalo
  2. Escreva uma consulta KQL correlacionando a identidade comprometida do Azure AD com eventos do AWS CloudTrail AssumeRoleWithSAML
  3. Crie uma regra de detecção Fusão que vincule eventos de risco do Azure AD com atividade subsequente de escalonamento de privilégio na AWS
  4. Implante um playbook SOAR que desabilite automaticamente a conta do Azure AD e revogue sessões STS da AWS
  5. Crie um workbook mostrando a linha do tempo desde o comprometimento inicial até o movimento lateral para a AWS
  6. Execute uma consulta de caça no data lake para verificar padrões semelhantes que afetam outras contas

Armadilhas: Não correlacionar identidades entre provedores de nuvem perde toda a cadeia de ataque. Definir a frequência da regra de análise muito baixa (por exemplo, 24 horas) permite que invasores tenham horas de acesso não detectado.

Formato de Saída

Relatório de Operações do SOC do Microsoft Sentinel
=====================================================
Workspace: sentinel-workspace
Fontes de Dados: 14 conectores ativos
Período do Relatório: 2025-02-01 a 2025-02-23

INGESTÃO DE DADOS:
  Logs de Entrada do Azure AD:     2,3 TB (23 dias)
  AWS CloudTrail:                  1,8 TB (23 dias)
  Atividade do Azure:              0,9 TB (23 dias)
  Alertas do Defender para Nuvem:  45 GB (23 dias)
  Ingestão Total:                  5,1 TB

RESUMO DE DETECÇÃO:
  Regras de Análise Ativas: 87
  Incidentes Criados: 234
    Críticos: 8 | Altos: 34 | Médios: 89 | Baixos: 103
  Tempo Médio para Detectar (MTTD): 4,2 minutos
  Tempo Médio para Responder (MTTR): 18 minutos

PRINCIPAIS TIPOS DE INCIDENTE:
  Viagem Impossível Detectada:              42 incidentes
  Padrão de Chamada de API AWS Não Autorizada: 28 incidentes
  Exclusão em Massa de Arquivos no S3:       3 incidentes
  Registro Suspeito de Aplicativo do Azure AD: 12 incidentes

AUTOMAÇÃO:
  Playbooks Executados: 156
  Contas Desabilitadas Automaticamente: 23
  Incidentes Enriqueceu Automaticamente: 198
  Taxa 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,

Habilidades Relacionadas