
Eigenständiges Dienstprogramm zur Erkennung von Diensten auf offenen Ports!
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.



51 Diensterkennungs-Plugins für TCP- und UDP-Protokolle:
| DIENST | TRANSPORT |
|---|---|
| Cassandra | TCP |
| ChromaDB | TCP |
| CouchDB | TCP |
| DB2 | TCP |
| DHCP | UDP |
| Diameter | TCP |
| DNS | TCP/UDP |
| Echo | TCP |
| Elasticsearch | TCP |
| Firebird | TCP |
| FTP | TCP |
| HTTP/HTTPS | TCP |
| IMAP | TCP |
| InfluxDB | TCP |
| IPMI | TCP |
| IPSEC | UDP |
| Java RMI | TCP |
| JDWP | TCP |
| Kafka | TCP |
| LDAP | TCP |
| Linux RPC | TCP |
| Memcached | TCP |
| Milvus | TCP |
| Modbus | TCP |
| MongoDB | TCP |
| MQTT | TCP |
| MSSQL | TCP |
| MySQL | TCP |
| Neo4j | TCP |
| NetBIOS-NS | UDP |
| NTP | UDP |
| OpenVPN | UDP |
| OracleDB | TCP |
| Pinecone | TCP |
| POP3 | TCP |
| PostgreSQL | TCP |
| RDP | TCP |
| Redis | TCP |
| Rsync | TCP |
| RTSP | TCP |
| SMB | TCP |
| SMPP | TCP |
| SMTP | TCP |
| SNMP | UDP |
| SNPP | TCP |
| SSH | TCP |
| STUN | UDP |
| Sybase | TCP |
| Telnet | TCP |
| VNC | TCP |
Von GitHub
go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest
Aus dem Quellcode (Go-Version > 1.18)
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx
# mit Go-Version > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h
Docker
$ 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
fingerprintx -h
Die Option -h zeigt alle unterstützten Flags für fingerprintx an.
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).
Mit einem Ziel:
$ 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:
$ 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:
$ 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:
$ cat input.txt | fingerprintx
http://praetorian.com:80
telnet://telehack.com:23