长亭百川云 - 文章详情

跨平台社区化Web指纹识别工具ObserverWard_0x727

0x727开源安全团队

77

2024-07-13

ObserverWard_0x727

类别

说明

作者

三米前有蕉皮

团队

0x727 未来一段时间将陆续开源工具

定位

社区化指纹库识别工具。

语言

Rust

功能

命令行,API服务Web指纹识别工具

1. 源码手动安装

git clone https://github.com/0x727/ObserverWard\_0x727  
cd ObserverWard\_0x727  
cargo build \--target  x86\_64-unknown-linux-musl \--release \--all-features
  • 更多安装细节请查看当前项目的Actions自动化编译构建流程文件。

2. 下载二进制安装

  • 发行版本下载页面。

使用方法

➜  ~ ./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

识别单个目标

开启API服务

➜  ~ ./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
  • 结果和从文件获取的效果一样,这里不再截图展示。

导出结果到JSON文件

➜  ~ ./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"}\]%

导出结果到CSV文件

➜  ~ ./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

FingerprintHub

郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。

该仓库为侦查守卫(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

如何贡献

提交指纹规则

  • 点击Fork按钮克隆这个项目到你的仓库
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
  • 配置你的github个人信息
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
  • 打开你Fork这个项目的地址,点击与上游合并,等待审核合并指纹。

指纹反馈

  • 当前指纹库收集于互联网,虽然已经经过了人工整理,但是难免会有以下情况:

  • 出现误报,当指纹不够精确时会产生识别不准确的情况。

  • 组件重复,可能出现多个组件名称,但是都是同一个组件。

  • 识别不出组件,指纹规则覆盖不到。

  • 出现上面情况可以提交issues,可以附上演示URL地址,如果不方便演示可以提交首页的HTML源码,我们会人工修正指纹规则。

谢谢

  • 感谢您的关注和支持!
相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2