首页
社区
课程
招聘
[推荐]RSAC 2024创新沙盒|RAD Security:云原生异常行为检测和响应新方案
发表于: 2024-4-26 18:15 3290

[推荐]RSAC 2024创新沙盒|RAD Security:云原生异常行为检测和响应新方案

2024-4-26 18:15
3290

5月6日

RSA Conference 2024

将正式启幕

作为“安全圈的奥斯卡”

RSAC 创新沙盒(Innovation Sandbox

已成为网络安全业界的创新标杆


创新之下

与绿盟君一道

聚焦网络安全新热点

洞悉安全发展新趋势

走进RAD Security


*RSAC 2024 创新沙盒十强




公司背景


RAD Security是由Brooke Motta和Jimmy Mesta共同创立的云原生安全公司,其前身为Kubernetes 安全运营中心(KSOC)。于2022年2月15日正式宣布获得600万美元的种子资金,仅在去年一年中,投资回报率增长了3倍,且过去两年客户保留率达到100%。

图1  RAD Security创始人(左Brooke Motta,右Jimmy Mesta)


在更名之前,公司专注于实时Kubernetes安全态势管理(KSPM)和云原生身份威胁检测和响应(ITDR)等Kubernetes安全运营业务。2024年3月12日,公司正式更名为RAD Security,并解释“RAD”代表其提供的安全得到广泛认可,而非单词缩写或暗示。随着其云原生工作负载指纹的发布,RAD Security正式转向云原生异常行为检测和响应业务。



产品能力介绍


如图2所示,RAD Security宣称通过对软件供应链、云原生基础设施、工作负载的云上正常行为建立指纹,通过与这些正常指纹的对比发现异常行为,以防御云原生在构建、部署、运行生命周期中的0 Day攻击。接下来,我们将从产品能力入手,了解RAD Security是如何检测和响应云原生异常行为以及防御0 Day攻击的。

图2 RAD Security产品方案图


实时KSPM 


RAD Security宣称发布了业内第一个实时KSPM工具,可以实现以秒为单位展示云原生基础设施的状态。在部署方面也比较便捷,支持以Helm方式在集群进行分钟级的部署。


如图3所示,实时KSPM工具主要是利用Kubernetes监控管理特性(通过Agent调用 Kubelet API查询集群资源)和Kubernetes 物料清单 (KBOM)工具,对集群内的组件、网络、策略、镜像、容器运行时等进行监控或扫描,结合漏洞风险从资产的维度上将风险链路可视化展示。至于安全闭环则采用AI工具生成修复建议为安全人员提供帮助。当然该工具也包含基于开放策略代理 (OPA)构建的动态准入控制器、生成用于运行容器的 SBOM、生成集群配置的KBOM、对照NSA和CIS指南的合规测试、跨多个集群生成报告等其他功能。

图3 集群中的实时KSPM工具


接下来,我们将从以下几个方面简单了解该工具:


1)Kubernetes 物料清单 (KBOM)


随着云原生技术的不断发展,大量的Kubernetes插件和工具随之产生,然而这些第三方生态往往隐藏着大量的危险,KBOM是KSOC发布的首个Kubernetes物料清单标准,旨在为Kubernetes集群提供安全概览。值得一提的是,RAD Security已经将KBOM的初版进行开源。


开源的KBOM是一个轻量级的CLI工具,与大家所熟知的SBOM有所不同:SBOM侧重于软件组件,提供了它们的详细清单、来源以及通常包含的许可信息;而KBOM则是专为解决Kubernetes环境的复杂性而设计的,支持将集群信息以JSON、YAML、XML等格式输出到命令窗口或文件中。输出的集群信息主要涉及以下内容:

  • 资产发现

    除集群类型、集群规模、节点信息(如数量、架构、容器运行时、内核版本、操作系统等)外,也支持对Kubernetes环境中如Crossplane、Jenkins、CubeFS和Clusternet等第三方插件信息进行发现。

  • 镜像扫描

    对仓库和集群中的镜像扫描能力,官方没有就具体技术细节进行公开,笔者猜测大致是结合CVE库对容器镜像进行扫描,标记含有漏洞的危险镜像。

  • 自定义资源(CRD)分析

    对 Kubernetes 集群中CRD进行识别和分析。结合CVE库对已识别的CRD进行分析,针对有漏洞的CRD资源进行危险标记,并将与 Clusternet API 相关的危险CRD资源进行高危提示。


