我们的 AI 引擎 Neutron 在加州大学伯克利分校的 CyberGym 基准测试中取得了 96.75% 的成绩。 了解更多

工程

工程

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 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 生态系统中有效提升运营效率和安全能力。

标签:

opensource, security, oxo