关于Fingerprintx

Fingerprintx是一款功能强大的端口服务扫描工具,它是一款类似于httpx的实用工具,并且还支持扫描类似RDP、SSH、MySQL、PostgreSQL和Kafka等指纹识别服务。Fingerprintx可以跟类似Naabu这样的端口扫描工具一起使用,并对端口扫描过程中识别的一组端口进行指纹识别。比如说,研究人员可能希望扫描一个IP地址范围,然后快速对在所有发现的端口上运行的服务进行指纹识别,那么Fingerprintx就可以派上用场了。

功能介绍

1、支持对暴露的服务执行快速指纹识别;

2、应用层服务发现;

3、可以与其他命令行工具结合使用;

4、支持从已识别的服务自动收集元数据;

支持的协议

服务

协议

端口

服务

协议

端口

HTTP

TCP

REDIS

TCP

SSH

TCP

MQTT3

TCP

MODBUS

TCP

VNC

TCP

TELNET

TCP

MQTT5

TCP

FTP

TCP

RSYNC

TCP

SMB

TCP

RPC

TCP

DNS

TCP

OracleDB

TCP

SMTP

TCP

RTSP

TCP

PostgreSQL

TCP

MQTT5

TCP (TLS)

RDP

TCP

HTTPS

TCP (TLS)

POP3

TCP

SMTPS

TCP (TLS)

KAFKA

TCP

MQTT3

TCP (TLS)

MySQL

TCP

RDP

TCP (TLS)

MSSQL

TCP

POP3S

TCP (TLS)

LDAP

TCP

LDAPS

TCP (TLS)

IMAP

TCP

IMAPS

TCP (TLS)

SNMP

UDP

Kafka

TCP (TLS)

OPENVPN

UDP

NETBIOS-NS

UDP

IPSEC

UDP

DHCP

UDP

STUN

UDP

NTP

UDP

DNS

UDP



工具安装

GitHub安装

go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest

源码安装(Go 1.18+)

$ git clone git@github.com:praetorian-inc/fingerprintx.git

$ cd fingerprintx

 

# 需要Go 1.18+环境

$ go build ./cmd/fingerprintx

$ ./fingerprintx -h

Docker安装

$ git clone git@github.com:praetorian-inc/fingerprintx.git

$ cd fingerprintx

 

# 构建代码

docker build -t fingerprintx .

 

# 容器运行

docker run --rm fingerprintx -h

docker run --rm fingerprintx -t praetorian.com:80 --json

工具使用

下列命令将显示工具的完整帮助信息和支持的参数选项:

fingerprintx -h
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               以CSV格式输出

  -f, --fast                快速模式

  -h, --help               查看工具帮助信息

      --json              以JSON格式输出

  -l, --list string           指定目标列表文件

  -o, --output string        输出文件路径

  -t, --targets strings      指定目标(逗号分隔)或目标文件列表

  -w, --timeout int          超时(毫秒),默认500毫秒

  -U, --udp                运行UDP插件

  -v, --verbose            开启Verbose模式

工具运行

针对单个目标:

$ fingerprintx -t 127.0.0.1:8000

http://127.0.0.1:8000

默认情况下,输出格式为SERVICE://HOST:PORT。如需查看详细信息并指定JSON格式输出,可以使用--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"}}

该工具还支持从类似Naabu之类的工具传入数据:

$ naabu 127.0.0.1 -silent 2>/dev/null | fingerprintx

http://127.0.0.1:8000

ftp://127.0.0.1:21

使用一个文件作为输入参数执行任务:

$ cat input.txt | fingerprintx

http://praetorian.com:80

telnet://telehack.com:23

 

# or if you prefer

$ fingerprintx -l input.txt

http://praetorian.com:80

telnet://telehack.com:23

获取更多的元数据输出:

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

工具运行截图

工具使用演示

视频地址:【点我观看

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

Fingerprintx:【GitHub传送门

参考资料

https://github.com/projectdiscovery/httpx

https://github.com/projectdiscovery/naabu

本文作者:Alpha_h4ck, 转自FreeBuf