Aller au contenu

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. advanced_search_syntax_example.png

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 vraies
  • OR : 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

  1. Filtrage à conditions multiples

    type="android" AND owner="john.doe"
    
    Trouve les actifs Android appartenant à John Doe.
  2. Regroupement de conditions complexes

    (type="android" OR type="ios") AND (owner="john.doe" OR owner~="prod-.*")
    
    Trouve les actifs mobiles (Android ou iOS) appartenant à John Doe ou correspondant à un modèle de propriétaire de production.
  3. Filtrage de conditions imbriquées

    type="domain" AND (service.port="443" OR service.port=80)
    
    Trouve les actifs de domaine avec les ports HTTP ou HTTPS.

Stratégies de filtrage avancées

  1. Requêtes d'exclusion

    type="domain" AND owner!="test" AND owner!="dev"
    
    Trouve les actifs de domaine qui n'appartiennent pas aux équipes de test ou de développement.
  2. Correspondance complexe basée sur Regex

    (asset~=".*internal\.com" OR asset~=".*external\.org") AND type="subdomain"
    
    Trouve les sous-domaines correspondant à plusieurs modèles regex.
  3. Filtrage basé sur la date

    certificate.date>"2023-01-01" AND certificate.issuer="Let\'s Encrypt"
    
    Trouve les certificats émis après le 1er janvier 2023 par Let's Encrypt.