mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 14:06:44 +08:00

核心改进: - 创建LegacyPlugin适配器基础框架,支持老版本插件接入新架构 - 实现适配器模式,保持老版本插件代码完全不变 - 支持不同类型插件的能力配置(漏洞检测、信息收集、服务检测) 已适配插件: - MS17010: SMB远程代码执行漏洞检测 (EternalBlue) - SmbGhost: CVE-2020-0796 远程代码执行漏洞检测 - SMB/SMB2: SMB服务弱密码检测和共享枚举 - RDP: 远程桌面服务弱密码检测 - NetBIOS: 信息收集和主机名解析 - Elasticsearch: 弱密码检测和未授权访问检测 技术特点: - 零代码修改:老版本插件完全不需要修改 - 完整接口实现:适配Plugin、Scanner、Exploiter接口 - 灵活配置:支持暴力破解标志检查、插件类型配置 - 统一管理:通过新的插件注册表统一管理所有插件 测试验证:✓ 所有适配器插件正常工作,与新架构完美集成
54 lines
1.6 KiB
Go
54 lines
1.6 KiB
Go
package rdp
|
||
|
||
import (
|
||
"github.com/shadow1ng/fscan/plugins/adapter"
|
||
"github.com/shadow1ng/fscan/plugins/base"
|
||
Plugins "github.com/shadow1ng/fscan/plugins"
|
||
)
|
||
|
||
// NewRdpPlugin 创建RDP弱密码检测插件
|
||
func NewRdpPlugin() base.Plugin {
|
||
// 插件元数据
|
||
metadata := &base.PluginMetadata{
|
||
Name: "rdp",
|
||
Version: "1.0.0",
|
||
Author: "fscan-team",
|
||
Description: "RDP远程桌面服务弱密码检测",
|
||
Category: "service",
|
||
Ports: []int{3389}, // RDP端口
|
||
Protocols: []string{"tcp"},
|
||
Tags: []string{"rdp", "remote-desktop", "weak-password", "service", "brute-force"},
|
||
}
|
||
|
||
// 适配器选项
|
||
options := &adapter.LegacyPluginOptions{
|
||
CheckBruteFlag: true, // RDP依赖暴力破解标志
|
||
IsVulnPlugin: false, // 这是服务检测插件,不是漏洞检测
|
||
IsInfoPlugin: false, // 主要是弱密码检测
|
||
CustomPorts: []int{3389}, // RDP端口
|
||
}
|
||
|
||
// 创建适配器,直接使用老版本的RdpScan函数
|
||
return adapter.NewLegacyPlugin(metadata, Plugins.RdpScan, options)
|
||
}
|
||
|
||
// init 自动注册RDP插件
|
||
func init() {
|
||
// 创建插件工厂
|
||
metadata := &base.PluginMetadata{
|
||
Name: "rdp",
|
||
Version: "1.0.0",
|
||
Author: "fscan-team",
|
||
Description: "RDP远程桌面服务弱密码检测",
|
||
Category: "service",
|
||
Ports: []int{3389},
|
||
Protocols: []string{"tcp"},
|
||
Tags: []string{"rdp", "remote-desktop", "weak-password", "service", "brute-force"},
|
||
}
|
||
|
||
factory := base.NewSimplePluginFactory(metadata, func() base.Plugin {
|
||
return NewRdpPlugin()
|
||
})
|
||
|
||
base.GlobalPluginRegistry.Register("rdp", factory)
|
||
} |