ObserverWard_0x727
类别
说明
作者
三米前有蕉皮
团队
0x727 未来一段时间将陆续开源工具
定位
社区化指纹库识别工具。
语言
Rust
功能
命令行,API服务Web指纹识别工具
git clone https://github.com/0x727/ObserverWard\_0x727
cd ObserverWard\_0x727
cargo build \--target x86\_64-unknown-linux-musl \--release \--all-features
➜ ~ ./observer\_ward \-h
ObserverWard 0.0.1
author: Kali-Team
USAGE:
observer\_ward \[FLAGS\] \[OPTIONS\]
FLAGS:
\-h, \--help Prints help information
\--stdin Read url(s) from STDIN
\-u, \--update Update web fingerprint
\-V, \--version Prints version information
OPTIONS:
\-c, \--csv <CSV> Export to the csv file
\-f, \--file <FILE> Path to the file
\-j, \--json <JSON> Export to the json file
\-s, \--server <SERVER> Start a web API service (127.0.0.1:8080)
\-t, \--target <TARGET> The target URL(s) (required, unless \--stdin used)
命令行参数
描述
-h, --help
打印帮助信息
--stdin
从标准输出获取要识别的目标
-u, --update
从远程指纹库更新最新指纹,也可以手动从CDN下载
-V, --version
打印版本
-c, --csv
将识别结果导出csv文件,接受一个文件路径
-f, --file
从文件里面读取要识别的目标
-j, --json
将识别结果导出json文件,接受一个文件路径
-s, --server
开启api服务,接收要监听的IP和端口,例如:127.0.0.1:8080
-t, --target
识别单个目标
➜ ~ ./observer\_ward \-s 127.0.0.1:8080
API service has been started:http://127.0.0.1:8080/what\_web
Instructions:
curl \--request POST \\
\--url http://127.0.0.1:8080/what\_web \\
\--header 'Content-Type: application/json' \\
\--data '{"targets":\["https://httpbin.org/"\]}'
Result:
\[{"url":"https://httpbin.org/","what\_web\_name":\["swagger"\],"priority":2,"length":9593,"title":"httpbin.org"}\]
服务开启后会在提供的IP和端口上开启Web指纹识别的API服务。
API接口地址为http://127.0.0.1:8080/what_web
,请求方式为POST
,接受json数据结构如下:
{
"targets": \[
"https://gitea.com/",
"https://httpbin.org"
\]
}
➜ ~ ./observer\_ward \-t https://httpbin.org
\[ https://httpbin.org | \["swagger"\] | 9593 | httpbin.org |
高关注组件:
+\---------------------+\---------+\--------+\-------------+\----------+
| Url | Name | Length | Title | Priority |
+=====================+=========+========+=============+==========+
| https://httpbin.org | swagger | 9593 | httpbin.org | 2 |
+\---------------------+\---------+\--------+\-------------+\----------+
➜ ~ ./observer\_ward \-f target.txt
➜ ~ cat target.txt| ./observer\_ward \--stdin
➜ ~ ./observer\_ward \-t https://httpbin.org \-j result.json
\[ https://httpbin.org/ | \["swagger"\] | 9593 | httpbin.org |
高关注组件:
+\----------------------+\---------+\--------+\-------------+\----------+
| Url | Name | Length | Title | Priority |
+======================+=========+========+=============+==========+
| https://httpbin.org/ | swagger | 9593 | httpbin.org | 2 |
+\----------------------+\---------+\--------+\-------------+\----------+
➜ ~ cat result.json
\[{"url":"https://httpbin.org/","what\_web\_name":\["swagger"\],"priority":2,"length":9593,"title":"httpbin.org"}\]%
➜ ~ ./observer\_ward \-t https://httpbin.org \-c result.csv
\[ https://httpbin.org/ | \["swagger"\] | 9593 | httpbin.org |
高关注组件:
+\----------------------+\---------+\--------+\-------------+\----------+
| Url | Name | Length | Title | Priority |
+======================+=========+========+=============+==========+
| https://httpbin.org/ | swagger | 9593 | httpbin.org | 2 |
+\----------------------+\---------+\--------+\-------------+\----------+
➜ ~ cat result.csv
Url,Name,Length,Title,Priority
https://httpbin.org/,swagger,9593,httpbin.org,2
郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。
该仓库为侦查守卫(ObserverWard)指纹库,ObserverWard是一个基于社区的指纹识别工具。
类别
说明
作者
三米前有蕉皮
团队
0x727 未来一段时间将陆续开源工具
定位
社区化指纹库,让管理和使用指纹规则更加简单。
语言
Yaml
功能
使用github actions 自动更新指纹库。
name: swagger
fingerprint:
\- path: /
status\_code: 0
headers: {}
keyword:
- Swagger UI
favicon\_hash: \[\]
priority: 2
\- path: /
status\_code: 0
headers: {}
keyword:
- swagger-ui.css
favicon\_hash: \[\]
priority: 2
\- path: /
status\_code: 0
headers: {}
keyword:
- swagger-ui.js
favicon\_hash: \[\]
priority: 2
字段
数据类型
描述
path
String
HTTP请求的路径。
status_code
u32
响应状态码,不匹配可以填0。
headers
HashMap<String,String>
相应的请求头,以键值对出现,值填*
时只匹配键。
keyword
Vec
响应的HTML关键词数组,可以添加多个关键词提高识别精度
favicon_hash
HashSet
网页图标的MD5或者MMH3哈希,会与响应中的哈希取并集,yaml规则中表现为列表。
priority
u32
优先程度,用来排序是否为重要组件资产,数字越大越重要,可选:[1,2,3]
path
为一组指纹,像上面的yaml规则中有三组指纹,只要匹配到了一组,就会返回name
字段,也就是swagger
。git clone git@github.com:你的个人github用户名/FingerprintHub.git
cd FingerprintHub
git remote add upstream git@github.com:0x727/FingerprintHub.git
git fetch upstream
git checkout \-b upstream-main \--track upstream/main
git config \--global user.name "$GITHUB\_USERNAME"
git config \--global user.email "$GITHUB\_EMAIL"
git config \--global github.user "$GITHUB\_USERNAME"
git fetch \--all
git fetch upstream
main
分支上修改,创建一个新的分支并切换到新的分支。git checkout \-b thinkphp
复制一份指纹规则文件,修改文件名和你想要提交的组件名一样,修改yaml文件里面的name
字段为添加的组件名,添加或者修改规则。
跟踪修改和提交Pull-Requests,合并指纹。
git add 你添加或者修改的文件名
git commit -m "添加的组件名或者你的描述"
git push origin thinkphp
当前指纹库收集于互联网,虽然已经经过了人工整理,但是难免会有以下情况:
出现误报,当指纹不够精确时会产生识别不准确的情况。
组件重复,可能出现多个组件名称,但是都是同一个组件。
识别不出组件,指纹规则覆盖不到。
出现上面情况可以提交issues,可以附上演示URL地址,如果不方便演示可以提交首页的HTML源码,我们会人工修正指纹规则。