Recopila registros de Qualys Vulnerability Management

Compatible con:

Este analizador controla los registros de Qualys Vulnerability Management en formato JSON o par clave-valor (KV). Extrae detalles de vulnerabilidades, información del host y metadatos de análisis, y los asigna a la UDM. El analizador también controla diferentes estructuras de registro, prioriza el análisis de KV y recurre a JSON si es necesario, y divide el array DetectionList en eventos de vulnerabilidad individuales.

Antes de comenzar

  • Asegúrate de tener una instancia de Google Security Operations.
  • Asegúrate de tener acceso con privilegios a la consola de Qualys VMDR.

Opcional: Crea un usuario de API dedicado en Qualys

  1. Accede a la consola de Qualys.
  2. Ve a Usuarios.
  3. Haz clic en Nuevo > Usuario.
  4. Ingresa la información general requerida para el usuario.
  5. Selecciona la pestaña Rol del usuario.
  6. Asegúrate de que el rol tenga seleccionada la casilla de verificación Acceso a la API.
  7. Haz clic en Guardar.

Identifica tu URL específica de la API de Qualys

Opción 1

Identifica tus URLs como se menciona en la identificación de la plataforma.

Opción 2

  1. Accede a la consola de Qualys.
  2. Ve a Ayuda > Acerca de.
  3. Desplázate para ver esta información en el Centro de operaciones de seguridad (SOC).
  4. Copia la URL de la API de Qualys.

