Zurück zu den Updates
New releaseAug 10, 2026

recog v3.1.30

Mustererkennung für Hosts, Dienste und Inhalte

Teilen

Recog: Ein Framework zur Erkennung

CI Workflow Verify Workflow

Recog ist ein Framework zur Identifizierung von Produkten, Diensten, Betriebssystemen und Hardware, indem Fingerprints mit Daten abgeglichen werden, die von verschiedenen Netzwerk-Sonden zurückgegeben werden. Mit Recog lassen sich auf einfache Weise nützliche Informationen aus Webserver-Bannern, SNMP-Systembeschreibungsfeldern und vielem mehr extrahieren.

Recog ist Open Source. Weitere Informationen finden Sie in der Datei LICENSE.

Inhaltsverzeichnis

  1. Aufteilung des Repositorys
    1. Umbenennung des Standard-Branches
  2. Sprachimplementierungen der Recog-Bibliothek
    1. Funktionsparität
  3. Installation
  4. Reifegrad
  5. Fingerprints
  6. Übereinstimmungen testen
    1. ftp_banners
    2. http_cookies
    3. http_servers
    4. favicons
    5. http_wwwauth
    6. tls_jarm
  7. Mitwirken

Aufteilung des Repositorys

Am 31. März 2022 wurden die Recog-Inhalte - XML-Fingerprint-Dateien und Dienstprogramme - von der Bibliotheksimplementierung des Recog-Frameworks getrennt. Das ursprüngliche Recog-Repository enthält nun die Recog-Inhalte, und das Recog-Ruby-Repository enthält die Ruby-Sprachimplementierung. Die Recog-Inhalte sind als Git-Submodul in Recog-Ruby enthalten und im Verzeichnis recog verschachtelt. Alle Recog-Gem-Versionen ab 3.0.0 nach der Trennung werden: 1. das XML-Fingerprint-Verzeichnis unter dem Verzeichnis recog enthalten und 2. nur das Werkzeug recog_match enthalten, da sich die anderen Werkzeuge auf die Fingerprint-Verwaltung konzentrieren.

^zurück nach oben

Umbenennung des Standard-Branches

Zusammen mit der Aufteilung des Repositorys wurde der Standard-Branch von master in main umbenannt. Alle Klone, die vor diesen Änderungen erstellt wurden, müssen in Ihrer lokalen Umgebung manuell aktualisiert werden. Wenn Sie einen Fork haben, navigieren Sie zu den Einstellungen Ihres Forks und folgen Sie den Anweisungen unter Umbenennen eines Branches, um den Standard-Branch in main zu ändern.

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

Optional können Sie den folgenden Befehl ausführen, um Tracking-Verweise auf den alten Branch-Namen zu entfernen.

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

Falls Sie zuvor den Upstream-Tracking-Branch upstream-master verwendet haben, führen Sie die folgenden Befehle aus, um den alten Branch zu entfernen und einen neuen Upstream-Tracking-Branch zu erstellen.

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

Optional können Sie den folgenden Befehl ausführen, um die Tracking-Verweise auf den alten Upstream-Branch-Namen zu entfernen.

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

^zurück nach oben

Sprachimplementierungen der Recog-Bibliothek

^zurück nach oben

Funktionsparität

Funktion ✨rapid7/recog-rubyrapid7/recog-javarunZeroInc/recog-go
CLI-Tool zur Fingerprint-Überprüfung✅✅✅
CLI-Tool für Fingerprint-Abgleich✅✅
Unterstützt base64-kodierte Beispiele✅✅✅
Unterstützt dateisystembasierte externe Beispiele✅✅✅
CPE-Parameterinterpolation beim Fingerprint-Abgleich✅✅✅

^zurück nach oben

Installation

Recog besteht sowohl aus XML-Fingerprint-Dateien als auch aus einer Reihe von Code, hauptsächlich in Ruby, der die Entwicklung, das Testen und die Verwendung der enthaltenen Fingerprints erleichtert. Um den enthaltenen Ruby-Code verwenden zu können, werden eine aktuelle Version von Ruby (2.31+) sowie Rubygems und das Gem bundler benötigt. Sobald diese Abhängigkeiten vorhanden sind, verwenden Sie die folgenden Befehle, um den neuesten Quellcode zu laden und alle zusätzlichen Abhängigkeiten zu installieren.

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

^zurück nach oben

Reifegrad

Bitte beachten Sie, dass die XML-Fingerprints selbst zwar recht stabil und gut getestet sind, die Ruby-Codebasis jedoch noch relativ neu ist und sich schnell ändern kann. Kontaktieren Sie uns bitte (research[at]rapid7.com), bevor Sie den Recog-Code in Produktionsprojekten einsetzen.

^zurück nach oben

Fingerprints

Die Fingerprints in Recog werden in XML-Dateien gespeichert, die jeweils dazu dienen, eine bestimmte Protokoll-Antwortzeichenkette oder ein bestimmtes Feld abzugleichen. Beispielsweise kann die Datei ssh_banners.xml das Betriebssystem, den Hersteller und manchmal auch das Hardware-Produkt ermitteln, indem sie die anfängliche Bannerzeichenkette des SSH-Daemons abgleicht.

Eine Fingerprint-Datei besteht aus einem XML-Dokument wie dem folgenden:

<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>

Die erste Zeile sollte immer aus der XML-Versionsdeklaration bestehen. Das erste Element sollte immer ein fingerprints-Block mit einem matches-Attribut sein, das angibt, welche Daten diese Fingerprint-Datei abgleichen soll. Das matches-Attribut hat normalerweise die Form protocol.field.

Innerhalb des fingerprints-Elements sollte es ein oder mehrere fingerprint-Elemente geben. Jedes fingerprint-Element muss ein pattern-Attribut enthalten, das den regulären Ausdruck enthält, der für den Abgleich der Daten verwendet werden soll. Ein optionales flags-Attribut kann angegeben werden, um zu steuern, wie der reguläre Ausdruck interpretiert werden soll. Weitere Informationen finden Sie in der Recog-Dokumentation zu FLAG_MAP.

Innerhalb des Fingerprints sollte ein description-Element eine menschenlesbare Zeichenkette enthalten, die diesen Fingerprint beschreibt.

Kategorien