Pular para o conteúdo principal

Visão geral

A integração do Microsoft Defender XDR (INT-021) fornece sincronização bidirecional entre o CaseBender e a plataforma de detecção e resposta estendidas da Microsoft, incluindo o Microsoft Defender para Endpoint (MDE) e o Microsoft Defender XDR.

Ingestão de entrada

Alertas e incidentes do Defender são ingeridos no CaseBender, normalizados, enriquecidos com observáveis e técnicas MITRE ATT&CK e transformados em alertas/casos.

Sincronização de saída

Quando um caso do CaseBender é fechado, o alerta/incidente vinculado do Defender é atualizado com o status, a classificação e um comentário de auditoria via Microsoft Graph.
Esta integração usa a API de Segurança do Microsoft Graph (https://graph.microsoft.com/v1.0/security). Ela se autentica com um aplicativo do Azure AD (Entra ID) usando o fluxo de credenciais de cliente OAuth2.

Recursos

RecursoDireçãoDescrição
Ingestão de alertasEntradaAlertas do Defender são normalizados em alertas do CaseBender
Ingestão de incidentesEntradaIncidentes do Defender (com alertas filhos) são ingeridos
Extração de observáveisEntradaIPs, URLs, hashes de arquivos, nomes de arquivos, hostnames e contas de usuário são extraídos das evidências
Extração de ativosEntradaHostname, IP e plataforma de SO do dispositivo são capturados de devices[]
Correlação MITRE ATT&CKEntradaIDs de técnica são adicionados como tags e TTPs (ex.: mitre:T1078)
Sincronização de alertasSaídastatus, classification, determination e comentários são enviados ao fechar o caso
Sincronização de incidentesSaídastatus, classification, determination e comentários são enviados ao fechar o caso
Teste de conexãoBidirecionalValida as credenciais OAuth2 e o acesso à API de Segurança do Graph

Pré-requisitos

1

Acesso ao Microsoft Defender / Entra ID

Um locatário do Microsoft Entra ID (Azure AD) com o Microsoft Defender XDR ou o Microsoft Defender para Endpoint licenciado e habilitado. Você precisa de permissão para registrar aplicativos e conceder consentimento do administrador.
2

Saída de rede

A implantação do CaseBender deve conseguir alcançar:
  • https://login.microsoftonline.com (endpoint de token OAuth2)
  • https://graph.microsoft.com (API de Segurança do Graph)
3

Função de administrador do CaseBender

Você deve conseguir criar e gerenciar integrações em Configurações → Integrações.

Parte A — Registrar um aplicativo do Azure AD

1

Criar o registro do aplicativo

No centro de administração do Microsoft Entra, vá para Identidade → Aplicativos → Registros de aplicativo → Novo registro. Dê um nome (ex.: CaseBender Defender Integration) e registre-o.
2

Registrar os identificadores

Na Visão geral do aplicativo, copie o ID do aplicativo (cliente) e o ID do diretório (locatário). Você os inserirá no CaseBender.
3

Criar um segredo do cliente

Em Certificados e segredos → Novo segredo do cliente, crie um segredo e copie o seu Valor imediatamente (ele é exibido apenas uma vez).
4

Conceder permissões da API de Segurança do Graph

Em Permissões de API → Adicionar uma permissão → Microsoft Graph → Permissões de aplicativo, adicione o seguinte e clique em Conceder consentimento do administrador:
PermissãoFinalidade
SecurityAlert.ReadWrite.AllLer e atualizar alertas do Defender
SecurityIncident.ReadWrite.AllLer e atualizar incidentes do Defender
Use permissões de Aplicativo (não Delegadas). A integração é executada de forma headless com o fluxo de credenciais de cliente e requer o consentimento do administrador do locatário.

Parte B — Configurar a integração no CaseBender

1

Abrir o catálogo de integrações

Vá para Configurações → Integrações → Criar e escolha Microsoft Defender XDR na categoria EDR/XDR.
2

Inserir as credenciais do Azure AD

Forneça os valores capturados na Parte A:
CampoDescrição
tenantIdID do diretório (locatário)
clientIdID do aplicativo (cliente)
clientSecretValor do segredo do cliente
3

Configurar as opções de sincronização

Habilite os comportamentos necessários:
OpçãoEfeito
syncCaseUpdatesEnviar atualizações do caso para o Defender
syncCaseCloseEnviar o fechamento do caso para o Defender
autoCreateCasesCriar casos automaticamente a partir de incidentes do Defender ingeridos
closeAlertsOnCaseCloseResolver o alerta vinculado do Defender ao fechar um caso
closeIncidentsOnCaseCloseResolver o incidente vinculado do Defender ao fechar um caso
4

Testar a conexão

Use Testar conexão para validar. O CaseBender solicita um token OAuth2 e chama GET /security/alerts_v2?$top=1.
Uma resposta 403 durante o teste é tratada como sucesso — ela confirma que a autenticação funcionou mesmo quando o aplicativo ainda não recebeu o escopo de leitura naquele endpoint específico.

Entrada: Ingestão de alertas e incidentes do Defender

Endpoint

O Defender (ou um intermediário como Logic Apps, Sentinel ou um encaminhador de webhook) envia as cargas de alertas/incidentes para o endpoint de ingestão do CaseBender:
POST https://<seu-dominio-casebender>/api/v1/ingest/defender
As solicitações são autenticadas com uma chave de API de integração no cabeçalho x-api-key (o cabeçalho authorization: Bearer <chave> também é aceito). As chaves de API de webhook do Defender têm o prefixo sk_def_.

Formatos de carga

Tanto o formato em lote (array value[] do Graph) quanto um objeto de alerta único são suportados.
curl -X POST "https://<seu-dominio-casebender>/api/v1/ingest/defender" \
  -H "x-api-key: sk_def_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "value": [
      {
        "id": "da637...",
        "incidentId": "12345",
        "title": "Execução suspeita de PowerShell",
        "severity": "high",
        "status": "new",
        "classification": "unknown",
        "createdDateTime": "2026-07-03T18:20:00Z",
        "mitreTechniques": ["T1059.001"],
        "evidence": [
          { "@odata.type": "#microsoft.graph.security.fileEvidence",
            "sha256": "9f2b...", "fileName": "payload.ps1" }
        ]
      }
    ]
  }'