2)可视化的威胁向量


如图4所示,将KBOM发现的镜像CVE信息、RBAC危险权限和Kubernetes错误配置等大量信息,以集群为起点逐层对资产的风险信息可视化展示,以帮助安全运营人员消除集群安全盲点。

图4 KSOC威胁向量


如图5所示,从官方的宣传中我们发现,RAD Security期望威胁向量能够给出Kubernetes 漏洞优先级,从海量的云原生安全告警中找出真正需要修复的漏洞。截至目前,从官方查询出来的资料来看,该特性仅能提供参考,最终的优先级还是需要人工判断,宣传成分居多。结合漏洞可利用性验证技术和漏洞危害等级对漏洞优先级排序方案是业内比较认可的方案之一,RAD Security的排序效果显然和后者存在一定差距。

图5 利用威胁向量进行漏洞优先级排序


3) 利用AI工具生成错误配置建议


该工具支持利用AI工具对发现的威胁向量生成修复建议,在威胁向量页面选择“使用AI修复所有问题”按钮后,如图6所示,这里的AI直接使用了OpenAI GPT-4,输入威胁向量的具体信息即可得到修复建议。AI应用于安全响应也早有先例,这里就不再赘述。

图6 AI生成修复建议


云原生身份威胁检测和响应


2023 年针对Kubernetes的四次重大攻击中有3次都依赖于过于宽松的RBAC(基于角色的访问控制)策略。Redhat最近的一项调查显示,使用Kubernetes的团队中有58%在过去12个月内因错误的RBAC策略而出现安全事件。RAD Security认为云原生ITDR是缓解Kubernetes RBAC攻击的有效方法。


RAD Security的云原生ITDR解决方案集成了Cloud IAM和RBAC、基于AI的查询引擎AccessIQ以及Kubernetes RBAC洞察力,旨在识别恶意云原生身份资源,并对恶意身份进行删除、阻止或者调整等闭环处理。


云原生ITDR与如CIEM (云基础设施授权管理)、KIEM(Kubernetes基础设施授权管理)等传统的RBAC安全工具不同的是:CIEM专注于Cloud IAM,KIEM仅专注于Kubernetes RBAC的状态,这些RBAC安全工具旨在增强身份状态并实施强化策略。而云原生ITDR不仅关注权限本身,还通过行为审计进一步关注权限是否被账号绑定或使用零信任机制给出风险账号和权限等。具体对比如图7所示:

图7云原生ITDR与传统RBAC工具区别


通过RAD Security官网介绍,我们可以知道,原生ITDR是在实时KSPM的基础上增加了RBAC的管理能力,其大体的功能如下:


1) 身份风险评分


如图8所示,RAD Security通过判断同一容器的RBAC权限是否遵循最小化原则,权限是否被账号使用、是否产生威胁向量(即运行时事件、含有CVE镜像的容器、错误的权限配置等信息)等信息对存在的身份风险事件进行优先级排序。

图8 身份风险排序


2) RBAC准入控制器


同实时KSPM一致,该工具也依赖OPA对RBAC资源的使用进行准入控制。如图9所示,该事件触发了“账号口令仅能挂载至与API Server通信的Pod”策略。

图9 RBAC准入控制


3) RBAC权限风险修复建议


RAD Security支持对有风险的RBAC配置提供修复建议,这和实时KSPM中的利用AI为错误配置提供修改建议并无差异。如图10所示,对权限过大的策略提供最小化权限修改建议。

图10 RBAC权限修改建议


云原生工作负载指纹


云原生工作负载指纹是使用eBPF技术为云正常行为建立的“安全”基线,也被称为“RAD安全标准”。RAD Security宣称云原生工作负载指纹能够避免软件供应链0Day攻击,接下来我们一起来看看。


