概述:CVE 扫描工具架构综述。主要目的是查看识别 CVE、CNVE 等的识别逻辑。
⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠ You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’
匹配程序:框架是否具有可识别漏洞 ID 的逻辑。
【架构】CVE扫描工具架构收集
匹配程序:⭐⭐
官方网站: Welcome to CVE Binary Tool’s documentation! — CVE Binary Tool 3.4 documentation
简介: 主要用于扫描系统中是否包含已知的漏洞。可以扫描二进制文件中超过 200 个常见的、易受攻击的组件,例如(openssl、libpng、libxml2、expat 等等),也可以扫描所使用的已知组件,可以获得与 SBOM 相关的已知漏洞列表或组件版本和版本列表。
项目地址: intel/cve-bin-tool: The CVE Binary Tool helps you determine if your system includes known vulnerabilities. You can scan binaries for over 200 common, vulnerable components (openssl, libpng, libxml2, expat and others), or if you know the components used, you can get a list of known vulnerabilities associated with an SBOM or a list of components and versions.
项目介绍中对架构有完整的描述,简单转述下,仅供个人学习。
架构
项目架构图如下所示:
工作流程
Download CVE Data (from NVD, Redhat, OSV, Gitlab, and Curl).
This happens once per day by default, not every time a scan is run.
On first run, downloading all data can take some time.
Create/read a component list. There are two modes of operation:
Creates a component list (including versions) using a combination of binary checkers and language component lists (such as python’s requirements.txt).
Read SBOM (use an existing component list in a standardized Software Bill of Materials format.)
Create CVE List
This looks up all components found or read from an existing bill of materials and reports back any known issues associated with them
Include triage/additional data
There are several options for adding triage/notes, information from previous reports to track vulnerability change over time, or known fix data
Generate report in one or more formats (console, json, csv, html, pdf)
myscan
简介
匹配程度: ⭐⭐⭐⭐
项目地址
amcai/myscan: myscan 被动扫描
简介
myscan是参考awvs的poc目录架构,pocsuite3、sqlmap等代码框架,以及搜集互联网上大量的poc,由python3开发而成的被动扫描工具。此项目源自个人开发项目,结合个人对web渗透,常见漏洞原理和检测的代码实现,通用poc的搜集,被动扫描器设计,以及信息搜集等思考实践。
myscan依赖burpsuite和redis,需启动redis和burpsuite插入myscan的插件。 而且不支持 Windows.
这里仅参考设计思路。
架构
myscan 工作流程
依靠burp强大的抓包和解析数据包的功能,插件调取api把burp的请求体和响应体的处理数据整合成json数据传输到redis。
myscan调取redis数据,对每一个request/response数据包进行perfile(访问url)、perfolder(每一个目录)、perscheme(每一个数据包)分类去重,通过redis分发到各个子进程,然后运行相应的poc。
总结
根据 burp 的响应被动的形式,需要事先设置好 POC 与 response 的对应关系。
可参考的逻辑:
实现上还是通过流量去匹配,查询到特定的流量后,根据 CVE 和关键字的匹配关系,重新运行相关 CVE 查看是否得到对应的响应,进而判断该漏洞是否存在。
CVE vulnerability data
RedHat Parameters
Redhat CVE Json 字段说明
Name
Description
Example
before
Index of CSAF documents before the query date. [ISO 8601 is the expected format]
2016-03-01
after
Index of CSAF documents after the query date. [ISO 8601 is the expected format]
2016-02-01
rhsa_ids
Index of CSAF documents for RHSA_IDs separated by comma
RHSA-2018:2748,RHSA-2018:2791
bug
Index of CSAF documents for Bugzilla Ids
1326598,1084875
cve
Index of CSAF documents for CVEs
CVE-2014-0160,CVE-2016-3990
severity
Index of CSAF documents for severity
low,moderate,important,critical
package
Index of CSAF documents which affect package
samba,thunderbird
page
Index of CSAF documents for page number
Default: 1
per_page
Number of index of CSAF documents to return per page
Default: 1000
created_days_ago
Index of CSAF documents created days ago
10
CVE 字段说明
相关链接
Excalidraw Data
Text Elements
项目地址和简介 ^Z2PITmxf
CVE-bin-tool ^9Vquv07o
workflow ^CEoNeJpD
工具整理 ^PwJjLMMt
文章一览 ^XYHghw6O
myscan ^UlMoGvor
文章一览 ^KyJQjF5m
项目地址和简介 ^UGJ3aciX
架构 ^lG52jUJv
workflow ^u7uvBpli
Element Links
jwVoyh0J: [[【架构】CVE扫描工具架构收集#cve-bin-tool]]
w0B9FGes: [[【架构】CVE扫描工具架构收集#【架构】CVE扫描工具架构收集]]
CxS5Pa8i: [[【架构】CVE扫描工具架构收集#工作流程]]
heCK5htv: [[【架构】CVE扫描工具架构收集#myscan]]
AqF2xZli: [[【架构】CVE扫描工具架构收集##简介]]
9gXlWdr5: [[【架构】CVE扫描工具架构收集#myscan 工作流程]]
Embedded Files
aa666f22951fe1668cad96634a251aa87c7aabbb: [[【架构】CVE扫描工具架构收集/IMG-20240918155917722.png]]
18ae997fbc30639e8c1af682bd607724d494fa2e: [[【架构】CVE扫描工具架构收集/IMG-20240918155918425.png]]
%%
Drawing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 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
%%