Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
fingerprintx — Utilità autonoma per la scoperta dei servizi sulle porte aperte! | Kitploit
Strumenti/GitHubGitHub/praetorian-inc/fingerprintx
RicognizioneMappatura della ReteScansione PorteRaccolta InformazioniUtilità e FrameworkArchived
GitHubpraetorian-inc/fingerprintx

fingerprintx

Utilità autonoma per la scoperta dei servizi sulle porte aperte!

Vedi Repository
758787 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

fingerprintx

Funzionalità • Installazione • Utilizzo • Esecuzione di fingerprintx • Utilizzo come libreria • Perché non nmap? • Note • Riconoscimenti

fingerprintx è un'utility simile a httpx che supporta anche il fingerprinting di servizi come RDP, SSH, MySQL, PostgreSQL, Kafka, ecc. fingerprintx può essere utilizzato insieme a scanner di porte come Naabu per eseguire il fingerprinting di un insieme di porte identificate durante una scansione delle porte. Ad esempio, un ingegnere potrebbe voler scansionare un intervallo IP e poi rapidamente identificare il servizio in esecuzione su tutte le porte scoperte.

Funzionalità

  • Fingerprinting rapido dei servizi esposti
  • Rilevamento dei servizi a livello applicativo
  • Funziona bene con altri strumenti da riga di comando
  • Raccolta automatica dei metadati dai servizi identificati

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

Esempio di Fingerprintx

Esempio di catena di Fingerprintx

Esempio di SMB di Fingerprintx

Protocolli supportati:

51 plugin di rilevamento servizi che supportano protocolli TCP e UDP:

Funzionalità notevoli:

  • Database vettoriali: ChromaDB, Milvus, Pinecone
  • Database relazionali: PostgreSQL, MySQL, MSSQL, OracleDB, DB2, Sybase, Firebird
  • Database NoSQL: MongoDB, CouchDB, Cassandra, Redis, Elasticsearch, InfluxDB, Neo4j
  • Strumenti per sviluppatori: JDWP (Java Debug Wire Protocol), Java RMI
  • Protocolli industriali: Modbus, IPMI
  • Messaggistica: Kafka, MQTT, SMTP
  • Accesso remoto: SSH, RDP, Telnet, VNC
  • Trasferimento file: FTP, SMB, Rsync
  • Telecom/AAA: Diameter (reti 3GPP, LTE/5G), SMPP (gateway SMS)

Installazione

Da Github

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

Dal codice sorgente (versione go > 1.18)

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

# con versione go > 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 .

# ed eseguilo
docker run --rm fingerprintx -h
docker run --rm fingerprintx -t praetorian.com:80 --json

Utilizzo

root@kitploit:~
fingerprintx -h

L'opzione -h mostrerà tutti i flag supportati per fingerprintx.

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

La modalità fast tenterà di eseguire il fingerprinting solo del servizio predefinito associato a quella porta per ogni target. Ad esempio, se l'input è praetorian.com:8443, verrà eseguito solo il plugin https. Se https non è in esecuzione su praetorian.com:8443, NON ci sarà output. Perché farlo? È un modo rapido per identificare la maggior parte dei servizi in un grande elenco di host (pensate alla regola 80/20).

Esecuzione di Fingerprintx

Con un target:

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

Per impostazione predefinita, l'output è nella forma: SERVICE://HOST:PORT. Per ottenere un output più dettagliato del servizio, specificare JSON con il flag --json:

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

Incanala l'output da un altro programma (come naabu):

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

Esegui con un file di input:

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

# o se preferisci
$ fingerprintx -l input.txt
http://praetorian.com:80
telnet://telehack.com:23

Con più output di metadati:

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

Utilizzo come libreria

fingerprintx può essere importato nel tuo progetto per scansionare i servizi sulle porte aperte. Un esempio di codice su come fare è fornito qui nella directory examples. Compila con go build scan.go. Un altro file che potrebbe essere utile come riferimento quando si importa fingerprintx nel proprio progetto è il command line runner.

Perché non Nmap?

Nmap è lo standard per la scansione di rete. Perché usare fingerprintx invece di nmap? I due motivi principali sono:

  • fingerprintx funziona in modo più intelligente, non più duro: il primo plugin eseguito contro un server con la porta 8080 aperta è il plugin http. L'approccio del servizio predefinito riduce i tempi di scansione nel caso migliore. La maggior parte delle volte i servizi in esecuzione sulle porte 80, 443, 22 sono http, https e ssh -- quindi fingerprintx li controlla per primi.
  • fingerprintx supporta l'output JSON con il flag --json. Nmap supporta numerose opzioni di output (normal, xml, grep), ma sono spesso difficili da analizzare e scriptare correttamente. fingerprintx supporta l'output JSON che facilita l'integrazione con altri strumenti nelle pipeline di elaborazione.

Note

  • Perché hai una cartella third_party che importa le librerie crittografiche Go?
    • Ottima domanda! Il modulo di fingerprinting ssh identifica le varie opzioni crittografiche supportate dal server durante la raccolta dei metadati durante il processo di handshake. Questo utilizza alcune funzioni non esportate, motivo per cui le librerie crittografiche Go sono incluse qui con un file export.go.
  • Fingerprintx non è progettato per identificare porte aperte sui sistemi target e assume che ogni input target:port sia aperto. Se nessuna delle porte è aperta, non ci sarà output poiché non ci sono servizi in esecuzione sui target.
  • Come si confronta con zgrab2?
    • L'uso da riga di comando (e il caso d'uso) di zgrab2 è leggermente diverso da fingerprintx. Per zgrab2, il protocollo deve essere specificato in anticipo: echo praetorian.com | zgrab2 http -p 8000, il che presuppone che tu sappia già cosa è in esecuzione lì. Per fingerprintx, non è così: echo praetorian.com:8000 | fingerprintx. L'approccio di scansione del protocollo a "livello applicativo" è molto simile.

Riconoscimenti

fingerprintx è il lavoro di molte persone, inclusa la nostra fantastica classe di stagisti del 2022. Ecco un elenco dei contributori finora:

  • [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)
Scarica lo strumento
SERVIZIOTRASPORTO
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