Volver a actualizaciones
Nuevo releaseAug 10, 2026

recog v3.1.30

Reconocimiento de patrones para hosts, servicios y contenido

Compartir

Recog: Un Framework de Reconocimiento

CI Workflow Verify Workflow

Recog es un framework para identificar productos, servicios, sistemas operativos y hardware mediante la comparación de huellas contra los datos devueltos por diversas sondas de red. Recog facilita la extracción de información útil de los banners de servidores web, los campos de descripción del sistema SNMP y mucho más.

Recog es de código abierto; consulte el archivo LICENSE para obtener más información.

Tabla de contenido

  1. División del repositorio
    1. Cambio de nombre de la rama por defecto
  2. Implementaciones de la librería Recog en distintos lenguajes
    1. Paridad de características
  3. Instalación
  4. Madurez
  5. Huellas
  6. Probar coincidencias
    1. ftp_banners
    2. http_cookies
    3. http_servers
    4. favicons
    5. http_wwwauth
    6. tls_jarm
  7. Contribuciones

División del repositorio

El 31 de marzo de 2022, el contenido de Recog -los archivos XML de huellas y las utilidades- se separó de la implementación de la librería del framework Recog. El repositorio original Recog contiene ahora el contenido de Recog, y el repositorio Recog-Ruby contiene la implementación en Ruby. El contenido de Recog se incluye en Recog-Ruby como un submódulo de git y se encuentra anidado bajo el directorio recog. Todas las versiones de la gema Recog posteriores a la división, iguales o superiores a la 3.0.0, harán lo siguiente: 1. contendrán el directorio de huellas XML bajo el directorio recog, y 2. solo incluirán la herramienta recog_match, ya que las demás herramientas están enfocadas en la gestión de huellas.

^volver arriba

Cambio de nombre de la rama por defecto

Junto con la división del repositorio, la rama por defecto pasó a llamarse main en lugar de master. Cualquier clon creado antes de estos cambios deberá actualizarse manualmente en su entorno local. Si tiene un fork, navegue a la configuración de su fork y siga las instrucciones sobre cómo renombrar una rama para cambiar la rama por defecto a main.

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

Opcionalmente, ejecute el siguiente comando para eliminar las referencias de seguimiento al nombre de la rama anterior.

# dry-run to confirm stale references that will be deleted before proceeding
git remote prune origin --dry-run
git remote prune origin

Si anteriormente utilizó la rama de seguimiento upstream upstream-master, ejecute los siguientes comandos para eliminar la rama antigua y crear una nueva rama de seguimiento upstream.

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

Opcionalmente, ejecute el siguiente comando para eliminar las referencias de seguimiento al nombre de la rama upstream anterior.

# dry-run to confirm stale references that will be deleted before proceeding
git remote prune upstream --dry-run
git remote prune upstream

^volver arriba

Implementaciones de la librería Recog en distintos lenguajes

^volver arriba

Paridad de características

Característica ✨rapid7/recog-rubyrapid7/recog-javarunZeroInc/recog-go
Herramienta CLI de verificación de huellas✅✅✅
Herramienta CLI de coincidencia de huellas✅✅
Admite ejemplos codificados en base64✅✅✅
Admite ejemplos externos basados en el sistema de archivos✅✅✅
Interpolación de parámetros CPE en coincidencia de huellas✅✅✅

^volver arriba

Instalación

Recog consta de archivos XML de huellas y de un conjunto de código, principalmente en Ruby, que facilita el desarrollo, las pruebas y el uso de las huellas contenidas. Para utilizar el código Ruby incluido, se requiere una versión reciente de Ruby (2.31+) junto con Rubygems y la gema bundler. Una vez instaladas estas dependencias, use los siguientes comandos para obtener el código fuente más reciente e instalar las dependencias adicionales.

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

^volver arriba

Madurez

Tenga en cuenta que, aunque las huellas XML son bastante estables y están bien probadas, el código base de Ruby es todavía bastante nuevo y puede cambiar rápidamente. Comuníquese con nosotros (research[at]rapid7.com) antes de utilizar el código de Recog en cualquier proyecto de producción.

^volver arriba

Huellas

Las huellas de Recog se almacenan en archivos XML, cada uno diseñado para coincidir con una cadena o campo de respuesta de protocolo específico. Por ejemplo, el archivo ssh_banners.xml puede determinar el sistema operativo, el fabricante y, a veces, el producto de hardware mediante la coincidencia con la cadena inicial del banner del demonio SSH.

Un archivo de huellas consta de un documento XML como el siguiente:

<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 primera línea debe contener siempre la declaración de versión XML. El primer elemento debe ser siempre un bloque fingerprints con un atributo matches que indique con qué datos debe coincidir este archivo de huellas. El atributo matches normalmente tiene la forma protocol.field.

Dentro del elemento fingerprints debe haber uno o más elementos fingerprint. Cada fingerprint debe contener un atributo pattern, que contiene la expresión regular que se usará para comparar contra los datos. Se puede especificar un atributo opcional flags para controlar cómo se interpreta la expresión regular. Consulte la documentación de Recog para FLAG_MAP para obtener más información.

Dentro de la huella, un elemento description debe contener una cadena legible por humanos que describa esta huella.

Categorías