Retour aux mises à jour
New releaseAug 10, 2026

recog v3.1.30

Reconnaissance de modèles pour les hôtes, services et contenus

Partager

Recog : un framework de reconnaissance

CI Workflow Verify Workflow

Recog est un framework pour identifier les produits, services, systèmes d'exploitation et matériels en faisant correspondre des empreintes digitales avec les données renvoyées par diverses sondes réseau. Recog simplifie l'extraction d'informations utiles à partir de bannières de serveurs web, de champs de description système SNMP, et bien plus encore.

Recog est open source, veuillez consulter le fichier LICENSE pour plus d'informations.

Table des matières

  1. Division du dépôt
    1. Renommage de la branche par défaut
  2. Implémentations du langage de la bibliothèque Recog
    1. Parité des fonctionnalités
  3. Installation
  4. Maturité
  5. Empreintes digitales
  6. Test des correspondances
    1. ftp_banners
    2. http_cookies
    3. http_servers
    4. favicons
    5. http_wwwauth
    6. tls_jarm
  7. Contribuer

Division du dépôt

Le 31 mars 2022, le contenu de Recog (fichiers d'empreintes XML et utilitaires) a été séparé de l'implémentation de la bibliothèque du framework Recog. Le dépôt d'origine Recog contient désormais le contenu Recog et le dépôt Recog-Ruby contient l'implémentation en langage Ruby. Le contenu Recog est inclus dans Recog-Ruby en tant que sous-module git et est imbriqué sous le répertoire recog. Toutes les versions de la gemme Recog post-split égales ou supérieures à 3.0.0 : 1. contiendront le répertoire d'empreintes XML sous le répertoire recog, et 2. incluront uniquement l'outil recog_match car les autres outils sont axés sur la gestion des empreintes.

^retour en haut

Renommage de la branche par défaut

Parallèlement à la division du dépôt, la branche par défaut a été renommée de master à main. Tout clone créé avant ces modifications devra être mis à jour manuellement dans votre environnement local. Si vous avez un fork, accédez aux paramètres de votre fork et suivez les instructions sur le renommage d'une branche pour changer la branche par défaut en main.

git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a

En option, exécutez la commande suivante pour supprimer les références de suivi de l'ancien nom de branche.

# dry-run pour confirmer les références obsolètes qui seront supprimées avant de continuer
git remote prune origin --dry-run
git remote prune origin

Si vous utilisiez auparavant la branche de suivi amont upstream-master, exécutez les commandes suivantes pour supprimer l'ancienne branche et créer une nouvelle branche de suivi amont.

git branch -d upstream-master
git checkout -b upstream-main --track upstream/main

En option, exécutez la commande suivante pour supprimer les références de suivi de l'ancien nom de branche amont.

# dry-run pour confirmer les références obsolètes qui seront supprimées avant de continuer
git remote prune upstream --dry-run
git remote prune upstream

^retour en haut

Implémentations du langage de la bibliothèque Recog

^retour en haut

Parité des fonctionnalités

Fonctionnalité ✨rapid7/recog-rubyrapid7/recog-javarunZeroInc/recog-go
Outil en ligne de commande de vérification des empreintes✅✅✅
Outil en ligne de commande de correspondance des empreintes✅✅
Prise en charge des exemples encodés en base64✅✅✅
Prise en charge des exemples externes basés sur le système de fichiers✅✅✅
Interpolation des paramètres CPE de correspondance des empreintes✅✅✅

^retour en haut

Installation

Recog se compose à la fois de fichiers d'empreintes XML et d'un ensemble de code, principalement en Ruby, qui facilite le développement, les tests et l'utilisation des empreintes contenues. Pour utiliser le code Ruby inclus, une version récente de Ruby (2.31+) est requise, ainsi que Rubygems et la gemme bundler. Une fois ces dépendances en place, utilisez les commandes suivantes pour récupérer le dernier code source et installer les dépendances supplémentaires.

$ git clone [email protected]:rapid7/recog.git
$ cd recog
$ bundle install

^retour en haut

Maturité

Veuillez noter que bien que les empreintes XML elles-mêmes soient assez stables et bien testées, la base de code Ruby est encore relativement nouvelle et susceptible de changer rapidement. Veuillez nous contacter (research[at]rapid7.com) avant d'utiliser le code Recog dans des projets de production.

^retour en haut

Empreintes digitales

Les empreintes digitales de Recog sont stockées dans des fichiers XML, chacun étant conçu pour correspondre à une chaîne de réponse ou un champ de protocole spécifique. Par exemple, le fichier ssh_banners.xml peut déterminer le système d'exploitation, le fournisseur, et parfois le produit matériel en faisant correspondre la chaîne de bannière initiale du démon SSH.

Un fichier d'empreintes se compose d'un document XML comme celui-ci :

<fingerprints matches="ssh.banner">
  <fingerprint pattern="^RomSShell_([\d\.]+)$">
    <description>Allegro RomSShell SSH</description>
    <example service.version="4.62">RomSShell_4.62</example>
    <param pos="0" name="service.vendor" value="Allegro"/>
    <param pos="0" name="service.product" value="RomSShell"/>
    <param pos="1" name="service.version"/>
  </fingerprint>
</fingerprints>

La première ligne doit toujours consister en la déclaration de version XML. Le premier élément doit toujours être un bloc fingerprints avec un attribut matches indiquant à quelles données ce fichier d'empreintes est censé correspondre. L'attribut matches est généralement sous la forme protocol.field.

À l'intérieur de l'élément fingerprints, il doit y avoir un ou plusieurs éléments fingerprint. Chaque fingerprint doit contenir un attribut pattern, qui contient l'expression régulière à utiliser pour la correspondance avec les données. Un attribut optionnel flags peut être spécifié pour contrôler la façon dont l'expression régulière est interprétée. Voir la documentation Recog pour FLAG_MAP pour plus d'informations.

Catégories