Coletar registros do Qualys Vulnerability Management

Compatível com:

Esse analisador processa os registros do Qualys Vulnerability Management nos formatos chave-valor (KV) ou JSON. Ele extrai detalhes de vulnerabilidade, informações do host e metadados de verificação, mapeando-os para o UDM. O analisador também processa diferentes estruturas de registro, priorizando a análise KV e voltando para JSON, se necessário, e divide a matriz DetectionList em eventos de vulnerabilidade individuais.

Antes de começar

  • Verifique se você tem uma instância do Google Security Operations.
  • Verifique se você tem acesso privilegiado ao console do Qualys VMDR.

Opcional: crie um usuário de API dedicado no Qualys

  1. Faça login no console da Qualys.
  2. Acesse Usuários.
  3. Clique em Novo > Usuário.
  4. Insira as Informações gerais necessárias para o usuário.
  5. Selecione a guia Função do usuário.
  6. Verifique se a caixa de seleção Acesso à API está marcada.
  7. Clique em Salvar.

Identifique o URL específico da API Qualys

Opção 1

Identifique seus URLs conforme mencionado na identificação da plataforma.

Opção 2

  1. Faça login no console da Qualys.
  2. Acesse Ajuda > Sobre.
  3. Role a tela para conferir essas informações na Central de operações de segurança (SOC).
  4. Copie o URL da API Qualys.