首席技术官兼联合创始人Jimmy指出:“开发团队将经过验证的、干净的运行时指纹与在其环境中运行的相同镜像进行比较,他们就有真正的机会防御下一次零日攻击。”的确如此,攻击行为繁多且未知,我们只需关注安全行为,其他行为则可被定义为攻击。该方案借助eBPF技术实现,通过使用eBPF Hook内核的Kprobe和Tracepoint探针,实现调用链路追踪,将所有合理的调用链路生成基线,这些基线就是行为白名单,是该运行负载的安全行为标准,适用于任何使用该镜像的场景,如图11所示,一旦建立了基线,任何偏离基线的调用行为均会被识别和阻止,这样便能够有效发现并防止0Day攻击。

图11 运行时指纹模型


如图12所示,与CWPP 或运行时安全工具等传统方案不同的是,传统工具要么事后检测,要么基于规则比对,均无法对未知攻击进行防护,而云原生工作负载指纹可以借助eBPF技术在内核调用层进行行为对比和执行响应。既然是内核之上的调用链路,自然能够涵盖所有运行负载,也就自然能够涵盖供应链软件了。

图12 云原生工作负载指纹与传统安全方法对比


总结


RAD Security主要发布了3款产品, 融合Kubernetes 物料清单和AI能力的实时KSPM、补充RBAC管理能力的ITDR、基于eBPF技术的云原生工作负载指纹。笔者认为除了利用eBPF技术识别云行为并建立基线行为外,其他并无多少创新性,具体原因如下:

  • 业界很早就发布诸多Kubernetes相关的最佳实践列表,这与Kubernetes 物料清单并无二致;

  • 借助Kubernetes强大服务能力管理整个集群并不是难事,更别说RBAC资源;

  • GPT全网火热后,AI技术应用于安全产品早已不是新鲜事。

  • 基于eBPF技术做调用链路追踪虽早有成熟实践,然而通过eBPF捕获详细的调用链路,加上建立各种应用程序的行为白名单,将这一方案应用到云场景防护中的思路目前在业界的其他产品中还没有类似的实现宣传,故这一方案具备一定的创新性。

值得注意的是,2023年的洞见RSA《洞见RSA 2023:基于零信任构建云原生安全底座》系列分析文章中,绿盟科技也表述了“在内核级别去做云场景下的零信任”的思路,我们也验证了基于eBPF做内核层响应的可行性,笔者认为云原生工作负载指纹存在以下问题:


1) 指纹的更新如何跟上正常业务需求?


庞大的工具和产品集覆盖难度大:CNCF产品概览表里的产品和工具数不胜数,即使是强制采用BOM清单相信需要建立指纹的工具和产品数量也不容小觑,且官方软件的行为也不能完全信任,需要做大量的调用链安全判断。


工具和产品的更新迭代快,响应时间很难得到保障:每一处逻辑的改变都可能改变调用链路,调用链路的行为指纹都需要更新,行为指纹更新大都存在滞后性,可能影响环境正常业务。


2) 如何确保云原生工作负载指纹生效前所获取行为链路是真实的?


因为云原生工作负载指纹是基于eBPF技术做的调用链路,得到的调用信息存在篡改的可能,假如在云原生工作负载指纹生效前该环境的hook已被劫持,那所有的白名单机制也随之失效。


针对第一个问题,笔者认为使用AI技术会有所缓解,但第二个问题现阶段还缺乏有效的解决方案。


参考文献

[1] a46K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5j5h3c8Q4x3X3g2K6k6h3y4#2M7X3W2@1P5g2)9J5c8X3u0D9L8$3N6Q4x3V1k6C8M7$3!0U0i4K6u0V1L8%4g2J5i4K6u0V1M7%4c8G2M7Y4V1`.

