Recherche Avancée dans l'Inventaire
Aperçu
Le langage avancé offre aux utilisateurs une syntaxe flexible de type Python pour interroger et filtrer les actifs avec précision et efficacité.
Le langage utilise une structure champ opérateur valeur pour construire des expressions de recherche, permettant des capacités avancées de découverte d'actifs.

Exemples de requêtes
- Requête basique:
type="android" - Correspondance Regex:
asset~=".*@mywebdomain\.com" - Requête ET/OU:
type="android" OR type="ios" - Requête combinée:
(type="android" OR type="ios") AND (owner="jhon.doe" OR owner~="prod-.*")
Syntaxe
Structure Champ-Opérateur-Valeur
Chaque requête est construite en utilisant les composants suivants :
- Champ : La propriété sur laquelle filtrer (ex.
type,owner,service.port). - Opérateur : Spécifie la condition (ex.
=,!=,<,>). - Valeur : La valeur à faire correspondre (ex.
android,443).
Opérateurs pris en charge
=: Égal.!=: Différent de.<: Inférieur à (pour les champs de date et numériques).>: Supérieur à (pour les champs de date et numériques).~=: Recherche par expression régulière (Regex).
Champs pris en charge
Vous trouverez ci-dessous une liste des champs pris en charge, ainsi que leurs descriptions et valeurs disponibles :
| Champ | Description | Opérateurs pris en charge | Valeurs possibles | Exemple |
|---|---|---|---|---|
ownership |
Différencier les actifs internes des services tiers et des acquisitions | =, != |
internal, third_party_service,acquisition,rejected |
ownership="internal" |
type |
Filtrer par type d'actif | =, != |
android, ios, subdomain, domain, ip, org, asn, tld, email, address, person, certificate, coordinates |
type="android" |
owner |
Filtrer par nom du propriétaire de l'actif | =, !=, ~= |
Toute chaîne ou expression régulière | owner="john.doe" or owner~="prod-.*" |
asset |
Rechercher par contenu de l'actif, comme l'adresse IP, le nom du package de l'application mobile ou la valeur du nom de domaine. | =, !=, ~= |
Toute chaîne ou expression régulière | asset="example.com" or asset~=".*@domain\.com" |
service.port |
Filtrer par port de service | =, !=, <, > |
Tout numéro de port | service.port=443 or service.port>80 |
service.protocol |
Filtrer par protocole de service | =, !=, ~= |
Toute chaîne ou expression régulière | service.protocol="https" |
whois.address |
Filtrer par adresse WHOIS | =, !=, ~= |
Toute chaîne ou expression régulière | whois.address="123 Main St" |
whois.email |
Filtrer par adresse e-mail WHOIS | =, !=, ~= |
Toute chaîne ou expression régulière | whois.email="admin@example.com" |
whois.org |
Filtrer par nom d'organisation WHOIS | =, !=, ~= |
Toute chaîne ou expression régulière | whois.org="Example Corp" |
dns.record |
Filtrer par type d'enregistrement DNS | =, != |
Toute chaîne ou expression régulière | dns.record="MX" |
dns.value |
Filtrer par valeur DNS | =, !=, ~= |
Toute chaîne ou expression régulière | dns.value="mail.example.com" |
dns.date |
Filtrer les actifs dont les enregistrements DNS ont été modifiés à une date précise | <, >, = |
Une chaîne de date valide doit être au format YYYY-MM-DD. | dns.date="2023-02-04" or dns.date>2023-01-01 |
fingerprint.name |
Filtrer par nom d'empreinte (fingerprint) | =, !=, ~= |
Toute chaîne ou expression régulière | fingerprint.name="Apache" |
fingerprint.detail |
Filtrer par détails de l'empreinte | =, !=, ~= |
Toute chaîne ou expression régulière | fingerprint.detail="2.4.41" |
fingerprint.version |
Filtrer par version de l'empreinte | =, !=, ~= |
Toute chaîne ou expression régulière | fingerprint.version="1.0.0" |
fingerprint.date |
Filtrer les actifs dont les empreintes ont été modifiées à une date précise | <, >, = |
Une chaîne de date valide doit être au format YYYY-MM-DD. | fingerprint.date="2023-02-04" |
certificate.serial |
Filtrer par numéro de série du certificat | =, !=, ~= |
Toute chaîne ou expression régulière | certificate.serial="123456" |
certificate.issuer |
Filtrer par émetteur du certificat | =, !=, ~= |
Toute chaîne ou expression régulière | certificate.issuer="Let's Encrypt" |
certificate.subject |
Filtrer par sujet du certificat | =, !=, ~= |
Toute chaîne ou expression régulière | certificate.subject="example.com" |
certificate.date |
Filtrer par date du certificat | <, >, = |
Une chaîne de date valide doit être au format YYYY-MM-DD. | certificate.date="2023-02-04" |
tag |
Filtrer par nom de tag | =, != |
Toute chaîne ou expression régulière | tag="production" |
value |
Filtrer par valeur de tag | =, != |
Toute chaîne ou expression régulière | value="critical" |
Requêtes combinées
Opérateurs logiques
Les requêtes combinées exploitent deux opérateurs logiques principaux :
AND: Combine des conditions qui doivent toutes deux être vraiesOR: Combine des conditions où au moins l'une doit être vraie
Regroupement avec des parenthèses
Les parenthèses () sont utilisées pour créer des regroupements logiques et contrôler l'ordre des opérations dans les requêtes complexes.
Exemples de composition de requêtes
-
Filtrage à conditions multiples
Trouve les actifs Android appartenant à John Doe.type="android" AND owner="john.doe" -
Regroupement de conditions complexes
Trouve les actifs mobiles (Android ou iOS) appartenant à John Doe ou correspondant à un modèle de propriétaire de production.(type="android" OR type="ios") AND (owner="john.doe" OR owner~="prod-.*") -
Filtrage de conditions imbriquées
Trouve les actifs de domaine avec les ports HTTP ou HTTPS.type="domain" AND (service.port="443" OR service.port=80)
Stratégies de filtrage avancées
-
Requêtes d'exclusion
Trouve les actifs de domaine qui n'appartiennent pas aux équipes de test ou de développement.type="domain" AND owner!="test" AND owner!="dev" -
Correspondance complexe basée sur Regex
Trouve les sous-domaines correspondant à plusieurs modèles regex.(asset~=".*internal\.com" OR asset~=".*external\.org") AND type="subdomain" -
Filtrage basé sur la date
Trouve les certificats émis après le 1er janvier 2023 par Let's Encrypt.certificate.date>"2023-01-01" AND certificate.issuer="Let\'s Encrypt"