Configurar um feed no Google SecOps para processar os registros de VM do Qulay

  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, Qualys VM Logs).
  4. Selecione API de terceiros como o Tipo de origem.
  5. Selecione Qualys VM como o tipo de registro.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:
    • Nome de usuário: insira o nome de usuário.
    • Secret: insira a senha.
    • Caminho completo da API: forneça o URL do servidor da API Qualys (por exemplo, https://<qualys_base_url>/api/2.0/fo/asset/host/?action=list), em que <qualys_base_url> é o URL base do servidor da API Qualys em que sua conta está localizada.
    • 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.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
DETECTION.FIRST_FOUND_DATETIME extensions.vulns.vulnerabilities.first_found Analisado do campo DETECTION.FIRST_FOUND_DATETIME, convertendo o valor da string em um carimbo de data/hora.
DETECTION.LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found Analisado do campo DETECTION.LAST_FOUND_DATETIME, convertendo o valor da string em um carimbo de data/hora.
DETECTION.QID extensions.vulns.vulnerabilities.name Concatena "QID: " com o valor de DETECTION.QID.
DETECTION.RESULTS extensions.vulns.vulnerabilities.description É mapeado diretamente para o campo de descrição. Também é usado para extrair network.ip_protocol e principal.port usando grok.
DETECTION.SEVERITY extensions.vulns.vulnerabilities.severity Mapeado de DETECTION.SEVERITY. Os valores 0, 1 e 2 se tornam "BAIXO"; 3 e 4 se tornam "MÉDIO"; 5, 6 e 7 se tornam "ALTO".
DETECTION.STATUS extensions.vulns.vulnerabilities.about.labels Adicionado como um rótulo com a chave "Status de detecção".
DETECTION.TYPE extensions.vulns.vulnerabilities.about.labels Adicionado como um rótulo com a chave "Detection type".
DNS principal.hostname Mapeia diretamente para principal.hostname.
DNSData.DOMAIN principal.domain.name Mapeia diretamente para principal.domain.name.
HOST.ASSET_ID principal.asset_id Concatena "QUALYS:" com o valor de HOST.ASSET_ID.
HOST.DNS principal.hostname Mapeia diretamente para principal.hostname se DNS estiver vazio.
HOST.DNS_DATA.DOMAIN principal.domain.name Mapeia diretamente para principal.domain.name se DNSData.DOMAIN estiver vazio.
HOST.ID metadata.product_log_id Mapeia diretamente para metadata.product_log_id.
HOST.IP principal.ip Mapeia diretamente para principal.ip se IP estiver vazio.
HOST.LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time Analisado do campo HOST.LAST_SCAN_DATETIME, convertendo o valor da string em um carimbo de data/hora.
HOST.LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time Analisado do campo HOST.LAST_VM_SCANNED_DATE, convertendo o valor da string em um carimbo de data/hora.
HOST.NETBIOS additional.fields Adicionado como um rótulo com a chave "HOST NETBIOS".
HOST.OS principal.platform_version Mapeia diretamente para principal.platform_version se OS estiver vazio.
HOST.QG_HOSTID additional.fields Adicionado como um rótulo com a chave "HOST QG_HOSTID".
HOST.TRACKING_METHOD additional.fields Adicionado como um rótulo com a chave "HOST TRACKING_METHOD".
HOST_ID principal.asset_id Concatena "QUALYS:" com o valor de HOST_ID.
ID metadata.product_log_id Mapeia diretamente para metadata.product_log_id.
IP principal.ip Mapeia diretamente para principal.ip.
LastScanDateTime extensions.vulns.vulnerabilities.scan_start_time Analisado do campo LastScanDateTime, convertendo o valor da string em um carimbo de data/hora.
LastVMAuthScanDuration additional.fields Adicionado como um rótulo com a chave "LastVMAuthScanDuration".
LastVMScanDate extensions.vulns.vulnerabilities.scan_end_time Analisado do campo LastVMScanDate, convertendo o valor da string em um carimbo de data/hora.
LastVMScanDuration additional.fields Adicionado como um rótulo com a chave "LastVMScanDuration".
LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found Analisado do campo LAST_FOUND_DATETIME, convertendo o valor da string em um carimbo de data/hora.
LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time Analisado do campo LAST_SCAN_DATETIME, convertendo o valor da string em um carimbo de data/hora.
LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time Analisado do campo LAST_VM_SCANNED_DATE, convertendo o valor da string em um carimbo de data/hora.
NETBIOS additional.fields Adicionado como um rótulo com a chave "NETBIOS".
NetworkID additional.fields Adicionado como um rótulo com a chave "NetworkID".
NETWORK_ID additional.fields Adicionado como um rótulo com a chave "NetworkID".
OS principal.platform_version Mapeia diretamente para principal.platform_version.
Os principal.platform_version Mapeia diretamente para principal.platform_version se OS estiver vazio.
QID extensions.vulns.vulnerabilities.name Concatena "QID: " com o valor de QID.
QgHostID principal.asset_id Define principal.asset_id como "ID do host:%{QgHostID}".
SEVERITY extensions.vulns.vulnerabilities.severity Mapeado de SEVERITY. Os valores 0, 1 e 2 se tornam "BAIXO"; 3 e 4 se tornam "MÉDIO"; 5, 6 e 7 se tornam "ALTO".
TRACKING_METHOD additional.fields Adicionado como um rótulo com a chave "TRACKING_METHOD".
TrackingMethod additional.fields Adicionado como um rótulo com a chave "TRACKING_METHOD".
N/A metadata.vendor_name Fixado em "Qualys".
N/A metadata.product_name Fixado em "Gerenciamento de vulnerabilidades".
N/A metadata.event_type Defina como "SCAN_VULN_HOST" se _vulns não estiver vazio, "STATUS_UPDATE" se prin_host ou IP não estiverem vazios e "GENERIC_EVENT" caso contrário.
N/A metadata.log_type Extraídos do campo log_type do registro bruto.
N/A principal.platform Determinado por OS, Os ou HOST.OS. Se algum deles contiver "Linux", a plataforma será definida como "LINUX". Se algum deles contiver "Windows", a plataforma será definida como "WINDOWS". Se algum deles contiver "mac" ou "iOS", a plataforma será definida como "MAC".
detection.DType extensions.vulns.vulnerabilities.about.resource.attribute.labels Foi adicionado como um rótulo com a chave "Detection Type" na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.FirstFoundTime extensions.vulns.vulnerabilities.first_found Analisado do campo detection.FirstFoundTime, convertendo o valor da string em um carimbo de data/hora na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.LastFoundTime extensions.vulns.vulnerabilities.last_found Analisado do campo detection.LastFoundTime, convertendo o valor da string em um carimbo de data/hora na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.LastProcessedDatetime extensions.vulns.vulnerabilities.about.resource.attribute.labels Adicionado como um rótulo com a chave "LastProcessedDatetime" na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.LastTestDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels Adicionado como um rótulo com a chave "LastTestDateTime" na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.LastUpdateDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels Adicionado como um rótulo com a chave "LastUpdateDateTime" na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.Qid extensions.vulns.vulnerabilities.name Concatena "QID: " com o valor de detection.Qid na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.Results extensions.vulns.vulnerabilities.description É mapeado diretamente para o campo de descrição no array de vulnerabilidades para eventos analisados do campo DetectionList. As guias e as novas linhas são substituídas por espaços.
detection.Severity extensions.vulns.vulnerabilities.severity Mapeado de detection.Severity. Os valores 0, 1 e 2 se tornam "BAIXA"; 3, 4 se tornam "MÉDIA"; 5, 6, 7 se tornam "ALTA" no array de vulnerabilidades para eventos analisados do campo DetectionList.
detection.Status extensions.vulns.vulnerabilities.about.resource.attribute.labels Foi adicionado como um rótulo com a chave "Status de detecção" na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
detection.TimesFound extensions.vulns.vulnerabilities.about.resource.attribute.labels Adicionado como um rótulo com a chave "TimesFound" na matriz de vulnerabilidades para eventos analisados do campo DetectionList.
timestamp metadata.event_timestamp, timestamp O campo timestamp do registro bruto é usado para o carimbo de data/hora do evento e o de nível superior.

Alterações

2023-10-27

  • Foi adicionado um loop "for" para dividir os eventos quando há vários "QIDs".

2023-04-25

  • "DetectionList.FirstFoundTime" foi mapeado para "extensions.vulns.vulnerabilities.first_found".
  • "DetectionList.LastFoundTime" foi mapeado para "extensions.vulns.vulnerabilities.last_found".
  • "DetectionList.TimesFound" foi mapeado para "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • "DetectionList.LastTestDateTime" foi mapeado para "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • "DetectionList.LastUpdateDateTime" foi mapeado para "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • "DetectionList.LastProcessedDatetime" foi mapeado para "extensions.vulns.vulnerabilities.about.resource.attribute.labels".

2023-01-23

  • Os detalhes da matriz "DetectionList" foram mapeados para "extensions.vulns.vulnerabilities".
  • Mapeamos "DetectionList.Qid" para "extensions.vulns.vulnerabilities.name".
  • Mapeamos "DetectionList.Severity" para "extensions.vulns.vulnerabilities.severity".
  • "DetectionList.Results" foi mapeado para "extensions.vulns.vulnerabilities.description".
  • "DetectionList.Status" e "DetectionList.DType" foram mapeados para "extensions.vulns.vulnerabilities.about.resource.attribute.labels".

29/09/2022

  • O "ID" foi mapeado para "metadata.product_log_id".
  • "Netbios","TrackingMethod" e "NetworkID" foram mapeados para "additional.fields".
  • O QgHostID foi mapeado para principal.asset_id.
  • "Os" foi mapeado para "principal.platform_version".
  • Foi adicionada uma verificação condicional para "vulns".

2022-07-20

  • Mapeamento adicionado para os seguintes campos:
  • "DETECTION.FIRST_FOUND_DATETIME" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.first_found".
  • "DETECTION.LAST_FOUND_DATETIME" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.last_found".
  • "HOST.LAST_VM_SCANNED_DATE" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_end_time".
  • "HOST.LAST_SCAN_DATETIME" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time".
  • "DETECTION.QID" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.name".
  • "DETECTION.SEVERITY" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.severity".
  • "DETECTION.TYPE" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.about.labels".
  • "DETECTION.STATUS" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.labels".
  • "DETECTION.RESULTS" mapeado para "event.idm.read_only_udm.extensions.vulns.vulnerabilities.description".
  • "HOST.DNS_DATA.DOMAIN" mapeado para "event.idm.read_only_udm.principal.domain.name".
  • "HOST.ASSET_ID" mapeado para "event.idm.read_only_udm.principal.asset_id".
  • "HOST.IP" mapeado para "event.idm.read_only_udm.principal.ip".
  • "HOST.OS" mapeado para "event.idm.read_only_udm.principal.platform_version".
  • "HOST.DNS" mapeado para "event.idm.read_only_udm.principal.hostname".
  • "HOST.QG_HOSTID" mapeado para "event.idm.read_only_udm.additional.fields".
  • "HOST.NETBIOS" mapeado para "event.idm.read_only_udm.additional.fields".
  • "HOST.TRACKING_METHOD" mapeado para "event.idm.read_only_udm.additional.fields".