Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
fingerprintx — Eigenständiges Dienstprogramm zur Erkennung von Diensten auf offenen Ports! | Kitploit
Tools/GitHubGitHub/praetorian-inc/fingerprintx
AufklärungNetzwerkkartierungPort-ScanningInformationsbeschaffungDienstprogramme & FrameworksArchived
GitHubpraetorian-inc/fingerprintx

fingerprintx

Eigenständiges Dienstprogramm zur Erkennung von Diensten auf offenen Ports!

Repository anzeigen
75878vor 7 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

fingerprintx

Funktionen • Installation • Verwendung • fingerprintx ausführen • Als Bibliothek verwenden • Warum nicht nmap? • Hinweise • Danksagungen

fingerprintx ist ein Dienstprogramm ähnlich wie httpx, das auch die Diensterkennung für Dienste wie RDP, SSH, MySQL, PostgreSQL, Kafka usw. unterstützt. fingerprintx kann zusammen mit Port-Scannern wie Naabu verwendet werden, um eine Reihe von Ports zu identifizieren, die während eines Port-Scans entdeckt wurden. Beispielsweise möchte ein Ingenieur einen IP-Bereich scannen und dann schnell den Dienst identifizieren, der auf allen entdeckten Ports läuft.

Funktionen

  • Schnelle Erkennung exponierter Dienste
  • Dienstermittlung auf Anwendungsebene
  • Funktioniert gut mit anderen Befehlszeilentools
  • Automatische Metadatensammlung von identifizierten Diensten

https://user-images.githubusercontent.com/69640071/193334167-8405dd50-f9bf-4386-b7b8-83255af41a8b.mov

Fingerprintx Beispiel

Fingerprintx Verkettungsbeispiel

Fingerprintx SMB Beispiel

Unterstützte Protokolle:

51 Diensterkennungs-Plugins für TCP- und UDP-Protokolle:

Hervorhebenswerte Funktionen:

  • Vektordatenbanken: ChromaDB, Milvus, Pinecone
  • Relationale Datenbanken: PostgreSQL, MySQL, MSSQL, OracleDB, DB2, Sybase, Firebird
  • NoSQL-Datenbanken: MongoDB, CouchDB, Cassandra, Redis, Elasticsearch, InfluxDB, Neo4j
  • Entwicklerwerkzeuge: JDWP (Java Debug Wire Protocol), Java RMI
  • Industrieprotokolle: Modbus, IPMI
  • Nachrichtenübermittlung: Kafka, MQTT, SMTP
  • Fernzugriff: SSH, RDP, Telnet, VNC
  • Dateiübertragung: FTP, SMB, Rsync
  • Telekommunikation/AAA: Diameter (3GPP-Netzwerke, LTE/5G), SMPP (SMS-Gateways)

Installation

Von GitHub

root@kitploit:~
go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest

Aus dem Quellcode (Go-Version > 1.18)

root@kitploit:~
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx

# mit Go-Version > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h

Docker

root@kitploit:~
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx

# build
docker build -t fingerprintx .

# und ausführen
docker run --rm fingerprintx -h
docker run --rm fingerprintx -t praetorian.com:80 --json

Verwendung

root@kitploit:~
fingerprintx -h

Die Option -h zeigt alle unterstützten Flags für fingerprintx an.

root@kitploit:~
Usage:
  fingerprintx [flags]
TARGET SPECIFICATION:
	Requires a host and port number or ip and port number. The port is assumed to be open.
	HOST:PORT or IP:PORT
EXAMPLES:
	fingerprintx -t praetorian.com:80
	fingerprintx -l input-file.txt
	fingerprintx --json -t praetorian.com:80,127.0.0.1:8000

Flags:
      --csv               output format in csv
  -f, --fast              fast mode
  -h, --help              help for fingerprintx
      --json              output format in json
  -l, --list string       input file containing targets
  -o, --output string     output file
  -t, --targets strings   target or comma separated target list
  -w, --timeout int       timeout (milliseconds) (default 500)
  -U, --udp               run UDP plugins
  -v, --verbose           verbose mode

Der fast-Modus versucht nur, den Standarddienst zu identifizieren, der diesem Port für jedes Ziel zugeordnet ist. Wenn beispielsweise praetorian.com:8443 die Eingabe ist, wird nur das https-Plugin ausgeführt. Wenn https nicht auf praetorian.com:8443 läuft, gibt es KEINE Ausgabe. Warum das tun? Es ist eine schnelle Möglichkeit, die meisten Dienste in einer großen Liste von Hosts zu identifizieren (denken Sie an die 80/20-Regel).

fingerprintx ausführen

Mit einem Ziel:

root@kitploit:~
$ fingerprintx -t 127.0.0.1:8000
http://127.0.0.1:8000

Standardmäßig hat die Ausgabe die Form: SERVICE://HOST:PORT. Für detailliertere Dienstausgaben geben Sie JSON mit dem Flag --json an:

