Coletar registros de IOC do MISP

Compatível com:

Visão geral

Esse analisador extrai IOCs de dados MISP formatados como JSON ou CSV. Ele analisa a entrada, mapeia campos para o UDM, processa vários tipos de IOC (IP, domínio, hashes de arquivos etc.) e enriquece os dados com o contexto de informações sobre ameaças, como confiança e gravidade. O analisador também executa uma lógica específica para diferentes formatos de dados e processa casos com campos ausentes ou não compatíveis.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você tem acesso privilegiado ao MISP.

Configurar um feed no Google SecOps para ingerir os registros de inteligência contra ameaças do MISP

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed (por exemplo, Logs do MISP).
  4. Selecione Webhook como o Tipo de origem.
  5. Selecione Inteligência de ameaças do MISP como o Tipo de registro.
  6. Clique em Próxima.
  7. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
    • Namespace de recursos: o namespace de recursos.
    • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
  8. Clique em Próxima.
  9. Revise a configuração do feed na tela Finalizar e clique em Enviar.
  10. Clique em Gerar chave secreta para gerar uma chave secreta para autenticar esse feed.
  11. Copie e armazene a chave secreta. Não é possível acessar essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas essa ação torna a chave secreta anterior obsoleta.
  12. Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.
  13. Clique em Concluído.

Criar uma chave de API para o feed de webhook

  1. Acesse o console do Google Cloud > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Google Security Operations.

Especificar o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed de webhook.
  2. Ative a autenticação especificando a chave de API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave de API como um cabeçalho em vez de especificar no URL.

  3. Se o cliente do webhook não tiver suporte a cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Substitua:

    • ENDPOINT_URL: o URL do endpoint do feed.
    • API_KEY: a chave de API para autenticação no Google Security Operations.
    • SECRET: a chave secreta gerada para autenticar o feed.

Ativar o envio de solicitações HTTP para URLs externos no MISP

  1. Acesse a máquina em que o MISP está implantado.
  2. Edite o arquivo config.php localizado em app/Config/.
  3. Encontre a configuração rest_client_enable_arbitrary_urls e defina-a como True. none 'rest_client_enable_arbitrary_urls' => true
  4. Salve o arquivo.

Configurar o webhook no MISP para o Google SecOps

  1. Faça login na Threat Intelligence do MISP.
  2. Acesse Administração > Fluxos de trabalho > Listar módulos.
  3. Selecione Webhook.
  4. Acesse a coluna Ação e clique em Ativar.
  5. Acesse Fluxos de trabalho > Listar acionadores.
  6. Selecione o gatilho do webhook.
  7. Selecione Webhook na lista de módulos.
  8. Arraste e solte no espaço de trabalho.
  9. Conecte a entrada à saída do acionador.
  10. No módulo do webhook, preencha os seguintes campos:
    • URL: insira ENDPOINT_URL, seguido por API_KEY e SECRET.
    • Método de solicitação HTTP: selecione POST.
  11. Clique em Salvar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