[2] db8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5j5h3c8Q4x3X3g2K6k6h3y4#2M7X3W2@1P5g2)9J5c8X3u0D9L8$3N6Q4x3V1k6J5k6h3W2E0j5h3N6A6L8X3W2F1k6#2)9J5k6r3y4D9L8%4g2V1i4K6u0V1L8X3q4@1K9i4k6W2i4K6u0V1k6r3g2@1k6h3y4@1K9h3!0F1i4K6u0V1M7X3g2K6M7r3!0F1M7$3g2Q4x3X3c8C8M7$3!0U0M7#2)9J5k6r3g2$3L8$3I4#2N6r3W2G2L8X3q4J5P5g2)9J5k6s2y4Z5K9h3k6@1i4K6u0V1N6r3!0Q4x3X3c8J5j5h3c8Q4x3X3c8K6k6h3y4#2M7X3W2@1P5b7`.`.

[3] d22K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6C8M7$3!0U0L8r3q4T1M7#2)9J5c8X3E0T1L8$3@1`.

[4] 853K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5j5h3c8Q4x3X3g2K6k6h3y4#2M7X3W2@1P5g2)9J5c8X3u0D9L8$3N6Q4x3V1k6C8M7$3!0U0i4K6u0V1M7X3g2D9k6h3q4K6k6i4y4Q4x3X3c8@1K9r3g2Q4x3X3c8X3K9i4u0K6N6q4)9J5k6r3E0#2j5X3g2J5L8X3g2@1k6i4y4Q4x3X3c8T1K9h3I4D9i4K6u0V1L8$3k6Q4x3X3c8E0j5i4c8W2M7X3W2S2L8s2y4Q4x3X3c8C8j5X3!0E0i4K6u0V1M7%4c8S2L8X3c8S2M7X3c8Q4x3@1k6Q4y4h3k6Q4y4h3k6Z5M7%4c8U0i4K6y4p5x3U0p5$3y4K6b7#2x3o6V1%4i4K6u0W2k6h3j5J5x3e0y4U0z5o6q4W2k6U0x3H3y4$3c8W2j5K6W2W2z5r3p5^5k6e0p5%4x3$3b7H3z5h3t1#2x3$3c8Q4x3X3f1I4y4K6p5J5z5o6l9$3x3U0R3&6x3o6f1H3i4K6u0W2x3e0M7I4x3K6M7#2x3o6l9$3z5e0R3J5z5q4)9J5k6e0p5%4x3e0x3%4y4e0t1I4x3e0M7J5z5o6m8Q4x3X3f1I4y4#2)9J5y4X3q4E0M7q4)9K6b7W2)9#2k6W2)9#2k6X3S2K6M7$3y4Q4x3@1b7J5x3e0j5%4y4o6f1H3z5e0N6Q4x3X3f1K6y4W2)9J5k6e0p5%4x3e0x3%4y4e0t1I4x3e0M7J5z5o6m8Q4x3U0k6S2L8i4m8Q4x3@1u0Q4y4h3k6Q4y4h3k6Z5M7$3k6H3i4K6y4p5y4e0V1I4x3U0j5^5y4U0t1&6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5j5h3c8Q4x3X3g2K6k6h3y4#2M7X3W2@1P5g2)9J5c8X3u0D9L8$3N6Q4x3V1k6C8M7$3!0U0i4K6u0V1M7X3g2D9k6h3q4K6k6i4y4Q4x3X3c8@1K9r3g2Q4x3X3c8X3K9i4u0K6N6q4)9J5k6r3E0#2j5X3g2J5L8X3g2@1k6i4y4Q4x3X3c8T1K9h3I4D9i4K6u0V1L8$3k6Q4x3X3c8E0j5i4c8W2M7X3W2S2L8s2y4Q4x3X3c8C8j5X3!0E0i4K6u0V1M7%4c8S2L8X3c8S2M7X3c8Q4x3@1k6Q4y4h3k6Q4y4h3k6Z5M7%4c8U0i4K6y4p5x3U0p5$3y4K6b7#2x3o6V1%4i4K6u0W2k6h3j5J5x3e0y4U0z5o6q4W2k6U0x3H3y4$3c8W2j5K6W2W2z5r3p5^5k6e0p5%4x3$3b7H3z5h3t1#2x3$3c8Q4x3X3f1I4y4K6p5J5z5o6l9$3x3U0R3&6x3o6f1H3i4K6u0W2x3e0M7I4x3K6M7#2x3o6l9$3z5e0R3J5z5q4)9J5k6e0p5%4x3e0x3%4y4e0t1I4x3e0M7J5z5o6m8Q4x3X3f1I4y4#2)9J5y4X3q4E0M7q4)9K6b7W2)9#2k6W2)9#2k6X3S2K6M7$3y4Q4x3@1b7J5x3e0j5%4y4o6f1H3z5e0N6Q4x3X3f1K6y4W2)9J5k6e0p5%4x3e0x3%4y4e0t1I4x3e0M7J5z5o6m8Q4x3U0k6S2L8i4m8Q4x3@1u0Q4y4h3k6Q4y4h3k6Z5M7$3k6H3i4K6y4p5y4e0V1I4x3U0j5^5y4U0t1&6

