Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
fingerprintx — Utilitário independente para descoberta de serviços em portas abertas! | Kitploit
Ferramentas/GitHubGitHub/praetorian-inc/fingerprintx
ReconhecimentoMapeamento de RedeEscaneamento de PortasColeta de InformaçõesUtilitários e FrameworksArchived
GitHubpraetorian-inc/fingerprintx

fingerprintx

Utilitário independente para descoberta de serviços em portas abertas!

Ver Repositório
75878há 7 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

fingerprintx

Funcionalidades • Instalação • Uso • Executando fingerprintx • Uso como biblioteca • Por que não nmap? • Notas • Agradecimentos

fingerprintx é um utilitário semelhante ao httpx que também suporta a identificação de serviços como RDP, SSH, MySQL, PostgreSQL, Kafka, etc. fingerprintx pode ser usado em conjunto com scanners de porta como Naabu para identificar um conjunto de portas descobertas durante uma varredura de portas. Por exemplo, um engenheiro pode querer escanear uma faixa de IP e, em seguida, identificar rapidamente o serviço em execução em todas as portas descobertas.

Funcionalidades

  • Identificação rápida de serviços expostos
  • Descoberta de serviços na camada de aplicação
  • Funciona bem com outras ferramentas de linha de comando
  • Coleta automática de metadados de serviços identificados

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

Exemplo Fingerprintx

Exemplo Encadeamento Fingerprintx

Exemplo SMB Fingerprintx

Protocolos Suportados:

51 plugins de detecção de serviço suportando protocolos TCP e UDP:

Funcionalidades Notáveis:

  • Bancos de Dados Vetoriais: ChromaDB, Milvus, Pinecone
  • Bancos de Dados Relacionais: PostgreSQL, MySQL, MSSQL, OracleDB, DB2, Sybase, Firebird
  • Bancos de Dados NoSQL: MongoDB, CouchDB, Cassandra, Redis, Elasticsearch, InfluxDB, Neo4j
  • Ferramentas para Desenvolvedores: JDWP (Java Debug Wire Protocol), Java RMI
  • Protocolos Industriais: Modbus, IPMI
  • Mensageria: Kafka, MQTT, SMTP
  • Acesso Remoto: SSH, RDP, Telnet, VNC
  • Transferência de Arquivos: FTP, SMB, Rsync
  • Telecom/AAA: Diameter (redes 3GPP, LTE/5G), SMPP (gateways SMS)

Instalação

A partir do Github

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

A partir do código-fonte (go versão > 1.18)

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

# com go versão > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h

Docker

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

# construir
docker build -t fingerprintx .

# e executar
docker run --rm fingerprintx -h
docker run --rm fingerprintx -t praetorian.com:80 --json

Uso

root@kitploit:~
fingerprintx -h

A opção -h exibirá todas as flags suportadas pelo 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

O modo fast tentará identificar apenas o serviço padrão associado àquela porta para cada alvo. Por exemplo, se praetorian.com:8443 for a entrada, apenas o plugin https será executado. Se https não estiver rodando em praetorian.com:8443, NÃO haverá saída. Por que fazer isso? É uma maneira rápida de identificar a maioria dos serviços em uma grande lista de hosts (pense na regra 80/20).

Executando Fingerprintx

Com um alvo:

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

Por padrão, a saída está no formato: SERVICE://HOST:PORT. Para obter uma saída de serviço mais detalhada, especifique JSON com a 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"}}

Encanar a saída de outro programa (como 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

Executar com um arquivo de entrada:

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

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

Com mais metadados na saída:

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

Uso como biblioteca

fingerprintx pode ser importado para seu projeto para escanear serviços em portas abertas. Um exemplo de código de como fazer isso é fornecido aqui no diretório de exemplos. Compile com go build scan.go. Outro arquivo que pode ser útil como referência ao importar fingerprintx para seu próprio projeto é o executor de linha de comando.

Por que não Nmap?

Nmap é o padrão para varredura de rede. Por que usar fingerprintx em vez do nmap? As duas principais razões são:

  • fingerprintx trabalha de forma mais inteligente, não mais pesada: o primeiro plugin executado contra um servidor com a porta 8080 aberta é o plugin http. A abordagem de serviço padrão reduz o tempo de varredura no melhor caso. Na maioria das vezes, os serviços rodando nas portas 80, 443, 22 são http, https e ssh — então é isso que fingerprintx verifica primeiro.
  • fingerprintx suporta saída JSON com a flag --json. O Nmap suporta várias opções de saída (normal, xml, grep), mas muitas vezes são difíceis de analisar e scriptar adequadamente. O fingerprintx suporta saída JSON, o que facilita a integração com outras ferramentas em pipelines de processamento.

Notas

  • Por que você tem uma pasta third_party que importa as bibliotecas de criptografia do Go?
    • Boa pergunta! O módulo de identificação ssh identifica as várias opções criptográficas suportadas pelo servidor ao coletar metadados durante o processo de handshake. Isso faz uso de algumas funções não exportadas, por isso as bibliotecas de criptografia do Go estão incluídas aqui com um arquivo export.go.
  • O Fingerprintx não foi projetado para identificar portas abertas nos sistemas alvo e assume que cada entrada target:port está aberta. Se nenhuma das portas estiver aberta, não haverá saída, pois não há serviços rodando nos alvos.
  • Como isso se compara ao zgrab2?
    • O uso (e caso de uso) da linha de comando do zgrab2 é ligeiramente diferente do fingerprintx. Para o zgrab2, o protocolo deve ser especificado antecipadamente: echo praetorian.com | zgrab2 http -p 8000, o que pressupõe que você já sabe o que está rodando lá. Para o fingerprintx, esse não é o caso: echo praetorian.com:8000 | fingerprintx. A abordagem de varredura de protocolo na "camada de aplicação" é muito semelhante.

Agradecimentos

fingerprintx é obra de muitas pessoas, incluindo nossa excelente turma de estagiários de 2022. Aqui está uma lista de colaboradores até agora:

  • [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)
Baixar ferramenta
SERVIÇOTRANSPORTE
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