OXO Titan UI:让每个人都能轻松进行安全扫描
OXO Titan UI 将 OXO 的能力封装在一个易于使用的界面中,让高级安全扫描技术变得人人可用。本文介绍 OXO Titan 从构想到落地的历程,重点介绍其主要功能,并给出一个实用的用户工作流示例。
引言
OXO 是一个以简洁著称的开源安全扫描框架。然而,OXO 命令行界面(CLI)的强大功能和灵活性,常常给不熟悉复杂命令行操作的用户带来挑战。
为了解决这一问题,我们开发了 OXO Titan,作为一个直观的用户界面(UI),彻底改变用户与 OXO 的交互方式。这个本地部署(OnPrem)UI 将 OXO 的能力封装在一个易于使用的界面中,让高级安全扫描技术变得人人可用。通过在纷繁复杂的工具与简洁的 UI 之间架起桥梁,OXO Titan 简化了操作流程,提升了用户体验。
本文介绍 OXO Titan 从构想到落地的历程,重点介绍其主要功能,并给出一个实用的用户工作流示例。我们将探讨这个 UI 如何简化漏洞扫描的设置和执行,使其成为新手和资深安全专业人员都不可或缺的工具。
主要功能
OXO Titan UI
OXO Titan UI 将 OXO API 的能力带入图形界面,使更多用户能够使用。您可以通过运行 oxo serve 命令来访问该 UI。在下图中,OXO 提供 UI 服务的地址为 http://http://0.0.0.0:3420.
运行服务器之前,请使用以下命令安装依赖:pip install ostorlab[serve]。

扫描器与扫描管理:
在 OXO Titan 中,扫描器是执行扫描的关键组件。它可以是运行着 OXO 服务器的本地或外部机器,独立运行,并可根据不同的安全需求进行定制。
要设置扫描器,请点击扫描器按钮,然后输入 Scanner Endpoint 和 API Key 等信息,这些信息可以通过运行 oxo serve 命令获得。

运行扫描:
设置好扫描器后,就可以针对各种类型的资产运行扫描。要运行扫描,请提供以下信息:
- Scanner:选择用于运行扫描的扫描器。
- Title:(可选)为扫描指定标题或名称。
- Asset:(必填)指定要扫描的资产(例如 Android/iOS 应用、Web 应用、API 或网络)。
- Asset Definition YAML File:可选,使用此文件对多种类型的资产运行扫描。
- Agent Group:(必填)选择运行扫描所使用的 Agent 组。有关 Agent 组的概念及创建方法,请参阅 Agent 组文档。

运行扫描后,您可以通过一个直观的控制台访问它们,该控制台集中展示了用户所配置的所有扫描器上的全部扫描活动。

点击某个扫描,即可查看扫描详情及其报告的漏洞。

此外,用户可以在扫描详情页面点击导出按钮,在本地缓存并导出完整的扫描结果。

有关 OXO Titan UI 功能的更多详情,请查看 UI 文档。
OXO API
OXO API 是一个 GraphQL API,它扩展了命令行界面(CLI)的能力,使执行和管理各种扫描活动变得更加容易。
它提供了一系列功能,可简化并改善用户与 OXO 框架的交互。
例如,要使用 CLI 命令获取扫描及相关漏洞,您需要先使用 oxo scan list 列出扫描,然后将扫描 ID 传给 oxo vulnz list -s <scan_id>。要查看某个漏洞的详细信息,则应使用 oxo vulnz describe -v <vuln_id>。
而借助 OXO API,一个简单的 GraphQL 查询即可实现同样的结果。以下是如何以分页方式查询扫描及其漏洞:
query Scans {
scans(page: 1, numberElements: 10) {
scans {
id
title
createdTime
progress
vulnerabilities(numberElements: 1, page: 2) {
vulnerabilities {
id
technicalDetail
riskRating
detail {
title
shortDescription
description
recommendation
}
}
}
}
}
}
以下是 OXO API 提供的主要用例和功能:
| 操作 | 类型 | 参数 | 说明 |
|---|---|---|---|
RunScan |
Mutation | title: String, assetIds: [Int]!, agentGroupId: Int! |
|
StopScan |
Mutation | scanId: Int! |
|
DeleteScan |
Mutation | scanId: Int! |
|
ImportScan |
Mutation | file: Upload!, scanId: Int |
从 zip 文件导入扫描。 |
ExportScan |
Mutation | scanId: Int!, exportIde: Boolean |
将扫描导出为 zip 文件。 |
CreateAssets |
Mutation | assets: [OxoAssetInputType]! |
|
PublishAgentGroup |
Mutation | agentGroup: OxoAgentGroupCreateInputType! |
|
DeleteAgentGroup |
Mutation | agentGroupId: Int! |
|
Scans |
Query | scanIds: [Int], page: Int, numberElements: Int, orderBy: OxoScanOrderByEnum, sort: SortEnum |
查询扫描及其报告的漏洞。 |
Scan |
Query | scanId: Int |
|
AgentGroups |
Query | search: String, page: Int, numberElements: Int, orderBy: AgentGroupOrderByEnum, sort: SortEnum, agentGroupIds: [Int], assetType: AssetTypeEnum |
查询 Agent 组及其关联的所有 Agent 和参数。 |
设计与架构
假设以下场景:用户管理着两个扫描器,一个是内部扫描器,一个是外部扫描器:

访问与设置
用户访问 UI 并添加扫描器实例:

扫描操作
用户可以执行各种操作,例如使用多种类型的资产创建扫描,包括:Android Store(来自 Google Play Store 的资产)、Android 文件(如 Apk 或 Aab)、iOS Store(来自 Apple App Store 的资产)、iOS IPA 文件、Web App(用于 Web 应用扫描)、Web API(用于通过 Web 访问的 API 扫描)以及 Network。

运行扫描后,用户可以在扫描列表页面查看和审阅这些扫描,该页面为每个扫描器提供一个标签页,并列出在其上执行的扫描。

随后,用户可以在扫描详情页面点击“Export”按钮导出某个扫描。例如,我们将从外部扫描器导出针对 Reddit Web 资产的扫描,并将其导入本地扫描器:


用户可以在扫描列表页面确认该扫描已成功导入:

结论
OXO Titan 是对 OXO 开源框架的一次重大改进,它提供了一个精简、易用的界面,简化了漏洞扫描。通过直观的设计提升易用性和功能性,OXO Titan 让用户能够轻松管理多个扫描器、对各种类型的资产运行扫描、导入/导出扫描数据,并获取详细的报告。这一进步确保各组织能够在 OXO 生态系统中有效提升运营效率和安全能力。