Skip to main content

sangfor-edr-use

深信服 EDR 登录态管理、首页仪表盘、威胁资产分析、资产清点和高级威胁 API 采集。用户提到深信服 EDR、EDR、资产清点、高级威胁或 sangfor EDR 时必须先加载本 skill。

Informations de source

Dépôt
AgentFlocks/flocks
Dernière activité de la source
20 septembre 2026 à 16:54
Langue détectée de SKILL.md
chinois
Étoiles
479
Forks
90

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
4 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
sangfor-edr-use
group
平台集成
description
深信服 EDR 登录态管理、首页仪表盘、威胁资产分析、资产清点和高级威胁 API 采集。用户提到深信服 EDR、EDR、资产清点、高级威胁或 sangfor EDR 时必须先加载本 skill。
# 深信服 EDR Use ## 核心功能 实现边界:`sangfor_edr_http_login.py` 负责 HTTP 登录、认证探测、 `auth-state.json` Cookie 及 Secret Manager token bundle; `sangfor_edr_dashboard_api.py` 负责仪表盘 API 请求,只读取 HTTP 登录模块 验证过的同一套 Cookie/token,不从其他状态源拼接凭据。 `sangfor_edr_threat_assets_api.py` 负责威胁资产分析 API 请求,同样只读取 HTTP 登录模块验证过的同一套 Cookie/token。 `sangfor_edr_asset_inventory_api.py` 负责资产清点页面 API 请求,同样只读取 HTTP 登录模块验证过的同一套 Cookie/token。 `sangfor_edr_advanced_threat_api.py` 负责高级威胁告警模式和事件模式 API 请求, 同样只读取 HTTP 登录模块验证过的同一套 Cookie/token。 - 管理同一次登录产生的 Cookie 与 `login_token`。 - 默认使用 HTTP 登录,开始前必须向用户索取并保存 EDR 地址、用户名和密码。 - 仅当用户明确选择“打开页面后手动登录”时,才可不索取账密并直接使用 browser/CDP。 - HTTP 登录连续 3 次失败后,按“browser/CDP 自动化登录(仍需账密)→保留页面供用户手动登录(不需账密)”顺序降级。 - 每次登录或数据采集前探测现有认证,认证有效则跳过登录,失效则重新登录并更新存储。 - 通过 API 采集首页终端概况、受影响终端、漏洞、勒索防护、实时病毒、Top 5 终端和设备资源使用率。 - 通过 API 采集威胁资产分析的风险汇总、资产分组和威胁终端事件列表,支持风险级别、资产分组、终端状态、隔离状态和分页筛选。 - 通过 API 采集资产清点页面的资产分类统计。 - 通过 API 采集高级威胁的告警模式和事件模式列表,支持多选筛选、时间范围和自动分页。 ## 输入与输出 ### 认证工具 调用 `sangfor_edr_auth`: - `status_auth_state`:返回认证文件、凭据和认证探测状态,不返回敏感值。 - `ensure_auth_state`、`refresh_auth_state`、`http_login`:执行“探测后按需 HTTP 登录”;HTTP 连续 3 次失败时按降级策略进入 browser/CDP,再失败则转为手动登录。 - `browser_login`:用户明确选择自动化登录时,执行“探测后按需 browser/CDP 登录”;该路径需要账密,除非用户明确要求打开页面后自行手动登录。 - `validate_auth_state`:仅验证浏览器 state。 - `complete_manual_login`:保存用户在已打开浏览器中完成的登录。 成功输出包含 `status`、`valid`、`login_skipped` 和非敏感探测结果;失败输出包含稳定的 `reason` 与恢复建议。 ### 仪表盘工具 调用 `sangfor_edr_dashboard`,可输入: - `sections`:可选采集项;省略时采集全部仪表盘数据。 - `days`:统计时间范围,允许 1–90 天。 - `base_url`、`auth_state_path`:可选运行时覆盖。 输出包含 `data`、`errors`、`sections`、`days` 和本次认证是复用还是重登;不得输出 Cookie、密码或 `login_token`。 ### 威胁资产分析工具 调用 `sangfor_edr_threat_assets`,可输入: - `sections`:`risk_summary`、`zones`、`agent_events`,省略时采集全部数据。 - `days`:威胁终端事件时间范围,允许 1–90 天。 - `info`:用户在搜索框输入的终端名称、IP 地址或资产使用人关键词,原样放入 `list_agent_event.filter.info`。 - `risk_level`、`host_type`、`zone_name`、`agent_state`、`isolate_agent`:威胁资产筛选条件;用户使用中文条件时由 Skill 转换为接口枚举值。 - `page`、`limit`、`paginate`:事件列表分页配置;`limit` 仅允许 10、20、50、100、500,默认自动采集至 `total_items`。 - `base_url`、`auth_state_path`:可选运行时覆盖。 输出包含风险汇总、资产分组、事件列表、分页信息和接口错误;不得输出 Cookie、密码或 `login_token`。 ### 资产清点工具 调用 `sangfor_edr_asset_inventory`,可输入: - `scene_type`:资产清点范围,默认 `server_and_pc`。 - `base_url`、`auth_state_path`:可选运行时覆盖。 输出包含原始资产分类响应、带中英文标签的 `readable_data` 和接口错误;不得输出 Cookie、密码或 `login_token`。 分类字段映射由采集模块维护;`Replace` 按页面显示映射为“真替真用”,英文保留原始字段名 `Replace`。 ### 高级威胁工具 调用 `sangfor_edr_advanced_threat`,可输入: - `sections`:`warning_logs`、`incidents`;省略时采集两种模式。 - `threat_levels`:威胁等级单值或多值。 - `disposal_states`、`event_disposal_states`、`agent_types`、`detect_sources`、`event_types`:事件模式多选条件。 - `wl_switch`:已例外告警单选;`0`=隐藏,`1`=显示。 - `days`:默认最近 7 天;或成对提供 `begin_time`、`end_time`。 - `page_no`、`page_limit`、`paginate`:分页配置,默认自动采集全部。 - `base_url`、`auth_state_path`:可选运行时覆盖。 输出包含 `data`/`raw_data`、`readable_data`、分页元数据和分项 `errors`;不得输出 Cookie、密码或 `login_token`。 ## 关键配置 - `base_url`:从用户提供的 EDR 地址提取 scheme、host 和 port;不得使用固定示例地址。 - `username`、`password`:从设备配置或 Secret Manager 读取。 - `auth_state_path`:Cookie state 文件位置。 - `auto_ocr_code`、`max_captcha_retry`:HTTP/browser 登录验证码配置。 - selector 和页面路径配置仅用于 browser/CDP 登录。 ## EDR 交互协议 1. 从 Secret Manager 与 `auth-state.json` 加载成套认证,并校验 base URL 和 Cookie 指纹。 2. 使用 Cookie 与 `login_token` 调用威胁终端概览接口 `get_agent_overview`: - HTTP 200、无登录页重定向、响应成功且包含终端概览数据:认证有效,跳过登录。 - Cookie 缺失或不匹配、401/403、重定向、非 200、响应无终端概览数据:认证失效。 3. 默认重新登录流程:访问登录页,获取 RSA 公钥和验证码,提交 `dlogin`,调用 `launch_login.php`,再 GET `/ui`;HTTP 登录连续 3 次失败后进入 browser/CDP 自动化登录,自动化登录仍需账密,自动化登录失败后保留页面供用户手动登录。 4. 登录成功后将 Cookie 写入 `auth-state.json`,将 `login_token` 写入 Secret Manager,并更新配对指纹。 5. 仪表盘 API 只能使用通过上述探测的同一套 Cookie/token;禁止从不同 state 或 Secret 拼接。 6. 威胁资产分析 API 使用以下接口: - `POST /launch.php?s={login_token}&opr=list_risk_agent_total_count`:风险级别和隔离终端汇总。 - `POST /launch.php?s={login_token}&opr=list_zones`:资产分组列表,payload 使用 `data.local=true`。 - `POST /launch.php?s={login_token}&opr=list_agent_event`:威胁终端事件列表,payload 使用 `filter.info`(终端名称/IP/资产使用人关键词)、其他筛选条件、`day_sum`、`page` 和 `limit`;分页采集直到返回的 `total_items` 收集完成。 - 三个接口均使用当前登录会话的 Cookie、动态 `query_id` 和同一 `login_token`。 7. 威胁资产筛选枚举映射: - `risk_level`:空值=全部,`0`=低风险,`1`=中风险,`2`=高风险。 - `host_type`:`0`=PC 终端,`1`=服务器终端;用户说“PC/服务器”时转换为对应数字,不能把中文直接放入 payload。 - `agent_state`:`-1`=全部终端状态,`0`=在线,`1`=离线,`2`=已禁用,`3`=未授权,`4`=已卸载,`6`=已降级。 - `limit`:只能使用 `10/20/50/100/500`。 - `zone_name`:先调用 `list_zones`,按返回的 `zone_name` 或 `full_zone_name` 精确匹配,再将对应的设备专属 `zone_id` 放入 `list_agent_event.filter.zone_id`;不能使用固定 zone ID,也不能把中文分组名直接作为 `zone_id`。 8. 资产清点 API 使用 `POST /api/edrgoweb/v1/asset/inventory/classify?s={login_token}`,payload 为 `{"sceneType":"server_and_pc"}`;复用当前登录会话的 Cookie 和同一 `login_token`,接口返回 `code != 0` 时视为失败。 9. 高级威胁 API 使用: - `POST /api/edrgoweb/v1/advthreats/querywarninglogs?_method=get&s={login_token}`:告警模式列表,只发送已确认的 `threatLevel`、`wlSwitch` 筛选。 - `POST /api/edrgoweb/v1/advthreats/queryincidentinfo?_method=get&s={login_token}`:事件模式列表,发送威胁等级、处置状态、实时防护、终端类型、检测来源、事件标签、时间范围和已例外告警筛选。 - `uuid` 是动态请求关联标识,不是设备 ID;`uid` 默认使用当前登录用户名,`tid` 默认 `0`。 10. 高级威胁筛选映射: - `threatLevel`:`5`=严重、`4`=高危、`3`=中危、`2`=低危、`1`=信息。 - `disposalState`:`0`=待处置、`2`=已处置、`3`=已忽略。 - `eventDisposalState`:`0`=暂不支持、`1`=未处置、`2`=自动处置中、`3`=已自动处置。 - `agentType`:`0`=PC、`1`=服务器。 - `detectSource`:`1`=IOC引擎、`2`=IOA引擎、`3`=SIP联动、`6`=MS引擎、`8`=AF联动;响应中的未知值保留原值并标记“未知”。 - `eventType`:`1`=钓鱼攻击、`2`=Web入侵、`3`=恶意病毒、`0`=其他。 - 除时间范围和 `wlSwitch` 外,上述业务筛选均支持多选。 ## 错误处理 - 缺少地址或账密:返回缺失字段,向用户索取后保存到配置或 Secret Manager。 - 验证码或 HTTP 登录失败:最多进行 3 次独立 HTTP 登录尝试;仍失败则切换 browser/CDP 自动化登录,切换时仍需账密。 - browser/CDP 自动化登录失败或用户明确选择打开页面后手动登录:保留浏览器供用户完成登录,不再索取账密,再调用 `complete_manual_login`。 - 认证探测失败:禁止继续业务 API;先执行 HTTP 重登并再次探测,连续 3 次 HTTP 仍失败则按 browser/CDP 自动化登录→手动登录降级。 - 仪表盘部分接口失败:保留成功数据,在 `errors` 中按采集项返回失败原因。 - 资产清点接口失败:在 `errors` 中返回接口失败原因,不输出敏感认证信息。 - 高级威胁单个模式失败:保留另一个模式的成功数据,并在 `errors` 中按模式返回脱敏原因。 - Cookie、密码和 `login_token` 不得回显、记录日志或混入业务输出。 ## 执行约束 - 运行本 Skill 提供的 Python 脚本时,必须使用 Flocks 虚拟环境;禁止使用系统 Python。 - 不得假设 Flocks 项目、插件或虚拟环境的绝对路径;代码必须通过当前运行时加载的模块、`Path.home()`、`~/.flocks` 或显式配置/环境变量解析路径。 - 需要具体 CDP 命令、浏览器启动方式、验证码识别、selector、tab/iframe 处理或页面关键词时,必须先阅读 [references/cdp-workflow.md](references/cdp-workflow.md),不要在本文件重复展开。 - `bu.port` 是 Flocks browser daemon 的 IPC 端口文件,不是 Chrome remote-debugging 端口;禁止手工创建或修改。 - 默认认证和仪表盘采集开始时不得启动 browser daemon;只有用户明确选择 `browser_login`、执行 `validate_auth_state`/`complete_manual_login`,或 HTTP 登录连续 3 次失败进入降级流程时,才允许使用 browser/CDP。 - HTTP 登录连续 3 次失败后必须按 browser/CDP 自动化登录→手动登录顺序降级;自动化登录阶段仍需账密,手动登录阶段不得要求账密。 - 任何 API 采集前必须完成认证探测;认证探测失败时不得继续调用业务接口。 - 威胁资产分析的分页请求必须复用同一套 Cookie/token,不得在分页过程中重新拼接或替换认证参数。 - 资产清点 API 请求必须复用同一套 Cookie/token;不得把抓包中的 sessionid、token 或设备地址写死为通用凭据或地址。 - 高级威胁分页必须复用同一套 Cookie/token;不得输出响应 `req` 中的 token,也不得把抓包中的 `uid`、token、Cookie 或设备地址写死。 - 用户未提供接口参数名时,必须根据中文语义完成上述映射;无法确认的筛选条件不得猜测数值,应省略筛选或向用户确认。
Voir sur GitHub