Configura un feed en Google SecOps para transferir registros de VMs de Qulays

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de VM de Qualys).
  4. Selecciona API de terceros como el Tipo de origen.
  5. Selecciona Qualys VM como el tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifica valores para los siguientes parámetros de entrada:
    • Nombre de usuario: Ingresa el nombre de usuario.
    • Secreto: Ingresa la contraseña.
    • Ruta completa de la API: Proporciona la URL del servidor de la API de Qualys (por ejemplo, https://<qualys_base_url>/api/2.0/fo/asset/host/?action=list), en la que <qualys_base_url> es la URL base del servidor de la API de Qualys en el que se encuentra tu cuenta.
    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.
    • Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
DETECTION.FIRST_FOUND_DATETIME extensions.vulns.vulnerabilities.first_found Se analiza desde el campo DETECTION.FIRST_FOUND_DATETIME y se convierte el valor de la cadena en una marca de tiempo.
DETECTION.LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found Se analiza desde el campo DETECTION.LAST_FOUND_DATETIME y se convierte el valor de la cadena en una marca de tiempo.
DETECTION.QID extensions.vulns.vulnerabilities.name Concatena "QID: " con el valor de DETECTION.QID.
DETECTION.RESULTS extensions.vulns.vulnerabilities.description Se asigna directamente al campo de descripción. También se usa para extraer network.ip_protocol y principal.port con grok.
DETECTION.SEVERITY extensions.vulns.vulnerabilities.severity Se asigna desde DETECTION.SEVERITY. Los valores 0, 1 y 2 se convierten en “BAJO”, 3 y 4 en “MEDIO” y 5, 6 y 7 en “ALTO”.
DETECTION.STATUS extensions.vulns.vulnerabilities.about.labels Se agregó como una etiqueta con la clave "Estado de detección".
DETECTION.TYPE extensions.vulns.vulnerabilities.about.labels Se agregó como una etiqueta con la clave "Tipo de detección".
DNS principal.hostname Se asigna directamente a principal.hostname.
DNSData.DOMAIN principal.domain.name Se asigna directamente a principal.domain.name.
HOST.ASSET_ID principal.asset_id Concatena "QUALYS:" con el valor de HOST.ASSET_ID.
HOST.DNS principal.hostname Se asigna directamente a principal.hostname si DNS está vacío.
HOST.DNS_DATA.DOMAIN principal.domain.name Se asigna directamente a principal.domain.name si DNSData.DOMAIN está vacío.
HOST.ID metadata.product_log_id Se asigna directamente a metadata.product_log_id.
HOST.IP principal.ip Se asigna directamente a principal.ip si IP está vacío.
HOST.LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time Se analiza desde el campo HOST.LAST_SCAN_DATETIME y se convierte el valor de la cadena en una marca de tiempo.
HOST.LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time Se analiza desde el campo HOST.LAST_VM_SCANNED_DATE y se convierte el valor de la cadena en una marca de tiempo.
HOST.NETBIOS additional.fields Se agregó como etiqueta con la clave "HOST NETBIOS".
HOST.OS principal.platform_version Se asigna directamente a principal.platform_version si OS está vacío.
HOST.QG_HOSTID additional.fields Se agregó como etiqueta con la clave "HOST QG_HOSTID".
HOST.TRACKING_METHOD additional.fields Se agregó como una etiqueta con la clave "HOST TRACKING_METHOD".
HOST_ID principal.asset_id Concatena "QUALYS:" con el valor de HOST_ID.
ID metadata.product_log_id Se asigna directamente a metadata.product_log_id.
IP principal.ip Se asigna directamente a principal.ip.
LastScanDateTime extensions.vulns.vulnerabilities.scan_start_time Se analiza desde el campo LastScanDateTime y se convierte el valor de la cadena en una marca de tiempo.
LastVMAuthScanDuration additional.fields Se agregó como una etiqueta con la clave "LastVMAuthScanDuration".
LastVMScanDate extensions.vulns.vulnerabilities.scan_end_time Se analiza desde el campo LastVMScanDate y se convierte el valor de la cadena en una marca de tiempo.
LastVMScanDuration additional.fields Se agregó como una etiqueta con la clave "LastVMScanDuration".
LAST_FOUND_DATETIME extensions.vulns.vulnerabilities.last_found Se analiza desde el campo LAST_FOUND_DATETIME y se convierte el valor de la cadena en una marca de tiempo.
LAST_SCAN_DATETIME extensions.vulns.vulnerabilities.scan_start_time Se analiza desde el campo LAST_SCAN_DATETIME y se convierte el valor de la cadena en una marca de tiempo.
LAST_VM_SCANNED_DATE extensions.vulns.vulnerabilities.scan_end_time Se analiza desde el campo LAST_VM_SCANNED_DATE y se convierte el valor de la cadena en una marca de tiempo.
NETBIOS additional.fields Se agregó como una etiqueta con la clave "NETBIOS".
NetworkID additional.fields Se agregó como etiqueta con la clave "NetworkID".
NETWORK_ID additional.fields Se agregó como etiqueta con la clave "NetworkID".
OS principal.platform_version Se asigna directamente a principal.platform_version.
Os principal.platform_version Se asigna directamente a principal.platform_version si OS está vacío.
QID extensions.vulns.vulnerabilities.name Concatena "QID: " con el valor de QID.
QgHostID principal.asset_id Establece principal.asset_id en "Host Id:%{QgHostID}".
SEVERITY extensions.vulns.vulnerabilities.severity Se asigna desde SEVERITY. Los valores 0, 1 y 2 se convierten en “BAJO”, 3 y 4 en “MEDIO” y 5, 6 y 7 en “ALTO”.
TRACKING_METHOD additional.fields Se agregó como una etiqueta con la clave "TRACKING_METHOD".
TrackingMethod additional.fields Se agregó como una etiqueta con la clave "TRACKING_METHOD".
N/A metadata.vendor_name Se codifica de forma fija en “Qualys”.
N/A metadata.product_name Se codifica de forma fija en "Vulnerability Management".
N/A metadata.event_type Establece el valor en "SCAN_VULN_HOST" si _vulns no está vacío, en "STATUS_UPDATE" si prin_host o IP no están vacíos y en "GENERIC_EVENT" en caso contrario.
N/A metadata.log_type Se toma del campo log_type del registro sin procesar.
N/A principal.platform Se determina a partir de OS, Os o HOST.OS. Si alguno de ellos contiene "Linux", la plataforma se establece en "LINUX". Si alguno contiene "Windows", la plataforma se establece en "WINDOWS". Si alguno contiene "mac" o "IOS", la plataforma se establece en "MAC".
detection.DType extensions.vulns.vulnerabilities.about.resource.attribute.labels Se agregó como una etiqueta con la clave "Detection Type" dentro del array de vulnerabilidades para los eventos analizados desde el campo DetectionList.
detection.FirstFoundTime extensions.vulns.vulnerabilities.first_found Se analiza desde el campo detection.FirstFoundTime y convierte el valor de cadena en una marca de tiempo dentro del array de vulnerabilidades para los eventos analizados desde el campo DetectionList.
detection.LastFoundTime extensions.vulns.vulnerabilities.last_found Se analiza desde el campo detection.LastFoundTime y convierte el valor de cadena en una marca de tiempo dentro del array de vulnerabilidades para los eventos analizados desde el campo DetectionList.
detection.LastProcessedDatetime extensions.vulns.vulnerabilities.about.resource.attribute.labels Se agregó como una etiqueta con la clave "LastProcessedDatetime" dentro del array de vulnerabilidades para los eventos analizados del campo DetectionList.
detection.LastTestDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels Se agregó como una etiqueta con la clave "LastTestDateTime" dentro del array de vulnerabilidades para los eventos analizados desde el campo DetectionList.
detection.LastUpdateDateTime extensions.vulns.vulnerabilities.about.resource.attribute.labels Se agregó como una etiqueta con la clave "LastUpdateDateTime" dentro del array de vulnerabilidades para los eventos analizados del campo DetectionList.
detection.Qid extensions.vulns.vulnerabilities.name Concatena "QID: " con el valor de detection.Qid dentro del array de vulnerabilidades para los eventos analizados del campo DetectionList.
detection.Results extensions.vulns.vulnerabilities.description Se asigna directamente al campo de descripción dentro del array de vulnerabilidades para los eventos analizados del campo DetectionList. Las tabulaciones y los saltos de línea se reemplazan por espacios.
detection.Severity extensions.vulns.vulnerabilities.severity Se asigna desde detection.Severity. Los valores 0, 1 y 2 se convierten en "LOW"; 3 y 4 se convierten en "MEDIUM"; 5, 6 y 7 se convierten en "HIGH" dentro del array de vulnerabilidades para los eventos analizados desde el campo DetectionList.
detection.Status extensions.vulns.vulnerabilities.about.resource.attribute.labels Se agregó como una etiqueta con la clave "Estado de detección" dentro del array de vulnerabilidades para los eventos analizados del campo DetectionList.
detection.TimesFound extensions.vulns.vulnerabilities.about.resource.attribute.labels Se agregó como una etiqueta con la clave "TimesFound" dentro del array de vulnerabilidades para los eventos analizados del campo DetectionList.
timestamp metadata.event_timestamp, timestamp El campo timestamp del registro sin procesar se usa para la marca de tiempo del evento y la marca de tiempo de nivel superior.

Cambios

2023-10-27

  • Se agregó un bucle "for" para dividir los eventos cuando hay varios "QID".

2023-04-25

  • Se asignó "DetectionList.FirstFoundTime" a "extensions.vulns.vulnerabilities.first_found".
  • Se asignó "DetectionList.LastFoundTime" a "extensions.vulns.vulnerabilities.last_found".
  • Se asignó "DetectionList.TimesFound" a "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • Se asignó "DetectionList.LastTestDateTime" a "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • Se asignó "DetectionList.LastUpdateDateTime" a "extensions.vulns.vulnerabilities.about.resource.attribute.labels".
  • Se asignó "DetectionList.LastProcessedDatetime" a "extensions.vulns.vulnerabilities.about.resource.attribute.labels".

2023-01-23

  • Se asignaron los detalles del array "DetectionList" a "extensions.vulns.vulnerabilities".
  • Se asignó "DetectionList.Qid" a "extensions.vulns.vulnerabilities.name".
  • Se asignó "DetectionList.Severity" a "extensions.vulns.vulnerabilities.severity".
  • Se asignó "DetectionList.Results" a "extensions.vulns.vulnerabilities.description".
  • Se asignaron "DetectionList.Status" y "DetectionList.DType" a "extensions.vulns.vulnerabilities.about.resource.attribute.labels".

2022-09-29

  • Se asignó "ID" a "metadata.product_log_id".
  • Se asignaron "Netbios","TrackingMethod" y "NetworkID" a "additional.fields".
  • Se asignó "QgHostID" a "principal.asset_id".
  • Se asignó "Os" a "principal.platform_version".
  • Se agregó la verificación condicional de "vulnerabilidades".

2022-07-20

  • Se agregó la asignación para los siguientes campos:
  • "DETECTION.FIRST_FOUND_DATETIME" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.first_found".
  • "DETECTION.LAST_FOUND_DATETIME" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.last_found".
  • "HOST.LAST_VM_SCANNED_DATE" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_end_time".
  • "HOST.LAST_SCAN_DATETIME" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.scan_start_time".
  • "DETECTION.QID" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.name".
  • "DETECTION.SEVERITY" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.severity".
  • "DETECTION.TYPE" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.about.labels".
  • "DETECTION.STATUS" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.labels".
  • "DETECTION.RESULTS" se asignó a "event.idm.read_only_udm.extensions.vulns.vulnerabilities.description".
  • "HOST.DNS_DATA.DOMAIN" asignado a "event.idm.read_only_udm.principal.domain.name".
  • "HOST.ASSET_ID" se asignó a "event.idm.read_only_udm.principal.asset_id".
  • "HOST.IP" se asignó a "event.idm.read_only_udm.principal.ip".
  • “HOST.OS” se asignó a “event.idm.read_only_udm.principal.platform_version”.
  • "HOST.DNS" se asignó a "event.idm.read_only_udm.principal.hostname".
  • "HOST.QG_HOSTID" se asignó a "event.idm.read_only_udm.additional.fields".
  • "HOST.NETBIOS" se asignó a "event.idm.read_only_udm.additional.fields".
  • "HOST.TRACKING_METHOD" asignado a "event.idm.read_only_udm.additional.fields".