Sop
几个必备知识¶
我们的指纹库是 ”or“ 逻辑, 并且不支持 ”and“ 逻辑。 这是为了让指纹规则尽可能简单, 让一个最小的特征成为指纹。
具体规则见 rule文档, 里面包含了大量例子。
描述指纹结构的代码见: https://github.com/chainreactors/fingers/blob/master/fingers/fingers.go
已经添加了jsonschema, 建议使用ai辅助理解。
指纹只用来描述匹配规则。但是对于指纹的辅助属性、分类等相关信息则是通过 alias (最早用来统一多个指纹库的名字)。
https://github.com/chainreactors/fingers/blob/master/alias/alias.go
alias目前用来解决以下核心问题:
- 统一多指纹库的名称不统一的情况
- 过滤指纹
- 给指纹添加CPE、分类、优先级等信息
- 作为POC和Fingers 多对多的中间表
SOP1 通过目标网站添加指纹¶
当人类在添加一条指纹的时候,会分为以下几个核心步骤。
找到核心特征¶
我们在攻击过程中会有很多目标站点。
一般来说,绝大部分指纹都能找到一段**核心特征**。我们要确保这个核心特征尽可能不会和其他网站的重复。
例如广讯通, 我们就找了一个比较有代表性的特征
Text Only
- name: 广讯通
focus: true
rule:
- regexps:
body:
- Services/Identification/login.ashx
在fofa上确认核心特征是否有效¶
通过fofa搜索, 校验几个站点, 确认核心特征是否可以找到通类型网站, 并且不太会有误报。
SOP2 已知系统名称添加指纹¶
fofa/hunter等已经有大量的系统名称,但是其指纹不公开或者指纹质量不符合预期。 我们需要重新编写指纹。
搜索对应的指纹名称¶
搜索对应的指纹名称, 可以找到一些网站。 我们需要让AI分析站点的特征, 找到核心特征。 然后编写对应的
- fingers规则的yaml
- alias 的yaml, 提供分类和补充信息
搜索核心特征反向验证¶
搜索指纹中的body, 确认fingers是否正确。
通过api 将 校验后的指纹和alias提交到平台¶
和群里的胡对接下, cyberhub有openapi