
Utilitário independente para descoberta de serviços em portas abertas!
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.



51 plugins de detecção de serviço suportando protocolos TCP e UDP:
| SERVIÇO | TRANSPORTE |
|---|---|
| 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 |
A partir do Github
go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest
A partir do código-fonte (go versão > 1.18)
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx
# com go versão > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h
Docker
$ 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
fingerprintx -h
A opção -h exibirá todas as flags suportadas pelo fingerprintx.
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).
Com um alvo:
$ 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:
$ 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):
$ 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:
$ cat input.txt | fingerprintx
http://praetorian.com:80
telnet://telehack.com:23