mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-19 10:28:09 +02:00
152 lines
6.4 KiB
Markdown
152 lines
6.4 KiB
Markdown
# 资产管理
|
||
|
||
[English](../en-US/asset-management.md)
|
||
|
||
资产管理用于将手工录入、FOFA、HTTP API 和 Agent 任务中发现的域名、IP、端口与服务统一归档,形成可持续维护的资产基线。它关注三个问题:当前拥有哪些资产、哪些资产已经检查、风险集中在哪里。
|
||
|
||
> 资产管理面向安全测试和攻击面治理,不替代完整的企业 CMDB。仅可录入和扫描自有系统或已获得明确授权的目标。
|
||
|
||
## 功能概览
|
||
|
||
资产管理包含三个主要入口:
|
||
|
||
- **资产概览**:统计资产总量、IP、域名、端口、近期变化、扫描覆盖率和协议分布。
|
||
- **资产库**:维护资产身份、服务信息、来源、标签、项目归属、扫描记录和风险状态。
|
||
- **信息收集**:查询 FOFA,并将确认归属的结果单条或批量写入资产库。
|
||
|
||
资产可以进一步发起单目标分析或批量扫描。Agent 保存漏洞并完成扫描回写后,资产列表会同步展示相关漏洞数量、风险等级和最近扫描时间。
|
||
|
||
## 资产字段
|
||
|
||
每条资产可记录:
|
||
|
||
- Host、IP、域名、端口和协议;
|
||
- 页面标题、服务或产品指纹;
|
||
- 国家/地区、省份/州和城市;
|
||
- 来源、来源查询条件和标签;
|
||
- 活跃或停用状态;
|
||
- 所属项目和所有者;
|
||
- 首次发现、最近发现、创建和更新时间;
|
||
- 最近扫描时间及关联的对话、任务队列和子任务;
|
||
- 相关漏洞数量和当前风险等级。
|
||
|
||
至少需要提供 `host`、`ip` 或 `domain` 中的一项。
|
||
|
||
## 建立资产基线
|
||
|
||
### 手工新增
|
||
|
||
进入 **资产管理 → 资产库**,点击 **新增资产**。常见目标格式包括:
|
||
|
||
```text
|
||
https://example.com:8443
|
||
example.com
|
||
192.0.2.10:443
|
||
[2001:db8::1]:443
|
||
```
|
||
|
||
系统会尽量识别 URL、域名、IP、端口和协议。保存前可继续补充项目、标签、标题、服务指纹、地理位置和状态。
|
||
|
||
### 从 FOFA 导入
|
||
|
||
1. 在配置文件或系统设置中填写 FOFA 邮箱和 API Key,也可使用 `FOFA_EMAIL`、`FOFA_API_KEY` 环境变量。
|
||
2. 进入 **资产管理 → 信息收集**。
|
||
3. 输入或生成 FOFA 查询语句,并确认查询范围。
|
||
4. 执行查询,选择确认归属的结果后点击 **入库所选**。
|
||
5. 根据返回的新增、更新和跳过数量检查导入结果。
|
||
|
||
外部搜索结果不等同于自有资产。建议先通过组织域名、证书、网段或产品指纹缩小范围,确认授权后再入库。
|
||
|
||
## 规范化与去重
|
||
|
||
不同入口可能使用不同形式描述同一目标。系统会执行以下处理:
|
||
|
||
- 去除字段首尾空白;
|
||
- IP、域名和协议转为小写;
|
||
- 从 URL 型 Host 提取 hostname、协议和端口;
|
||
- 为未显式指定端口的 HTTP/HTTPS 补充默认端口;
|
||
- 将国际化域名转换为 ASCII/Punycode;
|
||
- 清理并去重标签;
|
||
- 为缺失的状态和来源补充默认值。
|
||
|
||
资产以“目标 + 端口 + 协议”作为服务级去重依据。目标优先采用域名,其次为 IP,最后为 Host。因此,同一主机的 `80/http` 和 `443/https` 会被视为不同资产。
|
||
|
||
重复资产再次入库时,系统会更新本次提供的非空字段和最近发现时间,保留未提供的原有信息,不会重置首次发现时间。
|
||
|
||
## 查询与筛选
|
||
|
||
Web 端支持搜索 Host、IP、域名、标题、服务和标签,并按状态或项目筛选。后端和 Agent 工具还支持:
|
||
|
||
- 来源、标签、端口和协议;
|
||
- 已扫描、从未扫描等扫描状态;
|
||
- 首次发现、最近发现和最近扫描时间范围;
|
||
- 按最近扫描时间等白名单字段排序;
|
||
- 分页查询。
|
||
|
||
按最近扫描时间升序排列时,从未扫描的资产优先显示,便于识别覆盖盲区。
|
||
|
||
## 扫描与风险回写
|
||
|
||
### 单资产扫描
|
||
|
||
在资产列表中点击 **扫描**。系统会:
|
||
|
||
1. 创建新对话并注入资产目标和资产 ID;
|
||
2. 将对话与资产关联;
|
||
3. 引导 Agent 检查暴露服务和授权范围内的安全风险;
|
||
4. 使用 `record_vulnerability` 保存确认的问题;
|
||
5. 使用 `complete_asset_scan` 回写扫描状态。
|
||
|
||
扫描提示词支持 `{{asset_id}}`、`{{target}}`、`{{host}}`、`{{ip}}`、`{{domain}}` 和 `{{port}}` 变量。发起前应按授权范围调整测试强度、端口和验证方式。
|
||
|
||
### 批量扫描
|
||
|
||
在资产库中选择多个目标后,点击 **创建扫描任务**。系统会为每个资产创建独立子任务,并建立资产、队列和子任务之间的关联。
|
||
|
||
当前默认使用手动调度、单并发和 Eino 单 Agent 模式,以减少对目标和本机资源的瞬时压力。执行前仍需确认测试窗口、请求频率、允许的验证方式和审批要求。
|
||
|
||
### 风险计算
|
||
|
||
资产风险根据最近一次关联扫描中的未关闭漏洞动态计算:
|
||
|
||
- `critical`、`high`、`medium`、`low`、`info`:存在对应等级的未关闭漏洞;
|
||
- `normal`:已扫描且没有开放风险;
|
||
- `unassessed`:尚未完成扫描。
|
||
|
||
已修复、误报或忽略的漏洞仍保留在历史数量中,但不会继续提高当前风险等级。
|
||
|
||
## Agent 工具
|
||
|
||
系统向 Agent 提供六个内置资产工具:
|
||
|
||
- `create_asset`:新增资产或去重更新;
|
||
- `get_asset`:按 ID 获取完整详情;
|
||
- `query_assets`:分页、筛选和排序;
|
||
- `update_asset`:局部更新;
|
||
- `delete_asset`:删除资产;
|
||
- `complete_asset_scan`:扫描完成后回写状态。
|
||
|
||
`query_assets` 默认每页返回 20 条、最多 50 条摘要。需要完整信息时使用 `get_asset`,避免大量资产数据占用模型上下文。
|
||
|
||
## 权限控制
|
||
|
||
资产权限分为:
|
||
|
||
- `asset:read`:查看资产和统计数据;
|
||
- `asset:write`:创建、导入、修改和回写扫描;
|
||
- `asset:delete`:删除资产。
|
||
|
||
服务端会同时检查资产所有者、显式资源授权、所属项目及权限 Scope(`all`、`assigned`、`own`)。当对话绑定项目后,Agent 的资产查询会被限制在该项目内,工具参数不能扩大访问范围。
|
||
|
||
## 推荐使用流程
|
||
|
||
1. 划定一组明确授权的域名、IP 或网段。
|
||
2. 手工加入少量核心目标,验证识别和去重结果。
|
||
3. 使用标签区分生产、测试、核心业务和外网范围。
|
||
4. 配置 FOFA,从窄查询开始并确认资产归属。
|
||
5. 对单个低风险目标测试扫描和漏洞回写流程。
|
||
6. 使用“从未扫描”和“超过 30 天未扫描”筛选覆盖盲区。
|
||
7. 确认流程稳定后,再逐步创建小规模批量任务。
|
||
|
||
经过确认的小规模资产基线通常比来源混乱的全量清单更有价值。
|