8000 GitHub - expzhizhuo/fingerprintx: 用于在开放端口上发现服务基于go的独立实用程序!
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

用于在开放端口上发现服务基于go的独立实用程序!

License

Notifications You must be signed in to change notification settings

expzhizhuo/fingerprintx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fingerprintx 描述

当前为https://github.com/praetorian-inc/fingerprintx仓库的克隆,由于官方支持的tcp协议过少,特此克隆仓库进行自定义的协议添加补充。

编写插件

插件位置位于pkg/plugins/services/下,新建对应协议的目录参考其他的协议编写即可。

写完插件需要在pkg/scan/plugin_list.go文件中引入。在pkg/plugins/types.go中声明类型,否在插件会报错。 例如:

type ServiceMongoDB struct {
	PacketType   string `json:"packetType"` // 服务器返回的数据包类型(例如:握手或错误)
	PacketData   string `json:"PacketData"` // 响应数据
	ErrorMessage string `json:"errorMsg"`   // 如果服务器返回错误数据包,则为错误消息
	ErrorCode    int    `json:"errorCode"`  // 如果服务器返回错误数据包,则为错误代码
}

插件的写法也需要注意,这里如果是需要协议通信,我们可以使用WireShare去抓hex string,然后可以使用下面函数转换成byte类型

func createBuildInfoCommand() []byte {
	hexStr := "hex内容"
	cmd := make([]byte, len(hexStr)/2)
	for i := 0; i < len(hexStr); i += 2 {
		decodedByte, _ := hex.DecodeString(hexStr[i : i+2])
		cmd[i/2] = decodedByte[0]
	}
	return cmd
}

其中函数Priority()是配置插件的优先级,例如2表示这个插件的优先级为2,如果有的协议可以通过http/https访问的话,个人建议将优先级设置的靠前一些,可以有效的避免识别成http

func (p *MongoDBPlugin) Priority() int {
	return 2
}

其中函数PortPriority()是配置其默认端口

func (p *MongoDBPlugin) PortPriority(port uint16) bool {
	return port == 27017
}

支持协议

SERVICE TRANSPORT SERVICE TRANSPORT
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 MongoDB TCP
达梦数据库 TCP

最后

如果插件的写的有错误请提交issues。如果你有自己编写好的插件可以通过pr和本仓库合并。

明谢

About

用于在开放端口上发现服务基于go的独立实用程序!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

0