[5] b48K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5j5h3c8Q4x3X3g2K6k6h3y4#2M7X3W2@1P5g2)9J5c8X3E0#2j5X3g2J5L8X3g2@1k6i4y4Q4x3X3c8$3N6h3I4F1k6i4u0S2j5X3W2D9K9i4c8&6i4K6u0V1M7s2u0A6L8%4u0A6N6r3W2*7j5i4c8A6L8$3^5`.

[6] 150K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5j5h3c8Q4x3X3g2K6k6h3y4#2M7X3W2@1P5g2)9J5c8X3u0D9L8$3N6Q4x3V1k6Z5L8%4N6Q4x3X3c8@1L8#2)9J5k6s2m8J5L8%4c8W2j5%4c8Q4x3X3c8&6L8%4g2J5M7$3g2D9k6W2)9J5k6r3k6J5L8$3#2Q4x3X3c8@1K9r3g2Q4x3X3c8F1k6i4N6Q4x3X3c8C8N6h3u0W2M7X3&6W2N6r3g2K6i4K6u0V1j5i4c8@1j5h3y4C8M7#2)9J5k6r3W2F1i4K6u0V1x3U0l9J5x3#2)9K6c8W2)9#2k6W2)9#2k6X3S2K6N6r3y4Q4x3@1b7J5x3e0j5%4y4o6f1H3z5e0N6Q4x3X3g2W2k6U0t1I4x3$3x3^5x3h3g2X3x3K6l9%4k6r3g2U0z5h3f1^5j5e0S2W2x3e0M7K6k6o6l9&6j5U0f1K6k6q4)9J5k6e0p5%4x3e0t1^5x3o6j5J5z5o6V1H3y4e0m8Q4x3X3f1I4y4K6p5K6x3e0M7H3z5e0j5#2x3o6j5$3i4K6u0W2x3e0M7I4x3K6t1K6x3o6l9K6z5e0M7J5y4W2)9J5k6e0p5H3i4K6t1$3j5h3#2H3i4K6y4n7i4K6g2X3i4K6g2X3K9s2y4K6j5#2)9K6c8o6t1I4y4U0M7@1y4e0l9&6y4#2)9J5k6e0p5@1x3e0c8Q4x3X3f1I4y4K6p5J5z5o6t1$3y4e0R3@1y4K6b7H3i4K6t1$3j5h3#2H3i4K6y4n7i4K6g2X3i4K6g2X3K9s2y4X3M7q4)9K6c8o6f1&6x3e0t1$3z5o6j5J5z5g2)9J5y4X3q4E0M7q4)9K6b7W2)9#2k6X3N6D9i4K6y4p5x3g2)9J5b7i4q4^5j5i4x3@1y4#2)9J5b7g2)9#2k6X3N6S2i4K6u0m8e0h3A6m8P5f1#2*7K9%4S2z5K9V1g2%4e0X3V1@1P5p5&6*7c8i4W2a6c8p5p5J5e0h3A6U0P5W2)9J5b7g2)9#2k6X3N6S2i4K6g2X3x3q4x3$3z5o6t1K6d9o6p5H3y4#2)9J5b7f1#2f1j5%4S2y4P5V1V1I4e0g2c8q4x3@1!0e0y4s2S2z5b7K6c8%4e0r3A6q4x3@1#2f1e0i4W2z5g2p5g2^5e0@1c8u0N6f1&6B7b7i4g2y4b7K6c8^5e0V1c8q4P5V1&6B7b7e0m8z5c8q4W2Q4x3X3f1`.