Uma solicitação bem-sucedida retorna HTTP 202 Accepted:
{ "success": true, "processed": 1, "failed": 0 }

Pipeline de processamento

1

Proxy de ingestão

/api/v1/ingest/defender valida a origem e encaminha a solicitação ao serviço de ingestão (POST /v1/sources/defender).
2

Publicação na fila

O serviço de ingestão autentica a chave de API, valida a carga e publica cada alerta na fila de processamento.
3

Normalização

O processador do Defender normaliza cada registro em um alerta do CaseBender: mapeia a gravidade, constrói o título/descrição, extrai observáveis e ativos de dispositivo e gera os TTPs do MITRE.

Referência de mapeamento de dados

Mapeamento de gravidade (Defender → CaseBender 1–4):
Gravidade do DefenderGravidade do CaseBender
high1
medium2
low3
informational4
unknown3
Extração de observáveis (de evidence[]):
Campo de evidênciaTipo de observável
ipAddressip
urlurl
sha256hash
fileNamefilename
deviceDnsNamehostname
userAccountuser (DOMÍNIO\conta)
As tags aplicadas na ingestão incluem defender, xdr, service:<serviceSource>, category:<category>, incident (para incidentes) e uma tag mitre:<technique> por técnica do MITRE. Os registros ingeridos usam por padrão TLP:2 e PAP:2.

Saída: Sincronizar disposições de casos com o Defender

Quando um caso é fechado no CaseBender, o evento case_closed é despachado para o manipulador do Defender. Se o caso estiver vinculado a um alerta ou incidente do Defender, o CaseBender envia a resolução por meio da API de Segurança do Graph.

Como a entidade vinculada do Defender é resolvida

O manipulador procura os identificadores do Defender nesta ordem:
  1. extraData.defenderAlertId / extraData.defenderIncidentId
  2. sourceRef quando extraData.source === "defender"
  3. sourceRef quando parece uma referência de alerta do Defender (prefixo da)
Se nenhum ID de alerta ou incidente for encontrado, o fechamento do caso é ignorado para esta integração.

Mapeamento de resolução → classificação

Resolução do CaseBenderClassificação do Defender
TruePositivetruePositive
FalsePositivefalsePositive
DuplicateinformationalExpectedActivity
NoImpactinformationalExpectedActivity
(outra / nenhuma)truePositive (padrão)
Ao fechar, o CaseBender define o status do alerta/incidente como resolved, aplica a classification mapeada e adiciona um comentário como:
Case <id-do-caso> closed in CaseBender with resolution: <resolução>
As atualizações de saída de alertas exigem que closeAlertsOnCaseClose esteja habilitado; as de incidentes exigem closeIncidentsOnCaseClose. Se nenhuma estiver habilitada, não ocorre sincronização de saída.

Considerações de segurança

  • Tratamento de segredos — o segredo do cliente é armazenado nas configurações da integração; alterne-o conforme o cronograma exigido pela sua organização e atualize a integração.
  • Privilégio mínimo — conceda apenas SecurityAlert.ReadWrite.All e SecurityIncident.ReadWrite.All. Não adicione escopos mais amplos do Graph.
  • Cache de tokens — os tokens de acesso são armazenados em cache na memória por integração e atualizados um minuto antes da expiração; nenhum token é persistido em disco.
  • Chaves de webhook — trate a chave de API sk_def_ como um segredo. Alterne-a se exposta e atualize a configuração do remetente.
  • Rede — restrinja a saída a login.microsoftonline.com e graph.microsoft.com.

Solução de problemas

Verifique tenantId, clientId e clientSecret. Confirme que o segredo do cliente não expirou e que o consentimento do administrador foi concedido para as permissões do aplicativo do Graph.
O cabeçalho x-api-key está ausente ou inválido. Confirme que você está enviando a chave sk_def_ que corresponde à chave de API de webhook configurada da integração.
A carga não tinha nem um array value[] nem um id de nível superior. Envie um objeto em lote do Graph ou um objeto de alerta único.
Certifique-se de que closeAlertsOnCaseClose / closeIncidentsOnCaseClose esteja habilitado e que o caso tenha um ID de alerta/incidente do Defender (via extraData ou sourceRef).
O aplicativo do Azure AD não tem permissão de gravação. Confirme que SecurityAlert.ReadWrite.All e SecurityIncident.ReadWrite.All foram concedidos com consentimento do administrador.

Documentação relacionada