NeoScan
NeoScan 是一个综合性自动扫描信息收集系统,采用分布式架构设计,支持多种扫描类型和智能任务调度,主要用于网络安全评估、资产发现和漏洞检测。
Install / Use
/learn @sun977/NeoScanREADME
NeoScan
NeoScan 是一个综合性自动扫描信息收集系统,采用分布式架构设计,支持多种扫描类型和智能任务调度,主要用于网络安全评估、资产发现和漏洞检测。
项目架构
核心特性
- 分布式架构: Master-Agent 架构,支持多节点协同工作
- Thin Agent 架构: 采用 "瘦客户端" 模式,Agent 无状态,Master 统一编排
- HTTP/WebSocket 通信: 全面采用标准 HTTP 协议,摒弃复杂的 gRPC,降低运维成本
- 智能调度: Master 负责全生命周期管理,支持复杂的 ScanStage 调度循环
- 多模块扫描: 资产扫描、Web扫描、POC漏洞扫描、目录扫描、域名扫描、弱口令扫描、代理扫描
- 插件系统: 支持热插拔的插件架构,内置Shell、文件、监控插件
- 实时监控: WebSocket实时通信,任务状态实时监控
- 安全机制: JWT + RBAC认证,TLS加密通信,插件沙箱执行
技术栈
- 后端技术: Go 1.25+, Gin (HTTP), MySQL 8.0+, SQLite, Redis 6.0+, RabbitMQ 3.8+
- 前端技术: Vue.js 3 + Element Plus
- 部署技术: Docker + Docker Compose, Nginx
目录结构
NeoScan/
├── neoMaster/ # Master节点
│ ├── cmd/ # 应用入口
│ ├── internal/ # 内部代码
│ ├── web/ # 前端代码
│ ├── configs/ # 配置文件
│ └── ... # 其他目录
├── neoAgent/ # Agent节点
│ ├── cmd/ # 应用入口
│ ├── internal/ # 内部代码
│ ├── tools/ # 扫描工具
│ └── ... # 其他目录
└── sdds/ # 系统设计文档
核心功能
Master节点功能 (Brain)
- 工作流编排: 基于 DAG 的多阶段扫描任务调度 (Stage Scheduling)
- 任务管理: 原子任务 (ScanStage) 的生成、分发、回收
- 数据清洗: 负责将 Agent 返回的原始数据转换为标准资产
- 节点管理: Agent 节点注册、状态监控、配置推送
- 资产管理: 资产发现、同步、清单管理、导入导出
- 监控预警: 漏洞监控、GitHub爬取、告警通知
- 插件管理: 插件安装、远程控制、安全执行
- 用户管理: 用户认证、权限控制、审计日志
- 报告管理: 报告生成、模板管理、数据导出
- 通知系统: 蓝信、SEC、邮件、Webhook通知
Master节点详细能力
核心架构特性
- 分层架构: Handler → Service → Repository → Database
- RESTful API: 标准HTTP接口,易于集成
- 智能调度: 支持DAG工作流、定时任务、实时调度
- 策略执行: 白名单、作用域、跳过条件等多层策略
- ETL处理: 提取、转换、加载扫描结果
- 指纹识别: 多引擎并发识别服务指纹
- 标签系统: 灵活的标签管理和自动打标签
Agent管理能力 ✅ 已完成
核心能力:
- Agent注册与认证: 支持自动注册和手动预配置两种模式
- 心跳维持: 接收Agent心跳,更新系统指标和任务状态
- 任务分发: 支持Pull模式,Agent主动拉取任务
- 结果接收: 接收Agent上报的扫描结果
- 状态管理: 管理Agent的在线、离线、维护等状态
- 标签管理: 支持为Agent添加/移除标签
- 任务支持管理: 管理Agent支持的任务类型
- 性能监控: 监控Agent的CPU、内存、磁盘等指标
注册流程:
-
自动注册模式(推荐批量部署):
- Agent使用全局注册密钥向Master注册
- Master验证密钥后生成专属Token和AgentID
- Agent保存Token用于后续通信
-
手动预配置模式(高安全环境):
- 管理员在Master端预先生成Token
- Agent配置文件中直接使用该Token
- 跳过注册步骤,直接通信
Agent注册参数:
hostname: 主机名(必填)ip_address: IP地址(必填)port: 监听端口(必填)version: Agent版本(必填)os: 操作系统类型(必填)arch: 系统架构(必填)cpu_cores: CPU核心数(必填)memory_total: 总内存(必填)disk_total: 总磁盘空间(必填)task_support: 支持的任务类型列表(必填)token_secret: 注册密钥(可选,自动注册模式)token: 认证Token(可选,手动预配置模式)
心跳参数:
agent_id: Agent ID(必填)cpu_usage: CPU使用率(百分比)memory_usage: 内存使用率(百分比)disk_usage: 磁盘使用率(百分比)network_sent: 发送字节数network_recv: 接收字节数running_tasks: 运行中任务数completed_tasks: 已完成任务数failed_tasks: 失败任务数work_status: 工作状态(idle/working/exception)scan_type: 当前执行的扫描类型
编排器能力 ✅ 已完成
核心能力:
- 工作流管理: 创建、查询、更新、删除工作流
- 扫描阶段管理: 管理工作流中的各个扫描阶段
- 项目管理: 管理扫描项目及其配置
- 调度引擎: 定时触发扫描项目,监控项目状态
- 任务生成器: 根据阶段配置生成可执行任务
- 任务分发器: 将任务分配给合适的Agent
- 结果摄入器: 接收并处理Agent上报的扫描结果
- 策略执行器: 检查任务是否符合策略(白名单、作用域、跳过条件)
- 资源分配器: 检查Agent能力和负载,进行资源调度
工作流参数:
name: 工作流名称(必填)description: 工作流描述stages: 扫描阶段列表(支持DAG依赖关系)
扫描阶段参数:
workflow_id: 所属工作流ID(必填)name: 阶段名称(必填)scan_tool: 扫描工具类型(必填)tool_template: 工具模板配置target_policy: 目标策略配置target_sources: 目标来源(file/db/view/sql/manual/api/previous_stage)whitelist_enabled: 是否启用白名单whitelist_sources: 白名单来源skip_enabled: 是否启用跳过条件skip_conditions: 跳过条件列表
predecessors: 前置阶段ID列表
项目参数:
name: 项目名称(必填)description: 项目描述target_scope: 目标作用域(CIDR列表)cron_expression: 定时表达式(可选)status: 项目状态(pending/running/paused/completed/failed)
调度参数:
interval: 轮询间隔(默认10秒)max_concurrency: 最大并发任务数(默认5)
资产管理能力 ✅ 已完成
核心能力:
- 主机资产管理: 管理主机资产及其服务
- Web资产管理: 管理Web应用资产
- 网络资产管理: 管理网络资产
- 漏洞资产管理: 管理漏洞信息
- 统一资产管理: 提供统一的资产视图
- 资产ETL处理: 提取、转换、加载扫描结果
- 指纹识别与匹配: 识别服务指纹并打标签
- 资产策略管理: 管理资产白名单和跳过策略
主机资产参数:
ip: IP地址(必填)hostname: 主机名os: 操作系统os_version: 操作系统版本mac: MAC地址status: 状态(online/offline)
服务资产参数:
host_id: 所属主机ID(必填)port: 端口号(必填)proto: 协议类型(tcp/udp)state: 端口状态service: 服务名称product: 产品名称version: 版本号banner: 服务Bannercpe: CPE标识
Web资产参数:
url: URL地址(必填)domain: 域名title: 页面标题server: 服务器信息status_code: 状态码content_length: 内容长度tech_stack: 技术栈fingerprint: 指纹信息
漏洞资产参数:
target_type: 目标类型(host/service/web)target_ref_id: 目标引用ID(必填)cve: CVE编号title: 漏洞标题description: 漏洞描述severity: 严重程度cvss: CVSS评分poc: PoC信息status: 状态(open/fixed/ignored)
标签系统能力 ✅ 已完成
核心能力:
- 标签CRUD: 创建、查询、更新、删除标签
- 规则管理: 管理匹配规则
- 自动标签: 根据属性自动打标签
- 标签传播: 根据规则批量打标签
- 实体标签管理: 管理实体与标签的关联关系
- 标签联动: 支持标签联动功能
标签参数:
name: 标签名称(必填)parent_id: 父标签IDcolor: 标签颜色category: 标签分类description: 标签描述
规则参数:
name: 规则名称(必填)entity_type: 实体类型(host/service/web/network/vuln)rule: 匹配规则(JSON格式)tag_ids: 关联的标签ID列表enabled: 是否启用
认证授权能力 ✅ 已完成
核心能力:
- 用户注册: 支持用户注册
- 用户登录: 用户名/密码登录
- JWT令牌管理: 生成和验证JWT令牌
- 会话管理: 管理用户会话
- RBAC权限控制: 基于角色的访问控制
- 密码管理: 密码哈希和验证
用户参数:
username: 用户名(必填)email: 邮箱(必填)password: 密码(必填)nickname: 昵称phone: 电话status: 状态(enabled/disabled)password_v: 密码版本
角色参数:
name: 角色名称(必填)description: 角色描述permissions: 权限列表
系统监控能力 ✅ 已完成
核心能力:
- Agent健康监控: 监控Agent在线状态
- Agent性能监控: 监控Agent性能指标
- 任务状态监控: 监控任务执行状态
- 项目进度监控: 监控项目执行进度
配置管理能力 🚧 部分完成
核心能力:
- Agent配置查询: 查询Agent配置(占位实现)
- Agent配置更新: 更新Agent配置(占位实现)
规则更新能力 ✅ 已完成
核心能力:
- Agent规则更新: 支持Agent主动拉取规则更新
日志收集能力 🚧 部分完成
核心能力:
- Agent日志收集: 收集Agent日志(占位实现)
即时告警能力 🚧 部分完成
核心能力:
- Agent即时告警: 接收Agent即时告警(占位实现)
Master完成度总结
| 能力模块 | 完成度 | 说明 | |---------|--------|------| | Agent管理 | ✅ 100% | 完整实现,支持注册、认证、状态管理 | | 编排器 | ✅ 100% | 完整实现,支持DAG工作流 | | 资产管理 | ✅ 100% | 完整实现,支持多种资产类型 | | 标签系统 | ✅ 100% | 完整实现,支持自动打标签 | | 认证授权 | ✅ 100% | 完整实现,支持RBAC | | 系统监控 | ✅ 100% | 完整实现 | | 配置管理 | 🟡 30% | 占位实现 | | 规则更新 | ✅ 100% | 完整实现 | | 日志收集 | 🟡 30% | 占位实现 | | 即时告警 | 🟡 30% | 占位实现 |
总体完成度: 约 90%
Agent节点功能 (Worker)
核心架构特性
- 无状态执行: 不维护任务上下文,执行完即销毁
- Factory模式: 统一能力构建入口,确保配置一致性
- QoS自适应限流: 基于RTT估算的动态并发控制
- 跨平台支持: Linux/Windows/macOS原生支持
- 零外部依赖: 纯Go实现,无需安装额外工具
扫描引擎详细能力
1. IP存活扫描 (ip_alive_scan) ✅ 已完成
核心能力:
- 支持ARP/ICMP/TCP Connect三种探测协议
- 自动策略选择(同网段优先ARP,跨网段ICMP+TCP)
- 支持手动指定协议开关
- 内置QoS自适应限流(初始200,最大5000并发)
- 支持TTL猜测操作系统
- 支持主机名反向解析
参数:
enable_arp(bool): 启用ARP探测enable_icmp(bool): 启用ICMP探测enable_tcp(bool): 启用TCP Connect探测tcp_ports([]int): TCP探测端口列表(默认[22,23,80,139,512,443,445,3389])concurrency(int): 并发数(默认1000)resolve_hostname(bool): 解析主机名(默认false)timeout: 默认1小时
2. 端口服务扫描 (port_scan) ✅ 已完成
核心能力:
- 基于Gonmap引擎的端口扫描
- 支持Nmap服务指纹识别(内置规则库)
- 支持服务探测(可选)
- 支持CPE指纹识别
- 内置QoS自适应限流(初始100,最大2000并发)
- 动态超时控制(基于RTT估算)
参数:
port(string): 端口范围(如"80,443,1000-2000"、"top100"、"top1000")rate(int): 扫描速率/并发数(默认1000)service_detect(bool): 启用服务识别(默认true)timeout: 默认1小时
3. 操作系统扫描 (os_scan) ✅ 已完成
核心能力:
- 多引擎并发竞速识别
- TTL引擎:基于TTL值快速猜测
- Nmap Stack引擎:基于Nmap OS指纹库深度识别
- Service Banner引擎:基于服务Banner识别
- 支持三种模式:fast/deep/auto
- 动态超时控制(基于RTT估算)
参数:
mode(string): 扫描模式fast: 仅TTL快速识别deep: Nmap深度识别auto: 混合模式(默认)
timeout: 默认30分钟
4. 弱口令爆破 (brute_force) ✅ 已完成
核心能力:
- 支持15+种协议爆破:SSH, RDP, MySQL, Redis, FTP, Telnet, SNMP, SMB, PostgreSQL, Oracle, MSSQL, MongoDB, Elasticsearch, Clickhouse等
- 内置字典管理器
- 支持自定义用户名/密码字典
- 支持字典文件路径
- 全局QoS自适应限流(初始50,最大200并发)
- 支持找到即停或继续爆破
- 单次尝试超时3秒
参数:
service(string): 目标服务(必须)port(string): 目标端口(支持多个端口逗号分隔)users(string): 用户名(支持文件路径或逗号分隔)pass(string): 密码(支持文件路径或逗号分隔)stop_on_success(bool): 找到即停(默认true)timeout: 默认1小时
5. Web综合扫描 (web_scan) 🟡 部分完成
核心能力: Web指纹识别、目录枚举、敏感文件检测
参数:
ports(string): Web端口(默认"80,443")path(string): 扫描路径(默认"/")method(string): HTTP方法(默认"GET")timeout: 默认30分钟
6. 目录扫描 (dir_scan) 🟡 部分完成
核心能力: 基于字典的目录爆破
参数:
dict(string): 字典路径extensions(string): 文件扩展名threads(int): 线程数(默认10)timeout: 默认2小时
7. 漏洞扫描 (vuln_scan) 🟡 部分完成
核心能力: 集成Nuclei引擎进行漏洞验证
参数:
templates(string): Nuclei模板路径severity(string): 漏洞等级(默认"medium,high,critical")timeout: 默认1小时
8. 子域名扫描 (subdomain) 🟡 部分完成
核心能力: 字典爆破/被动收集子域名
参数:
dict(string): 字典路径threads(int): 线程数(默认10)timeout: 默认1小时
9. 代理服务 (proxy) 🟡 部分完成
核心能力: SOCKS5/HTTP代理服务器、端口转发
参数:
mode(string): 代理模式(socks5/http/port_forward,默认socks5)listen(string): 监听地址(默认":1080")auth(string): 认证信息(格式user:pass)forward(string): 转发目标(仅port_forward模式需要)timeout: 0(无超时)
10. 原始命令执行 (raw_cmd) 🔴 未实现
用途: 执行原始命令,用于特殊场景
Pipeline编排能力 ✅ 已完成
核心能力:
- 自动化编排器(AutoRunner)
- 漏斗式扫描流程:存活→端口→服务→OS→Web→漏洞
- 目标生成器(支持IP/CIDR/域名)
- 上下文传递(各阶段间共享数据)
- 支持阶段依赖和条件执行
Pipeline参数:
target(string): 扫描目标(必须)concurrency(int): 并发数(默认10)port_range(string): 端口范围(默认"top1000")show_summary(bool): 显示摘要enable_brute(bool): 启用爆破(默认false)brute_users(string): 爆破用户名brute_pass(string): 爆破密码
网络基础设施
- 统一网络连接层 (Dialer): 全局超时控制、代理支持(SOCKS5)、连接复用
- Raw Socket能力 (NetRaw): Linux完整支持,Windows/macOS降级处理
- QoS自适应限流: RTT估算器、自适应限流器、动态超时控制
结果输出能力
- Console: 控制台输出
- CSV: 文件输出
- JSON: 可扩展格式
完成度总结
| 能力模块 | 完成度 | 说明 | |---------|--------|------| | IP存活扫描 | ✅ 100% | 完整实现,支持多协议、QoS | | 端口服务扫描 | ✅ 100% | 完整实现,基于Gonmap引擎 | | 操作系统扫描 | ✅ 100% | 完整实现,多引擎竞速 | | 弱口令爆破 | ✅ 100% | 完整实现,支持15+协议 | | Web扫描 | 🟡