[7] d44K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2J5k6h3c8Z5j5i4c8Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5c8Y4u0W2M7$3!0#2M7X3y4W2M7#2)9J5c8Y4y4@1j5i4c8W2i4K6u0V1K9%4g2T1k6i4u0F1k6i4c8W2M7#2)9J5k6s2y4W2j5%4g2J5K9i4c8&6i4K6u0V1M7X3g2H3L8%4u0@1i4K6u0V1x3U0l9J5x3H3`.`.

[8] 85aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6J5j5h3c8Q4x3X3g2K6k6h3y4#2M7X3W2@1P5g2)9J5c8X3u0D9L8$3N6Q4x3V1k6A6N6r3c8J5i4K6u0V1j5X3g2K6N6q4)9J5k6s2m8J5j5h3y4@1K9h3y4W2M7#2)9J5k6r3W2F1i4K6u0V1j5$3I4G2N6h3c8Q4x3X3c8F1j5i4c8A6N6X3g2Q4x3X3c8K6k6h3y4#2M7X3W2@1P5g2)9J5k6r3W2V1k6h3&6@1K9i4c8&6i4K6u0V1N6r3S2J5k6h3q4@1i4K6u0V1k6r3g2@1k6h3y4@1K9h3!0F1i4K6u0V1j5h3&6V1i4K6u0V1M7X3g2K6M7r3!0F1M7$3g2Q4x3@1k6Q4y4h3k6Q4y4h3k6Z5M7%4c8U0i4K6y4p5x3U0p5$3y4K6b7#2x3o6V1%4i4K6u0W2k6h3j5J5x3e0y4U0z5o6q4W2k6U0x3H3y4$3c8W2j5K6W2W2z5r3p5^5k6e0p5%4x3$3b7H3z5h3t1#2x3$3c8Q4x3X3f1I4y4K6p5J5z5o6l9$3x3U0R3&6x3o6f1H3i4K6u0W2x3e0M7I4x3K6M7$3z5o6M7%4x3U0f1@1y4W2)9J5k6e0p5%4x3e0x3%4y4K6p5#2x3e0f1I4x3K6m8Q4x3X3f1J5x3q4)9J5y4X3q4E0M7q4)9K6b7W2)9#2k6W2)9#2k6X3S2K6M7$3y4Q4x3@1b7J5x3e0j5%4y4o6f1H3z5e0N6Q4x3X3f1I4x3e0t1#2y4K6p5I4x3U0f1&6i4K6u0W2x3e0M7I4x3K6M7%4x3e0f1I4y4e0p5K6x3q4)9J5y4X3q4E0M7q4)9K6b7W2)9#2k6W2)9#2k6X3S2K6k6Y4m8Q4x3@1b7#2z5e0p5J5y4U0R3$3x3U0W2Q4x3U0k6S2L8i4m8Q4x3@1u0Q4y4h3k6Y4L8q4)9K6c8o6q4Q4x3V1p5$3N6X3!0I4x3h3!0Q4x3V1q4Q4y4h3k6Y4j5g2)9J5b7f1#2B7b7i4W2y4P5X3E0^5e0X3A6q4N6@1&6A6y4s2S2z5P5V1g2&6e0@1c8m8x3V1#2B7j5%4A6Q4x3V1q4Q4y4h3k6Y4j5g2)9#2k6U0m8e0y4U0R3J5x3@1R3I4x3o6N6Q4x3V1q4y4g2r3y4^5e0i4A6U0x3@1#2f1g2i4S2y4K9e0c8&6e0X3V1@1P5p5I4B7c8e0y4y4g2p5@1K6e0Y4A6u0P5p5!0p5g2i4g2y4P5X3N6#2e0f1x3@1x3f1!0p5h3i4A6y4g2p5W2*7e0X3A6g2i4K6u0W2

[9]  067K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2L8Y4y4X3L8$3y4#2M7#2)9J5k6h3&6W2N6q4)9J5c8Y4u0K6j5g2)9J5k6o6t1H3x3U0y4Q4x3X3b7J5i4K6u0r3


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回