Ostorlab 开源了 🎊
这是一次重大发布:Ostorlab 正式开源,同时推出大量新功能和新能力。
这是 Ostorlab 创立以来最重要的一次发布,我也为能宣布这件事感到格外兴奋。
Ostorlab 将走向开源,发布我们的扫描引擎、漏洞检测器和分析器。
Ostorlab 的核心是一个高度模块化的引擎,它让组合漏洞检测器变得充满乐趣。
为了充分发挥这种模块化的优势,我们发布了一个应用商店,其中内置了 Nmap、OpenVAS、Tsunami、Nuclei 等热门开源安全工具,未来还会有更多工具加入。

在这次新版本中,我们新增了对扫描一切目标的支持,从移动应用、Web 应用、IP 地址到容器;同时,检测目标也几乎涵盖一切,从发现简单的配置问题、爬取密钥,到运行功能完备的动态分析环境。
上手非常简单,只需一条命令安装,一条命令运行:
pip install -U ostorlab
oxo scan run --install \
--agent agent/ostorlab/nmap --agent agent/ostorlab/openvas --agent agent/ostorlab/tsunami --agent agent/ostorlab/nuclei \
ip 8.8.8.8

不过,在深入介绍新平台及其提供的功能之前,我想先谈谈促使我们将平台开源的原因。
背后的故事
Ostorlab 自创立以来就是一个以社区为中心的平台。它最初是一个免费的在线平台,可以不受限制地扫描移动应用。只需上传您的应用或从应用商店中选择它,就这么简单。
这一决定源于一个坚定的信念:安全不应只属于那些有能力购买昂贵工具的大企业。
将平台开源是一个自然而然的延伸,我们之所以推迟,是因为我们希望分享的是一个他人可以轻松使用、采用、把玩并参与贡献的东西。
我们开源平台的第二个原因,是对安全行业发展方向的普遍失望。传统的安全扫描器乃至较新的平台都以企业为中心,而且越来越趋向于高度专业化。
如果您如今在管理一个漏洞扫描项目,即使规模很小,也需要大量工具才能获得足够的覆盖面:Web 应用、网络基础设施、Web API、云项目、IAM 策略、容器、源代码、依赖、密钥……每一类都需要一个工具,清单还可以一直列下去。
问题在于,这些工具之间无法互操作,各自有着不同的概念和术语,使用的风险评级也各不相同。
另一方面,开源安全领域非常活跃,有不少出色的项目。其严重的不足在于这些工具往往生命周期很短,常常是为了几场会议演讲而开发,之后便逐渐荒废。当然也有一些值得一提的例外,比如历史悠久的 Nmap 或令人惊叹的 sqlmap,但它们只是例外,而非常态。
这意味着什么?
那么,Ostorlab 在这一现实中扮演什么角色,又是如何尝试提供帮助的呢?
首先,Ostorlab 通过提供一种统一的通用语言,让各种工具无缝协作。无论它们是用哪种编程语言构建的,无论运行在什么平台上,都使用同一种“语言”沟通,协同服务于同一个目标:发现漏洞。
具体来说,Ostorlab 将工具封装成 Agent,这些 Agent 通过分布式消息进行异步通信。这些消息代表了各工具都能认同的一套共享安全分类体系。消息是强类型的、紧凑的二进制格式,并遵循层级结构。

例如,要扫描一个 Web 应用,共享分类体系将包括:
URL::用于爬取和暴力枚举 URL;Request/Response:用于提取指纹,并在响应中搜索硬编码密钥等模式;Fingerprint:用于列出库、服务和技术栈,并将其与已知漏洞进行匹配;Injection Endpoint:用于对 XSS、SQL 注入、XXE 等漏洞进行模糊测试……
这种方法使得:
- 工具串联实现自动化;
- 替换工具甚至同时使用多个工具都毫不费力;
- 对工具的扩展实现标准化。

这种方法的另一个好处是让扫描具备可扩展性,工具无需任何改动即可在多台机器上运行。

除了提供让工具协同工作的平台之外,Ostorlab 还推出了一个新的商店,让您可以轻松获取经过打包、能够彼此无缝协作的安全工具。

在底层,工具其实就是容器,这使得平台既能支持复杂的部署,又能保持符合行业标准。
商店还提供了一个可视化工具,可以将多个 Agent 组合起来执行复杂的分析任务,从暴力枚举域名到对页面截图或提取密钥。该可视化工具随后可以生成一个 YAML 定义文件,只需一条命令即可在您的目标资产上运行。

除了使用 CLI 运行扫描之外,Ostorlab 还提供了一个用于构建您自己的 Agent 的 SDK。该 SDK 只需少量代码即可支持标准用例,同时也提供了强大的 API,用于构建能够跨多台机器扩展的复杂 Agent,例如 QPS 限制、分布式锁、共享状态持久化以及分布式追踪和指标……

让添加和发布新工具变得简单的一个关键部分,是自动化构建以及与 Git 仓库的集成。Agent 仓库中的更新和变更会被自动获取。一旦添加了新的版本标签,新版本就会被构建并共享,商店会处理构建和发布新版本的所有繁琐工作。

您可以做什么?
欢迎试用并分享您的反馈。请报告缺陷、提出建议和意见。我们非常希望听到您的声音,并进一步了解如何让这个工具变得更好。
随着越来越多的 Agent 被构建和共享,这个平台的真正威力才会充分显现。发布您最喜欢的工具并在商店中分享,或者提交功能请求,让我们将其加入。
下一步计划
这次发布只是一个开始,许多其他新功能和更新已在路上。
即将推出的重要更新包括增加一个托管版本,让您可以在托管环境中对任何资产运行扫描。该托管环境将使用 Ostorlab 现有平台的能力,例如数据持久化、扫描历史、自动扩展、工单系统集成、多设备支持(iOS、macOS……)以及对分析环境的访问。
后续版本还将重点增加更多专用的目标资产类型和工具。这些版本将开源更多我们珍视的内部检测器,例如我们历史悠久的爬虫、XSS 扫描器、ostorlab 污点分析引擎、密钥检测器和黑盒 Web 模糊测试工具。
最后,我们正致力于通过分享 Ostorlab 收益中的相当一部分来支持开源维护者。
收益分配将考虑一些关键因素,以帮助推动更高质量的工具,这些因素包括:
- 工具的受欢迎程度;
- 工具对漏洞检测的贡献(真阳性);
- 误报率;
- 资源消耗(CPU、内存、磁盘大小)。
我们希望借此为工具维护者提供一种有意义的方式,让他们能够继续支持并持续改进这些工具。