Attribute.category event.idm.entity.metadata.threat.category_details Mapeado diretamente de Attribute.category no objeto JSON aninhado no campo "data". Usado no caminho de análise JSON.
Attribute.comment event.idm.entity.metadata.threat.summary Mapeado diretamente de Attribute.comment no objeto JSON aninhado no campo "data". Usado no caminho de análise JSON.
Attribute.deleted event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Attribute.deleted e adicionado como um campo de detecção com a chave "Atributo excluído". Usado no caminho de análise JSON.
Attribute.event_id event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Attribute.event_id e adicionado como um campo de detecção com a chave "Atributo event_id". Usado no caminho de análise JSON.
Attribute.first_seen event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Attribute.first_seen e adicionado como um campo de detecção com a chave "Atributo first_seen". Usado no caminho de análise JSON.
Attribute.id event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Attribute.id e adicionado como um campo de detecção com a chave "Attribute id" ou "Attribute id $$", dependendo do caminho de análise. Usado nos caminhos de análise CSV e JSON.
Attribute.timestamp event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Attribute.timestamp e adicionado como um campo de detecção com a chave "Attribute timestamp". Usado no caminho de análise JSON.
Attribute.to_ids event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Attribute.to_ids e adicionado como um campo de detecção com a chave "Atributo to_ids". Usado no caminho de análise JSON.
Attribute.type log_type Mapeado diretamente de Attribute.type no objeto JSON aninhado no campo "data". É usado como um campo temporário e depois para preencher outros campos do UDM. Usado no caminho de análise JSON.
Attribute.uuid event.idm.entity.metadata.product_entity_id Mapeado diretamente de Attribute.uuid no objeto JSON aninhado no campo "data". Usado no caminho de análise JSON.
Attribute.value Várias O valor desse campo é usado para preencher vários campos do UDM, dependendo do Attribute.type (ou log_type, se derivado de Attribute.type):
- event.idm.entity.entity.hostname se type for "domain".
: event.idm.entity.entity.file.md5 se type for "md5".
: event.idm.entity.entity.file.sha1 se type for "sha1".
: event.idm.entity.entity.file.sha256 se type for "sha256".
: event.idm.entity.entity.resource.name se type for "mutex".
: event.idm.entity.entity.registry.registry_key se type for "regkey".
: event.idm.entity.entity.user.email_addresses se type for "ator de ameaça".
: event.idm.entity.entity.url se type for "uri" ou "url".
: event.idm.entity.entity.file.full_path se type for "filename".
: analisado para IP e porta se type for "ip-dst|port", "ip-dst" ou "ip-src". Usado no caminho de análise JSON.
column1 event.idm.entity.metadata.product_entity_id Mapeado diretamente de column1 no caminho de análise CSV.
column14 Parte de event.idm.entity.metadata.threat.description Concatenado com description para formar a descrição final nos metadados de ameaças. Usado no caminho de análise CSV.
column16 event.idm.entity.metadata.threat.threat_feed_name, event.ioc.feed_name Mapeado diretamente de column16. Usado no caminho de análise CSV.
column18 event.idm.entity.metadata.threat.severity_details, event.ioc.raw_severity Mapeado diretamente de column18. Usado no caminho de análise CSV.
column21 Parte de event.idm.entity.metadata.threat.description, event.ioc.description Usado como base para a descrição, depois concatenado com event_info. Usado no caminho de análise CSV.
column3 Parte de event.ioc.categorization Mapeados diretamente de column3 e concatenados com "IOCs" para formar a categorização final. Usado no caminho de análise CSV.
column4 event.idm.entity.metadata.description Mapeado diretamente de column4. Usado no caminho de análise CSV.
column5 Várias O valor desse campo é usado para preencher vários campos do UDM, dependendo do campo column4 (que é mapeado para type):
- event.idm.entity.entity.hostname se type for "domain".
: analisado para IP e porta se type for "ip-dst|port", "ip-dst" ou "ip-src".
: event.idm.entity.entity.file.md5 se type for "md5".
: event.idm.entity.entity.file.sha1 se type for "sha1".
: event.idm.entity.entity.file.sha256 se type for "sha256".
: event.idm.entity.entity.resource.name se type for "mutex".
: event.idm.entity.entity.registry.registry_key se type for "regkey".
: event.idm.entity.entity.user.email_addresses se type for "ator de ameaça".
: event.idm.entity.entity.url se type for "uri" ou "url".
: event.idm.entity.entity.file.full_path se type for "filename". Usado no caminho de análise CSV.
column6 event.idm.entity.metadata.threat.summary Mapeado diretamente de column6. Usado no caminho de análise CSV.
column8 event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Analisado como um carimbo de data/hora UNIX. Usado no caminho de análise CSV.
date description event.idm.entity.metadata.threat.description Mapeado diretamente de description no objeto JSON aninhado no campo "data". Usado no caminho de análise JSON.
event_creator_email event.idm.entity.entity.labels.value Mapeado diretamente de event_creator_email e adicionado como um rótulo com a chave "event_creator_email". Usado no caminho de análise JSON.
event_id Feed.publish event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Feed.publish e adicionado como um campo de detecção com a chave "Publicação do feed". Usado no caminho de análise JSON.
first_seen event.ioc.active_timerange.start, event.idm.entity.metadata.interval.start_time Analisado como um carimbo de data/hora no formato "aaaa-MM-ddTHH:mm:ssZZ". Usado no caminho de análise JSON.
id info event.idm.entity.metadata.description Mapeado diretamente de info no objeto JSON aninhado no campo "data". Usado no caminho de análise JSON.
last_seen event.ioc.active_timerange.end Analisado como um carimbo de data/hora no formato "aaaa-MM-ddTHH:mm:ssZZ". Usado no caminho de análise JSON.
Org.name event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Org.name e adicionado como um campo de detecção com a chave "Nome da organização". Usado no caminho de análise JSON.
published event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de published e adicionado como um campo de detecção com a chave "published". Usado no caminho de análise JSON.
Tag.colour event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.colour e adicionado como um campo de detecção com a chave "tag color". Usado no caminho de análise JSON.
Tag.exportable event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.exportable e adicionado como um campo de detecção com a chave "tag exportable". Usado no caminho de análise JSON.
Tag.hide_tag event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.hide_tag e adicionado como um campo de detecção com a chave "tag hide_tag". Usado no caminho de análise JSON.
Tag.id event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.id e adicionado como um campo de detecção com a chave "tag id". Usado no caminho de análise JSON.
Tag.is_custom_galaxy event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.is_custom_galaxy e adicionado como um campo de detecção com a chave "tag is_custom_galaxy". Usado no caminho de análise JSON.
Tag.is_galaxy event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.is_galaxy e adicionado como um campo de detecção com a chave "tag is_galaxy". Usado no caminho de análise JSON.
Tag.isinherited event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.isinherited e adicionado como um campo de detecção com a chave "tag isinherited". Usado no caminho de análise JSON.
Tag.name event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.name e adicionado como um campo de detecção com a chave "tag name". Usado no caminho de análise JSON.
Tag.numerical_value event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.numerical_value e adicionado como um campo de detecção com a chave "tag numerical_value". Usado no caminho de análise JSON.
Tag.user_id event.idm.entity.metadata.threat.detection_fields.value Mapeado diretamente de Tag.user_id e adicionado como um campo de detecção com a chave "tag user_id". Usado no caminho de análise JSON.
threat_level_id event.idm.entity.entity.labels.value Mapeado diretamente de threat_level_id e adicionado como um rótulo com a chave "threat_level_id". Usado no caminho de análise JSON.
timestamp event.idm.entity.metadata.collected_timestamp, event.idm.entity.metadata.interval.start_time Analisado como um carimbo de data/hora UNIX. Usado no caminho de análise CSV.
uuid event.idm.entity.metadata.vendor_name Definido como "MISP" pelo analisador. Definido como "MISP" pelo analisador. Definido como um valor padrão muito distante no futuro (253402300799 segundos desde a época). Determinado pelo analisador com base no campo type ou log_type. Pode ser "FILE", "DOMAIN_NAME", "IP_ADDRESS", "MUTEX", "RESOURCE" ou "USER". Pode ser derivado de Attribute.comment ou Attribute.value, dependendo do Attribute.type. Analisado de Attribute.value ou column5 se o tipo estiver relacionado ao IP. Analisado de Attribute.value ou column5 se o tipo for "ip-dst|port". Derivado de column3 na análise CSV ou Attribute.category na análise JSON. Derivado de column21 e column14 na análise CSV. Derivado de column8 ou first_seen. Derivado de last_seen. Derivado de description usando um padrão grok. Derivado de column16 ou definido como "MISP". Derivado de column18. Analisado de Attribute.value ou column5 se o tipo estiver relacionado ao IP. Analisado de Attribute.value ou column5 se o tipo for "ip-dst|port". Derivado de Attribute.value ou column5 se o tipo for "domain". Derivado do campo confidence, que é extraído do campo description. Os valores podem ser "HIGH_CONFIDENCE", "MEDIUM_CONFIDENCE", "LOW_CONFIDENCE" ou "UNKNOWN_CONFIDENCE". Mapeado diretamente do campo confidence, que é extraído do campo description. Mapeado diretamente do campo threat_level, que é derivado de column18 no caminho de análise CSV. Mapeado diretamente do campo feed_name, que é derivado de column16 no caminho de análise CSV. Derivado de column21 e column14 na análise CSV. Derivado de column6 na análise CSV ou Attribute.comment na análise JSON. Vários campos são adicionados como campos de detecção com as chaves correspondentes. Vários campos são adicionados como rótulos com as chaves correspondentes. Copiado do campo timestamp de nível superior no registro bruto.

Alterações

2023-09-26

  • Mapeou "published", "Feed.publish", "Org.name", "Attribute.id", "Attribute.event_id", "Attribute.to_ids", "Attribute.timestamp", "Attribute.comment", "Attribute.deleted", "Attribute.first_seen", todas as "tag.names" para "threat.detection_fields".

2023-08-17

  • Correção de bugs :
  • Adicionamos uma condição para realizar uma operação "gsub", que remove o barra invertida extra, somente quando o registro não é JSON.

2023-07-20

  • Correção de bugs :
  • O valor "metadata.entity_type" foi alterado para "MUTEX" quando o registro é do tipo mutex.

2023-07-04

  • Parser recém-criado.