Búsqueda avanzada en el inventario
Descripción general
El lenguaje avanzado ofrece a los usuarios una sintaxis flexible similar a Python para consultar y filtrar activos con precisión y eficacia.
El lenguaje utiliza una estructura de campo operador valor para construir expresiones de búsqueda, lo que permite capacidades avanzadas de descubrimiento de activos.

Ejemplos de consultas
- Consulta básica:
type="android" - Coincidencia Regex:
asset~=".*@mywebdomain\.com" - Consulta AND/OR:
type="android" OR type="ios" - Consulta combinada:
(type="android" OR type="ios") AND (owner="jhon.doe" OR owner~="prod-.*")
Sintaxis
Estructura Campo-Operador-Valor
Cada consulta se construye utilizando los siguientes componentes:
- Campo: La propiedad por la cual filtrar (por ejemplo,
type,owner,service.port). - Operador: Especifica la condición (por ejemplo,
=,!=,<,>). - Valor: El valor a coincidir (por ejemplo,
android,443).
Operadores compatibles
=: Igual a.!=: Distinto de.<: Menor que (para campos de fecha y numéricos).>: Mayor que (para campos de fecha y numéricos).~=: Búsqueda por expresión regular (Regex).
Campos compatibles
A continuación se muestra una lista de los campos compatibles, junto con sus descripciones y valores disponibles:
| Campo | Descripción | Operadores compatibles | Valores posibles | Ejemplo |
|---|---|---|---|---|
ownership |
Diferenciar entre activos internos, de adquisiciones y servicios de terceros | =, != |
internal, third_party_service,acquisition,rejected |
ownership="internal" |
type |
Filtrar por tipo de activo | =, != |
android, ios, subdomain, domain, ip, org, asn, tld, email, address, person, certificate, coordinates |
type="android" |
owner |
Filtrar por nombre del propietario del activo | =, !=, ~= |
Cualquier cadena o regex | owner="john.doe" or owner~="prod-.*" |
asset |
Buscar por contenido del activo, como dirección IP, nombre del paquete de la aplicación móvil o valor del nombre de dominio. | =, !=, ~= |
Cualquier cadena o regex | asset="example.com" or asset~=".*@domain\.com" |
service.port |
Filtrar por puerto del servicio | =, !=, <, > |
Cualquier número de puerto | service.port=443 or service.port>80 |
service.protocol |
Filtrar por protocolo del servicio | =, !=, ~= |
Cualquier cadena o regex | service.protocol="https" |
whois.address |
Filtrar por dirección WHOIS | =, !=, ~= |
Cualquier cadena o regex | whois.address="123 Main St" |
whois.email |
Filtrar por correo electrónico WHOIS | =, !=, ~= |
Cualquier cadena o regex | whois.email="admin@example.com" |
whois.org |
Filtrar por nombre de la organización WHOIS | =, !=, ~= |
Cualquier cadena o regex | whois.org="Example Corp" |
dns.record |
Filtrar por tipo de registro DNS | =, != |
Cualquier cadena o regex | dns.record="MX" |
dns.value |
Filtrar por valor DNS | =, !=, ~= |
Cualquier cadena o regex | dns.value="mail.example.com" |
dns.date |
Filtrar activos con registros DNS modificados en una fecha específica | <, >, = |
Una cadena de fecha válida debe tener el formato YYYY-MM-DD. | dns.date="2023-02-04" or dns.date>2023-01-01 |
fingerprint.name |
Filtrar por nombre de la huella digital (fingerprint) | =, !=, ~= |
Cualquier cadena o regex | fingerprint.name="Apache" |
fingerprint.detail |
Filtrar por detalles de la huella digital | =, !=, ~= |
Cualquier cadena o regex | fingerprint.detail="2.4.41" |
fingerprint.version |
Filtrar por versión de la huella digital | =, !=, ~= |
Cualquier cadena o regex | fingerprint.version="1.0.0" |
fingerprint.date |
Filtrar activos con huellas digitales modificadas en una fecha específica | <, >, = |
Una cadena de fecha válida debe tener el formato YYYY-MM-DD. | fingerprint.date="2023-02-04" |
certificate.serial |
Filtrar por número de serie del certificado | =, !=, ~= |
Cualquier cadena o regex | certificate.serial="123456" |
certificate.issuer |
Filtrar por emisor del certificado | =, !=, ~= |
Cualquier cadena o regex | certificate.issuer="Let's Encrypt" |
certificate.subject |
Filtrar por sujeto del certificado | =, !=, ~= |
Cualquier cadena o regex | certificate.subject="example.com" |
certificate.date |
Filtrar por fecha del certificado | <, >, = |
Una cadena de fecha válida debe tener el formato YYYY-MM-DD. | certificate.date="2023-02-04" |
tag |
Filtrar por nombre de la etiqueta (tag) | =, != |
Cualquier cadena o regex | tag="production" |
value |
Filtrar por valor de la etiqueta | =, != |
Cualquier cadena o regex | value="critical" |
Consultas combinadas
Operadores lógicos
Las consultas combinadas aprovechan dos operadores lógicos principales:
AND: Combina condiciones en las que ambas deben ser verdaderasOR: Combina condiciones en las que al menos una debe ser verdadera
Agrupación con paréntesis
Los paréntesis () se utilizan para crear agrupaciones lógicas y controlar el orden de las operaciones en consultas complejas.
Ejemplos de composición de consultas
-
Filtrado de múltiples condiciones
Encuentra activos Android propiedad de John Doe.type="android" AND owner="john.doe" -
Agrupación de condiciones complejas
Encuentra activos móviles (Android o iOS) propiedad de John Doe o que coincidan con un patrón de propietario de producción.(type="android" OR type="ios") AND (owner="john.doe" OR owner~="prod-.*") -
Filtrado de condiciones anidadas
Encuentra activos de dominio con puertos HTTP o HTTPS.type="domain" AND (service.port="443" OR service.port=80)
Estrategias de filtrado avanzado
-
Consultas de exclusión
Encuentra activos de dominio que no son propiedad de equipos de prueba o desarrollo.type="domain" AND owner!="test" AND owner!="dev" -
Coincidencia compleja basada en Regex
Encuentra subdominios que coincidan con múltiples patrones regex.(asset~=".*internal\.com" OR asset~=".*external\.org") AND type="subdomain" -
Filtrado basado en fechas
Encuentra certificados emitidos después del 1 de enero de 2023 por Let's Encrypt.certificate.date>"2023-01-01" AND certificate.issuer="Let\'s Encrypt"