Coletar registros do Qualys Vulnerability Management
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
- Faça login no console da Qualys.
- Acesse Usuários.
- Clique em Novo > Usuário.
- Insira as Informações gerais necessárias para o usuário.
- Selecione a guia Função do usuário.
- Verifique se a caixa de seleção Acesso à API está marcada.
- 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
- Faça login no console da Qualys.
- Acesse Ajuda > Sobre.
- Role a tela para conferir essas informações na Central de operações de segurança (SOC).
- Copie o URL da API Qualys.
Configurar um feed no Google SecOps para processar os registros de VM do Qulay
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Qualys VM Logs).
- Selecione API de terceiros como o Tipo de origem.
- Selecione Qualys VM como o tipo de registro.
- Clique em Próxima.
- 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.
- Clique em Próxima.
- 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".