如何使用Fingerprintx在开放端口上扫描运行的服务

图片[1]-如何使用Fingerprintx在开放端口上扫描运行的服务-NGC660 安全实验室

关于Fingerprintx

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

功能介绍

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

2、应用层服务发现;

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

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

支持的协议

服务协议端口服务协议端口
HTTPTCPREDISTCP
SSHTCPMQTT3TCP
MODBUSTCPVNCTCP
TELNETTCPMQTT5TCP
FTPTCPRSYNCTCP
SMBTCPRPCTCP
DNSTCPOracleDBTCP
SMTPTCPRTSPTCP
PostgreSQLTCPMQTT5TCP (TLS)
RDPTCPHTTPSTCP (TLS)
POP3TCPSMTPSTCP (TLS)
KAFKATCPMQTT3TCP (TLS)
MySQLTCPRDPTCP (TLS)
MSSQLTCPPOP3STCP (TLS)
LDAPTCPLDAPSTCP (TLS)
IMAPTCPIMAPSTCP (TLS)
SNMPUDPKafkaTCP (TLS)
OPENVPNUDPNETBIOS-NSUDP
IPSECUDPDHCPUDP
STUNUDPNTPUDP
DNSUDP

工具安装

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

工具运行截图

图片[2]-如何使用Fingerprintx在开放端口上扫描运行的服务-NGC660 安全实验室
图片[3]-如何使用Fingerprintx在开放端口上扫描运行的服务-NGC660 安全实验室
图片[4]-如何使用Fingerprintx在开放端口上扫描运行的服务-NGC660 安全实验室

工具使用演示

视频地址:【点我观看

许可证协议

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

项目地址

Fingerprintx:【GitHub传送门

参考资料

https://github.com/projectdiscovery/httpx

https://github.com/projectdiscovery/naabu

© 版权声明
THE END
喜欢就支持一下吧
点赞6赏点小钱 分享