fscan/Core/Registry.go

260 lines
6.1 KiB
Go
Raw Normal View History

2024-12-19 15:24:10 +08:00
package Core
2024-12-18 21:55:39 +08:00
2024-12-19 15:24:10 +08:00
import (
2024-12-19 16:15:53 +08:00
"github.com/shadow1ng/fscan/Common"
2024-12-19 15:24:10 +08:00
"github.com/shadow1ng/fscan/Plugins"
2025-04-14 02:36:16 +08:00
"sort"
2024-12-19 15:24:10 +08:00
)
2024-12-18 21:55:39 +08:00
2025-02-07 12:08:14 +08:00
// init 初始化并注册所有扫描插件
// 包括标准端口服务扫描、特殊扫描类型和本地信息收集等
2024-12-18 21:55:39 +08:00
func init() {
2025-02-07 12:08:14 +08:00
// 1. 标准网络服务扫描插件
// 文件传输和远程访问服务
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("ftp", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "FTP",
2024-12-20 18:38:13 +08:00
Ports: []int{21},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.FtpScan,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("ssh", Common.ScanPlugin{
2025-04-14 02:36:16 +08:00
Name: "SSH",
2024-12-20 19:08:40 +08:00
Ports: []int{22, 2222},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.SshScan,
2024-12-18 21:55:39 +08:00
})
2024-12-20 20:15:55 +08:00
Common.RegisterPlugin("telnet", Common.ScanPlugin{
2024-12-21 18:26:44 +08:00
Name: "Telnet",
2024-12-20 20:15:55 +08:00
Ports: []int{23},
ScanFunc: Plugins.TelnetScan,
})
2025-02-07 12:08:14 +08:00
// Windows网络服务
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("findnet", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "FindNet",
2024-12-20 18:38:13 +08:00
Ports: []int{135},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.Findnet,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("netbios", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "NetBIOS",
2024-12-20 18:38:13 +08:00
Ports: []int{139},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.NetBIOS,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("smb", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "SMB",
2024-12-20 18:38:13 +08:00
Ports: []int{445},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.SmbScan,
2024-12-18 21:55:39 +08:00
})
2025-02-07 12:08:14 +08:00
// 数据库服务
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("mssql", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "MSSQL",
2025-02-07 12:08:14 +08:00
Ports: []int{1433, 1434},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.MssqlScan,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("oracle", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "Oracle",
2025-02-07 12:08:14 +08:00
Ports: []int{1521, 1522, 1526},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.OracleScan,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("mysql", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "MySQL",
2025-02-07 12:08:14 +08:00
Ports: []int{3306, 3307, 13306, 33306},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.MysqlScan,
2024-12-18 21:55:39 +08:00
})
2025-02-07 12:08:14 +08:00
// 中间件和消息队列服务
Common.RegisterPlugin("elasticsearch", Common.ScanPlugin{
Name: "Elasticsearch",
2025-02-07 12:08:14 +08:00
Ports: []int{9200, 9300},
ScanFunc: Plugins.ElasticScan,
})
2024-12-22 02:48:59 +08:00
Common.RegisterPlugin("rabbitmq", Common.ScanPlugin{
Name: "RabbitMQ",
2025-02-07 12:08:14 +08:00
Ports: []int{5672, 5671, 15672, 15671},
2024-12-22 02:48:59 +08:00
ScanFunc: Plugins.RabbitMQScan,
})
2024-12-22 03:18:46 +08:00
Common.RegisterPlugin("kafka", Common.ScanPlugin{
Name: "Kafka",
2025-02-07 12:08:14 +08:00
Ports: []int{9092, 9093},
2024-12-22 03:18:46 +08:00
ScanFunc: Plugins.KafkaScan,
})
2024-12-22 04:01:33 +08:00
Common.RegisterPlugin("activemq", Common.ScanPlugin{
Name: "ActiveMQ",
Ports: []int{61613},
2024-12-22 04:01:33 +08:00
ScanFunc: Plugins.ActiveMQScan,
})
2025-02-07 12:08:14 +08:00
// 目录和认证服务
2024-12-22 04:13:47 +08:00
Common.RegisterPlugin("ldap", Common.ScanPlugin{
Name: "LDAP",
2025-02-07 12:08:14 +08:00
Ports: []int{389, 636},
2024-12-22 04:13:47 +08:00
ScanFunc: Plugins.LDAPScan,
})
2025-02-07 12:08:14 +08:00
// 邮件服务
2024-12-22 04:39:58 +08:00
Common.RegisterPlugin("smtp", Common.ScanPlugin{
Name: "SMTP",
Ports: []int{25, 465, 587},
ScanFunc: Plugins.SmtpScan,
})
2024-12-23 02:21:17 +08:00
2024-12-23 01:50:20 +08:00
Common.RegisterPlugin("imap", Common.ScanPlugin{
Name: "IMAP",
2025-02-07 12:08:14 +08:00
Ports: []int{143, 993},
2024-12-23 01:50:20 +08:00
ScanFunc: Plugins.IMAPScan,
})
2024-12-22 04:39:58 +08:00
2024-12-23 02:21:17 +08:00
Common.RegisterPlugin("pop3", Common.ScanPlugin{
Name: "POP3",
2025-02-07 12:08:14 +08:00
Ports: []int{110, 995},
2024-12-23 02:21:17 +08:00
ScanFunc: Plugins.POP3Scan,
})
2025-02-07 12:08:14 +08:00
// 网络管理和监控服务
Common.RegisterPlugin("snmp", Common.ScanPlugin{
Name: "SNMP",
2025-02-07 12:08:14 +08:00
Ports: []int{161, 162},
ScanFunc: Plugins.SNMPScan,
})
Common.RegisterPlugin("modbus", Common.ScanPlugin{
Name: "Modbus",
2025-02-07 12:08:14 +08:00
Ports: []int{502, 5020},
ScanFunc: Plugins.ModbusScan,
})
2025-02-07 12:08:14 +08:00
// 数据同步和备份服务
2024-12-23 06:43:44 +08:00
Common.RegisterPlugin("rsync", Common.ScanPlugin{
Name: "Rsync",
Ports: []int{873},
ScanFunc: Plugins.RsyncScan,
})
2025-02-07 12:08:14 +08:00
// NoSQL数据库
Common.RegisterPlugin("cassandra", Common.ScanPlugin{
Name: "Cassandra",
Ports: []int{9042},
ScanFunc: Plugins.CassandraScan,
})
2024-12-23 07:15:25 +08:00
Common.RegisterPlugin("neo4j", Common.ScanPlugin{
Name: "Neo4j",
Ports: []int{7687},
ScanFunc: Plugins.Neo4jScan,
})
2025-02-07 12:08:14 +08:00
// 远程桌面和显示服务
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("rdp", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "RDP",
2024-12-23 11:11:38 +08:00
Ports: []int{3389, 13389, 33389},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.RdpScan,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("postgres", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "PostgreSQL",
2025-02-07 12:08:14 +08:00
Ports: []int{5432, 5433},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.PostgresScan,
2024-12-18 21:55:39 +08:00
})
2024-12-20 03:00:21 +08:00
Common.RegisterPlugin("vnc", Common.ScanPlugin{
Name: "VNC",
2025-02-07 12:08:14 +08:00
Ports: []int{5900, 5901, 5902},
2024-12-20 03:00:21 +08:00
ScanFunc: Plugins.VncScan,
})
2025-02-07 12:08:14 +08:00
// 缓存和键值存储服务
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("redis", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "Redis",
2025-02-07 12:08:14 +08:00
Ports: []int{6379, 6380, 16379},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.RedisScan,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("memcached", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "Memcached",
2024-12-20 18:38:13 +08:00
Ports: []int{11211},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.MemcachedScan,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("mongodb", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "MongoDB",
2025-02-07 12:08:14 +08:00
Ports: []int{27017, 27018},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.MongodbScan,
2024-12-18 21:55:39 +08:00
})
2025-02-07 12:08:14 +08:00
// 2. 特殊漏洞扫描插件
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("ms17010", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "MS17010",
2024-12-20 18:38:13 +08:00
Ports: []int{445},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.MS17010,
2024-12-18 21:55:39 +08:00
})
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("smbghost", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "SMBGhost",
2024-12-20 18:38:13 +08:00
Ports: []int{445},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.SmbGhost,
2024-12-18 21:55:39 +08:00
})
2025-02-07 12:08:14 +08:00
// 3. Web应用扫描插件
Common.RegisterPlugin("webtitle", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "WebTitle",
2025-02-07 12:08:14 +08:00
Ports: Common.ParsePortsFromString(Common.WebPorts),
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.WebTitle,
2024-12-18 21:55:39 +08:00
})
2024-12-20 17:32:25 +08:00
Common.RegisterPlugin("webpoc", Common.ScanPlugin{
Name: "WebPoc",
2025-02-07 12:08:14 +08:00
Ports: Common.ParsePortsFromString(Common.WebPorts),
2024-12-20 17:32:25 +08:00
ScanFunc: Plugins.WebPoc,
2024-12-20 11:36:15 +08:00
})
2025-02-07 12:08:14 +08:00
// 4. Windows系统专用插件
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("smb2", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "SMBScan2",
2024-12-20 18:38:13 +08:00
Ports: []int{445},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.SmbScan2,
2024-12-18 21:55:39 +08:00
})
2025-02-07 12:08:14 +08:00
// 5. 本地信息收集插件
2024-12-19 16:15:53 +08:00
Common.RegisterPlugin("localinfo", Common.ScanPlugin{
2024-12-18 21:55:39 +08:00
Name: "LocalInfo",
2025-02-07 12:08:14 +08:00
Ports: []int{},
2024-12-19 15:24:10 +08:00
ScanFunc: Plugins.LocalInfoScan,
2024-12-18 21:55:39 +08:00
})
2024-12-28 05:43:38 +08:00
Common.RegisterPlugin("dcinfo", Common.ScanPlugin{
Name: "DCInfo",
2025-02-07 12:08:14 +08:00
Ports: []int{},
2024-12-28 05:43:38 +08:00
ScanFunc: Plugins.DCInfoScan,
})
Common.RegisterPlugin("minidump", Common.ScanPlugin{
Name: "MiniDump",
2025-02-07 12:08:14 +08:00
Ports: []int{},
2024-12-28 05:43:38 +08:00
ScanFunc: Plugins.MiniDump,
})
2024-12-18 21:55:39 +08:00
}
2025-04-14 02:36:16 +08:00
// GetAllPlugins 返回所有已注册插件的名称列表
// 当用户未指定特定插件或使用"All"模式时使用
func GetAllPlugins() []string {
pluginNames := make([]string, 0, len(Common.PluginManager))
// 遍历插件管理器,获取所有插件名称
for name := range Common.PluginManager {
pluginNames = append(pluginNames, name)
}
// 对插件名称进行排序,使输出更加一致
sort.Strings(pluginNames)
return pluginNames
}