root@kitploit:~
$ fingerprintx -t 127.0.0.1:8000 --json
{"ip":"127.0.0.1","port":8000,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Content-Length":["1154"],"Content-Type":["text/html; charset=utf-8"],"Date":["Mon, 19 Sep 2022 18:23:18 GMT"],"Server":["SimpleHTTP/0.6 Python/3.10.6"]},"status":"200 OK","statusCode":200,"version":"SimpleHTTP/0.6 Python/3.10.6"}}

Leiten Sie die Ausgabe eines anderen Programms (wie naabu) weiter:

root@kitploit:~
$ naabu 127.0.0.1 -silent 2>/dev/null | fingerprintx
http://127.0.0.1:8000
ftp://127.0.0.1:21

Mit einer Eingabedatei ausführen:

root@kitploit:~
$ cat input.txt | fingerprintx
http://praetorian.com:80
telnet://telehack.com:23

# oder wenn Sie bevorzugen
$ fingerprintx -l input.txt
http://praetorian.com:80
telnet://telehack.com:23

Mit mehr Metadatenausgabe:

root@kitploit:~
$ cat input.txt | fingerprintx --json
{"host":"praetorian.com","ip":"146.148.61.165","port":80,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Connection":["keep-alive"],"Content-Type":["text/html"],"Date":["Mon, 19 Sep 2022 18:37:55 GMT"],"Etag":["W/\"5e3e263f-1703\""],"Keep-Alive":["timeout=20"],"Server":["nginx"],"Vary":["Accept-Encoding"]},"status":"404 Not Found","statusCode":404,"version":"nginx"}}
{"host":"telehack.com","ip":"64.13.139.230","port":23,"service":"telnet","transport":"tcp","metadata":{"serverData":"fffb03"}}

Als Bibliothek verwenden

fingerprintx kann in Ihr Projekt importiert werden, um Dienste auf offenen Ports zu scannen. Beispielcode, wie dies gemacht werden könnte, ist hier im Verzeichnis examples bereitgestellt. Erstellen Sie mit go build scan.go. Eine weitere Datei, die als Referenz beim Importieren von fingerprintx in Ihr eigenes Projekt nützlich sein könnte, ist der Kommandozeilen-Runner.

Warum nicht Nmap?

Nmap ist der Standard für Netzwerkscans. Warum fingerprintx anstelle von nmap verwenden? Die beiden Hauptgründe sind:

  • fingerprintx arbeitet intelligenter, nicht härter: Das erste Plugin, das gegen einen Server mit offenem Port 8080 ausgeführt wird, ist das http-Plugin. Der Standarddienst-Ansatz verkürzt die Scanzeit im besten Fall. Meistens laufen auf Port 80, 443, 22 die Dienste http, https bzw. ssh – das prüft fingerprintx also zuerst.
  • fingerprintx unterstützt JSON-Ausgabe mit dem Flag --json. Nmap unterstützt zahlreiche Ausgabeoptionen (normal, xml, grep), aber diese sind oft schwer zu parsen und entsprechend zu scripten. fingerprintx unterstützt JSON-Ausgabe, was die Integration mit anderen Tools in Verarbeitungspipelines erleichtert.

Hinweise

  • Warum gibt es einen third_party-Ordner, der die Kryptographie-Bibliotheken von Go importiert?
    • Gute Frage! Das ssh-Erkennungsmodul identifiziert die verschiedenen kryptografischen Optionen, die vom Server während des Handshakes unterstützt werden. Dabei werden einige nicht exportierte Funktionen verwendet, weshalb die Kryptografiebibliotheken von Go hier mit einer export.go-Datei enthalten sind.
  • Fingerprintx ist nicht dazu entwickelt, offene Ports auf den Zielsystemen zu identifizieren, und geht davon aus, dass jede Eingabe von Ziel:Port offen ist. Wenn keiner der Ports offen ist, gibt es keine Ausgabe, da auf den Zielen keine Dienste laufen.
  • Wie vergleicht sich dies mit zgrab2?
    • Die Verwendung der Befehlszeile (und der Anwendungsfall) von zgrab2 unterscheidet sich geringfügig von fingerprintx. Bei zgrab2 muss das Protokoll im Voraus angegeben werden: echo praetorian.com | zgrab2 http -p 8000, was voraussetzt, dass Sie bereits wissen, was dort läuft. Bei fingerprintx ist das nicht der Fall: echo praetorian.com:8000 | fingerprintx. Der Ansatz des "Anwendungsschicht"-Protokoll-Scannings ist sehr ähnlich.

Danksagungen

fingerprintx ist das Werk vieler Menschen, einschließlich unserer großartigen Praktikantenklasse von 2022. Hier ist eine Liste der bisherigen Mitwirkenden:

  • [Soham Roy]praetorian-sohamroy
  • [Jue Huang] (https://github.com/jue-huang)
  • [Henry Jung] (https://github.com/henryjung64)
  • [Tristan Wiesepape][qwetboy10] (https://github.com/qwetboy10)
  • [Joseph Henry][jwhenry28] (https://github.com/jwhenry28)
  • [Noah Tutt][noahtutt] (https://github.com/noahtutt)
  • [Nathan Sportsman][nsportsman] (https://github.com/nsportsman)
Tool herunterladen
DIENSTTRANSPORT
CassandraTCP
ChromaDBTCP
CouchDBTCP
DB2TCP
DHCPUDP
DiameterTCP
DNSTCP/UDP
EchoTCP
ElasticsearchTCP
FirebirdTCP
FTPTCP
HTTP/HTTPSTCP
IMAPTCP
InfluxDBTCP
IPMITCP
IPSECUDP
Java RMITCP
JDWPTCP
KafkaTCP
LDAPTCP
Linux RPCTCP
MemcachedTCP
MilvusTCP
ModbusTCP
MongoDBTCP
MQTTTCP
MSSQLTCP
MySQLTCP
Neo4jTCP
NetBIOS-NSUDP
NTPUDP
OpenVPNUDP
OracleDBTCP
PineconeTCP
POP3TCP
PostgreSQLTCP
RDPTCP
RedisTCP
RsyncTCP
RTSPTCP
SMBTCP
SMPPTCP
SMTPTCP
SNMPUDP
SNPPTCP
SSHTCP
STUNUDP
SybaseTCP
TelnetTCP
VNCTCP