
recog v3.1.30
Reconnaissance de modèles pour les hôtes, services et contenus
Recog : un framework de reconnaissance
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
- Division du dépôt
- Implémentations du langage de la bibliothèque Recog
- Installation
- Maturité
- Empreintes digitales
- Test des correspondances
- 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.
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
Implémentations du langage de la bibliothèque Recog
- Ruby : rapid7/recog-ruby
- Java : rapid7/recog-java
- Go : runZeroInc/recog-go
Parité des fonctionnalités
| Fonctionnalité ✨ | rapid7/recog-ruby | rapid7/recog-java | runZeroInc/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 | ✅ | ✅ | ✅ |
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
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.
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.