前言
谷歌曾宣布将其内部使用的 Tsunami 漏洞扫描程序进行开源,以帮助其他组织保护用户数据。
与其他漏洞扫描程序不同的是,Tsunami 本就是秉承着以大型企业为使用对象的初衷而进行构建的,旨在查找包含数十万个设备的大型网络中的漏洞。谷歌方面表示,其设计的漏洞扫描程序具有极强的适应性,Tsunami 能够扫描多种设备类型,而无需为每种设备运行不同的扫描仪。
该漏洞扫描器最初在谷歌内部使用,上个月在 GitHub 上开源。虽然“海啸”将不会成为官方谷歌产品,但将由开源社区负责维护,和Kubernetes 的情况类似。
看看谷歌的背景介绍
When security vulnerabilities or misconfigurations are actively exploited by attackers, organizations need to react quickly in order to protect potentially vulnerable assets. As attackers increasingly invest in automation, the time window to react to a newly released, high severity vulnerability is usually measured in hours. This poses a significant challenge for large organizations with thousands or even millions of internet-connected systems. In such hyperscale environments, security vulnerabilities must be detected and ideally remediated in a fully automated fashion. To do so, information security teams need to have the ability to implement and roll out detectors for novel security issues at scale in a very short amount of time. Furthermore, it is important that the detection quality is consistently very high. To solve these challenges, we created Tsunami – an extensible network scanning engine for detecting high severity vulnerabilities with high confidence in an unauthenticated manner.
说明
Tsunami是一款功能强大的通用网络安全扫描工具,除此之外,它还是一个可扩展的插件系统,可以帮助广大安全研究人员以高可信度的方式检测和扫描高危严重漏洞。
Tsunami依赖于其功能强大的插件系统来给安全社区提供基本的漏洞扫描功能,所有公开可用的Tsunami插件都托管在一个独立的google/tsunami-security-scanner-plugins安全扫描插件库中。
工作原理
市场上已经存在数百个商用或开源的漏洞扫描工具,但“海啸”的不同之处在于,它专为像谷歌一样的大型企业而构建。这些企业可能管理者包含数万台服务器、工作站、网络设备和 IoT 设备的网络。
谷歌表示,他们设计“海啸”一开始是为了适应极其多样化和极其庞大的网络,无需为每种设备类型运行不同的扫描器。谷歌指出,为此它首先将“海啸”分为两个主要部分,之后在顶部增加了一个可扩展的插件机制。
第一个“海啸”组件是扫描器本身,或者是侦察模块。该组件扫描企业网络中是否存在开放端口,之后对每个端口进行测试并试图识别出在每个端口上运行的确切协议和服务,目的是阻止标签错误的端口并测试设备上是否存在漏洞问题。
谷歌表示,端口指纹识别模块基于通过行业测试的 nmap 网络映射引擎,不过也使用了一些自定义代码。
第二个“海啸”组件更为复杂,它根据第一个组件的结果运行。它提取每台设备及其被暴露的端口,选择一系列漏洞进行测试,并运行良性 exploit以查看设备是否易遭攻击。
该漏洞验证模块同时也说明了“海啸”如何可通过插件进行扩展,即安全团队可通过何种方式在网络内部增加可供检查的新的攻击向量和漏洞。
当前的“海啸”版本中含有多个插件,可用于检查:
- 被暴露的敏感UI:应用如 Jenkins、Jupyter 和 Hadoop Yarn 的 UI 允许用户调度工作负载或执行系统命令。如果这些系统在未认证的情况下被暴露在互联网上,则攻击者可利用该应用的功能执行恶意命令。
- 弱凭证:“海啸”使用其它开源工具如ncrack 检测协议和工具如 SSH、FFTP、RDP 和 MySQL 使用的弱密码。
重在消减误报
谷歌表示,计划在未来几个月通过新增插件的方式增强“海啸”的功能,使其能够检测出更多的 exploit。届时,将通过另外一个专门的 GitHub 仓库发布所有的插件。
谷歌表示未来“海啸”将重在满足高端企业客户如谷歌本身的目标以及这类大型多设备网络的条件。
扫描的准确性将是“海啸”的首要目标,它致力于提供包含尽可能少的误报(不正确的检测结果)结果。这一点非常重要,因为“海啸”将在庞大的网络中运行,即使是少量的误报结果也可导致数百或数千台设备收到不正确的补丁,很可能造成设备崩溃、网络崩溃、无数的工作时间被浪费,甚至是导致企业底线尽失。
此外,“海啸”将同时仅扫描可能遭武器化的高危漏洞,而不是一网扫尽所有的漏洞,正如当前多数漏洞扫描器所做的那样。这样做的目的是减少安全团队面临的警报疲劳问题。
工作机制
工具特性
- Tsunami支持手动管理小规模漏洞集;
- Tsunami能够检测到高危安全漏洞(RCE等),这些漏洞通常利用率非常高;
- Tsunami生成的扫描结果可信度非常高,假阳性非常低;
- Tsunami探测器部署和实施都非常简单;
- Tsunami支持自定义功能扩展,运行速度快,抗干扰能力强;
Tsunami的当前版本仍处于开发测试阶段(pre-alpha),仅供开发者预览。
Tsunami项目当前提供的API接口将随时发生变化。
工具使用
如需立即使用Tsunami的扫描功能,请按照下列步骤操作。
1、安装Tsunami所需的依赖组件:
nmap >= 7.80 ncrack >= 0.7
2、安装配置一个存在漏洞的并且是Tsunami可识别的应用程序,比如说一个存在身份验证漏洞的Jupyter Notebook服务器。最简单的方法就是直接使用一个Docker镜像:
docker run --name unauthenticated-jupyter-notebook -p 8888:8888 -d jupyter/base-notebook start-notebook.sh --NotebookApp.token=''
3、执行下列命令:
bash -c "$(curl -sfL https://raw.githubusercontent.com/google/tsunami-security-scanner/master/quick_start.sh)"
项目中的quick_start.sh脚本将会执行下列任务:
1、将下列两个项目克隆至本地主机的$HOME/tsunami/repos目录中:
google/tsunami-security-scanner google/tsunami-security-scanner-plugins
2、编译所有的Google Tsunami插件,并将所有的插件jar文件移动到$HOME/tsunami/plugins目录内。
3、编译Tsunami扫描器Fat Jar文件,然后将其移动到$HOME/tsunami目录内。
4、将tsunami.yaml样本配置文件移动到$HOME/tsunami目录内。
5、输出样本Tsunami命令并使用之前生成的工具对127.0.0.1地址进行漏洞扫描。
扫描器构建和执行
切换到项目的根目录,并执行下列命令:
./gradlew shadowJar
命令执行完成之后,生成的扫描器jar文件将存储在main/build/libs目录内,命名为tsunami-main-[version]-cli.jar。这是一个Fat Jar文件,可以当作一个单独的代码库来使用。
如需执行扫描器,首先我们需要将插件安装在一个给定目录内,并且至少要安装一个PortScanner插件。假设插件安装在~/tsunami-plugins/目录内,那么你就需要使用下列命令来执行一次Tsunami扫描任务:
java # Tsunami classpath, as of now plugins must be installed into classpath. -cp "tsunami-main-[version]-cli.jar:~/tsunami-plugins/*" # Specify the config file of Tsunami, by default Tsunami loads a tsunami.yaml # file from there the command is executed. -Dtsunami.config.location=/path/to/config/tsunami.yaml # Main class for TsunamiCli. com.google.tsunami.main.cli.TsunamiCli # Scan target. --ip-v4-target=127.0.0.1 # Scan output file and data format. --scan-results-local-output-format=JSON --scan-results-local-output-filename=/tmp/tsunami-result.json
安装Tsunami插件
正如前文所述,Tsunami插件必须安装在一个可以在运行时被Tsunami识别的目录内。这个目录可以是任意目录,只要该目录路径存在于Tsunami运行时类路径下即可。
一般来说,每一个Tsunami插件都是一个单独的jar文件,你可以将任何一个支持的jar插件文件放在这个目录内。比如说,如果插件安装目录为~/tsunami-plugins/,那么该目录结构应该为:
$ ls ~/tsunami-plugins awesome-port-scanner.jar my-web-fingerprinter.jar weak-ssh-cred-detector.jar wordpress-installation.jar exposed-jupyter-notebook.jar
项目地址
Tsunami:https://github.com/google/tsunami-security-scanner
参考文章:freebuf,奇安信代码卫士,https://blog.csdn.net/qq_34101364/article/details/113770147
1.本站上传的源码,均为平台购买,作者提供,网友推荐,互联网平台整理而来,请下载后24小时内删除。如有需要,请购买正版.
2.请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。
3.站内资源若侵犯了您的合法权益,请指出本站立即改正。
4.上述内容仅供学习参考及技术交流之用,未经相关的知识产权权利人同意,用户不得进行商业使用。
5.保姆式服务,百分百售后!