【读书笔记】针对ICS的ATTCK矩阵详解(一)
Techniques - ICS | MITRE ATT&CK®
https://attack.mitre.org/techniques/ics/


一、初始访问(Initial Access)
该阶段:攻击者正在尝试进入ICS环境。
初始访问包括攻击者可能用作入口向量,从而可以在 ICS 环境中获得初始立足点的技术。这些技术包括破坏运营技术资产、OT 网络中的 IT 资源以及外部远程服务和网站。它们还可能以具有特权访问权限的第三方实体和用户为目标。具体而言,这些初始访问立足点可能包括在IT和OT环境中具有访问权限和权限的设备和通信机制。OT 环境中的 IT 资源也可能容易受到与企业 IT 系统相同的攻击。
受信任的第三方可能包括供应商、维护人员、工程师、外部集成商以及参与预期 ICS 操作的其他外部实体。供应商维护的资产可能包括物理设备、软件和操作设备。初始访问技术还可以利用外部设备(如无线电、控制器或可移动介质)来远程干扰并可能感染 OT 操作。
1.水坑攻击
当用户访问网站时,攻击者可能会在会话劫持期间获得对系统的访问权限。使用此技术时,只需访问被感染的网站,即可锁定并利用用户的Web浏览器。攻击者可能会针对特定的社区,例如受信任的第三方供应商或其他行业的特定群体,因为这些群体经常访问目标网站。
这种有针对性的攻击依赖于一个共同的兴趣,被称为战略性的网络入侵或水坑攻击。美国国土安全部和联邦调查局的分析指出,在针对西方能源领域的“蜻蜓”行动中,有两类不同的受害者:暂存和预定目标。攻击者将目标锁定在安全性较低的目标网络上,其中包括可信赖的第三方供应商和相关外围组织。对预期目标的初始访问使用了针对过程控制、集成电路和关键基础设施相关的贸易出版物和信息网站的水坑攻击。
2. 利用面向公众的应用
攻击者可能试图利用面向公众的应用程序,如利用面向互联网的计算机系统、程序或资产上的弱点完成非法访问。面向公众的这些应用程序可能包括用户界面、软件、数据或命令等,均有可能成为攻击者进入OT系统的入口。
ICSCERT的分析显示GE Cimplicity HMl接入互联网后很可能成为攻击者渗透初期的访问媒介。
3. 利用远程服务
攻击者可能会利用软件漏洞,利用程序、服务或操作系统软件或内核本身中的编程错误来启用远程服务滥用。入侵后利用远程服务的一个共同目标是对整个 ICS 环境进行初始访问和横向移动,以便能够访问目标系统。[1]
ICS 资产所有者和运营商受到从企业 IT 迁移到 ICS 环境的勒索软件(或伪装成勒索软件的破坏性恶意软件)的影响:WannaCry、NotPetya 和 BadRabbit。在上述每种情况下,自我传播(可蠕虫)恶意软件最初都会感染 IT 网络,但通过利用(特别是针对 SMBv1 的 MS17-010 漏洞)传播到工业网络,从而产生重大影响。
4. 外部的远程服务
攻击者可能会利用外部远程服务作为对网络的初始访问点。这些服务允许用户从外部位置连接到内部网络资源。例如,VPN、Citrix 和其他访问机制。远程服务网关通常管理这些服务的连接和凭据身份验证。
外部远程服务允许从系统外部管理控制系统。通常,供应商和内部工程团队可以访问外部远程服务,以通过公司网络控制系统网络。在某些情况下,这种访问是直接从 Internet 启用的。当控制系统位于偏远地区时,远程访问可以轻松维护,但远程访问解决方案的妥协是一种负担。攻击者可以使用这些服务来访问控制系统网络并执行攻击。访问有效帐户通常是必需的。
在 Maroochy 攻击中,攻击者可以通过无线电远程访问系统;2015年对乌克兰电网的攻击表明,该环境中使用了当时的远程访问工具来访问控制系统网络。攻击者收集了工作人员的登录信息,其中一些是用来远程登录控制系统网络的VPN登录信息,这些VPN恰巧缺乏双因子身份验证。
注:2000年澳大利亚昆士兰Maroochy污水处理厂内部工程师多次攻击SCADA系统,导致三个月时间内有75万加仑未经处理的污水流入公园、河流等场地,造成海洋生物损失、危及公共安全等后果,并造成了巨大经济损失。这是有公开报道的第一次CPSs受到攻击。
5. 利用互联网开放设备
攻击者可以直接通过暴露于互联网的设备进行远程访问从而进入工业环境,而不必通过外部远程服务。这些设备提供的最小化权限机制,如密码身份验证,可能成为目标并遭受攻击。
在 Bowman大坝攻击事件中,攻击者利用调制解调器对大坝的控制网络进行了攻击。尽管该应用程序容易受到暴力破解,但通过密码身份验证机制可以保护。
6. 远程服务
攻击者可能会利用远程服务在资产和网段之间移动。这些服务通常用于允许操作员在网络内与系统进行远程交互,例如 RDP、SMB、SSH 和其他类似机制。
7.可移动介质摆渡攻击
攻击者可以通过将恶意软件复制到插入控制系统环境中的可移动介质上来进行(例如与企业网络分离的系统)。攻击者可能依靠不知情的可信任第三方引入可移动介质,例如具有访问权限的供应商或承包商,通过此技术,可以对从未连接到不受信任网络但可以物理访问的目标设备进行初始访问。德国核电站Gundremmingen的运营商在未连接到互联网的计算机上发现了恶意软件。该恶意软件包括Conficker和W32.Ramnit,在该设施的18个可移动磁盘驱动器中找到。此后,这家工厂检查了感染情况,并清理了1000多台计算机。一位ESET 研究人员评论说,互联网断开并不能保证系统免受感染或攻击载荷的执行。
8.恶意主机
攻击者可能会设置一个恶意主站,以利用控制服务器功能与外站进行通信。恶意主服务器可用于向其他控制系统设备发送合法的控制消息,从而以意想不到的方式影响进程。它还可用于通过捕获和接收用于实际主站的网络流量来中断网络通信。冒充主控服务器也可能使对手避免被发现。
在 2017 年的达拉斯警笛事件中,对手使用恶意主站向全市 156 个分布式警笛发送命令消息,要么通过一个信号强的恶意发射器,要么使用许多分布式中继器。
9.鱼叉式网络钓鱼攻击
攻击者可能会使用鱼叉式附件作为对特定目标的社会工程攻击形式。鱼叉式附件与其他形式的附件不同之处在于:它们使用附加到电子邮件的恶意软件。所有形式的网络钓鱼都是通过电子方式进行的,目标是特定的个人、公司或行业。在这种情况下,攻击者会将文件附加到欺骗性电子邮件中,并且通常依靠用户执行来获取执行和访问权限。
10.供应链攻击
攻击者可能通过受感染的产品、软件和工作流来执行供应链攻击,以获得控制系统的访问权限。供应链攻击是指在最终消费者收到产品(如设备或软件)之前,操纵产品或其交付机制。一旦受感染的产品进入目标环境,就会攻击、损害目标数据或系统。供应链攻击可能发生在供应链的所有阶段,从操纵开发工具和环境到操纵已开发和工具分发机制。这可能涉及在第三方或供应商网站上的合法软件和补丁的损害和替换。针对供应链攻击的目标,可以尝试渗透到特定受众的环境中发现。在IT和OT网中都拥有资产的控制系统环境中,针对IT环境的供应链攻击可能会进一步影响到OT环境。
F-Secure实验室分析了攻击者使用Havex破坏受害者系统的方法。攻击者在合法ICS/SCADA 供应商网站上植入了木马软件的安装程序。下载后,此软件用远程访问洛伊木马(RAT)感染了主机。
11.瞬态网络资产
攻击者可能以跨 ICS 网络和外部网络瞬态的设备为目标。通常,临时资产由授权人员带入环境,不会永久保留在该环境中。[1] 通常需要临时资产来支持管理功能,在远程管理资产不可行、不存在用于远程访问的外部连接或需要第三方承包商/供应商访问的系统中可能更常见。
攻击者可能以不同的方式利用瞬态资产。例如,当临时资产连接到外部网络时,攻击者可能会将其作为目标,然后利用其在另一个环境中的可信访问来发起攻击。他们还可以利用合法最终用户用来与控制系统设备交互的已安装应用程序和库。
在某些情况下,临时资产可能未使用安全配置进行部署,从而导致漏洞可能允许攻击者传播恶意可执行代码,例如,临时资产可能被恶意软件感染,并且当连接到 ICS 环境时,恶意软件会传播到其他系统。
12.无线攻击
攻击者可能会执行无线入侵,作为获取通信和未经授权访问无线网络的方法。对无线网络的访问可以通过破坏无线设备来获得。攻击者还可以使用与无线网络频率相同的无线电和其他无线通信设备。无线入侵可以作为远程距离的初始访问向量。
一名波兰学生使用改装的电视遥控器访问和控制波兰的罗兹市有轨电车系统。遥控器设备允许学生与有轨电车网络连接,以修改轨道设置并覆盖操作员控制。攻击者可能通过将控制器与红外控制协议信号的频率和幅度对齐来实现这一点。然后,控制器启用了对网络的初始访问,允许捕获和重放有轨电车信号。
二、执行攻击(Execution)
该阶段:攻击者试图以未经授权的方式运行代码或操作系统函数、参数和数据。
执行攻击包括能够促成恶意代码在本地或远程系统、设备或其他资产上运行的技术。执行可能依赖于不知情的最终用户或者依赖控制设备的操作模式来运行。攻击者可能会通过执行编写的可执行文件或恶意项目文件感染远程目标,这些文件根据指定行为运行,并可能以微妙的方式改变设备的预期行为。执行命令也可以从命令行界面、API、GUI 或其他可用界面发出。运行恶意代码的技术也可以与其他策略中的技术成对使用,特别是有助于网络发现和收集、影响操作和抑制响应的方法。
1.更改操作模式
攻击者可能会尝试更改控制设备上的程序的当前状态,程序状态更改可用于允许另一个程序接管控制或加载到目标设备上。
2.命令行界面
攻击者可能利用命令行界面(CLI)与系统交互并执行命令。CLI提供了一种与计算机系统进行交互的方式,并且是控制系统环境中多种平台和设备的常用功能。攻击者可以使用CLI安装和运行新软件,包括在操作过程中可能安装的恶意工具。
CLI通常在本地访问,但也可以通过SSH、Telnet和RDP等服务公开。在CL中执行的命令将以运行终端仿真器的进程的当前权限级别执行,除非该命令指定了权限上下文的更改。
许多控制器都有用于管理目的的CLI接口。
3. 通过API执行
攻击者可能试图利用控制软件和硬件之同通信的应用程序接口(API)。特定功能通常被编码成 API,软件可以调用API来实现设备或其他软件上的特定功能,如更改PLC上的程序状态。
4.图形用户界面GUI
攻击者可能试图通过图形用户界面(GUI)获得对计算机的访问权限,以增强执行能力。对GUI的访问允许用户以比CLI更直观的方式与计算机交互。GUI允许用户移动光标并点击界面对象,鼠标和键盘均是主要的输入设备。
如果不能进行物理访问,则可以通过协议进行访问,如基于Linux的VNC,以及Windows上的RDP。攻击者可以使用此访问权限在目标计算机上执行程序和应用程序。
在2015年对乌克兰电网的攻击中,攻击者利用SCADA环境中HMI打开了断路器。
5.钩子(Hooking)
攻击者可能会挂接到进程使用的应用程序编程接口 (API) 函数,以重定向对执行和权限提升手段的调用。Windows 进程通常利用这些 API 函数来执行需要可重用系统资源的任务。Windows API 函数通常作为导出的函数存储在动态链接库 (DLL) 中。
ICS 中出现的一种挂钩类型涉及通过导入地址表 (IAT) 挂接将调用重定向到这些函数。IAT 挂钩使用对进程 IAT 的修改,其中存储指向导入的 API 函数的指针。
6. 修改控制器任务
攻击者可以修改控制器的任务,以允许执行自己的程序。这可以允许攻击者操纵控制器的执行流和行为。
根据 61131-3,任务与项目组织单位 (POU) 的关联定义了任务关联。攻击者可以修改这些关联或创建新的关联来操纵控制器的执行流程。除了其他类型的程序修改(如在线编辑和程序附加)外,还可以使用程序下载来完成控制器任务的修改。
任务具有间隔、频率和优先级等属性,以满足程序执行的要求。一些控制器供应商使用隐式的预定义属性实现任务,而其他控制器供应商则允许显式表述这些属性。攻击者可能会将其程序与具有更高优先级的任务相关联,或者更频繁地执行相关程序。
例如,为了确保其程序在西门子控制器上的循环执行,攻击者可能会将其程序添加到任务组织块 1 (OB1) 中。
7.本地API
攻击者可以直接与本机操作系统应用程序编程接口(API)交互以访问系统功能。本机 API 提供了一种在内核中调用低级别操作系统服务的受控方法,例如涉及硬件/设备、内存和进程的服务。这些原生 API 在系统启动期间(当其他系统组件尚未初始化时)以及在日常操作期间执行任务和请求时作系统利用。
本机 API 提供的功能通常也通过接口和库向用户模式应用程序公开。例如,memcpy 和对内存寄存器的直接操作等函数可用于修改用户和系统内存空间。
8. 脚本编写
攻击者可以使用脚本语言以预先编写的脚本或以用户提供给解释器的代码的形式执行任意代码。脚本语言是不同于编译语言的编程语言,因为脚本语言使用解释器而不是编译器。这些解释器在源代码执行之前就读取并编译了部分源代码,与之相反,编译器将每一行代码都编译为可执行文件。脚本允许软件开发人员在存在解释器的任何系统上运行其代码。这样,他们可以分发一个程序包,而不是为许多不同的系统预编译可执行文件。脚本语言(如 Python)解释器在许多Linux 发行版中都默认提供。除了对开发人员和管理员来说是一个有用的工具外,脚本语言解释器还可能被攻击者滥用,从而在目标环境中执行代码、由于脚本语言的性质,使得武器化的代码可以很容易地部署到目标上,并允许随时编写脚本来执行任务。
9.用户执行
攻击者可能依赖目标组织的用户交互来执行恶意代码。用户交互可以包括安装应用程序、打开电子邮件附件或向文档授予更高的权限。攻击者可能会将恶意代码或VB代码嵌入文件中,如微软的Word和Excel 文档或软件安装程序。执行此代码要求用户在文档中启用脚本或写访问权限。在运行木马软件的情况下,嵌入式代码对于用户来说并容易忽视。
相关文章:
【读书笔记】针对ICS的ATTCK矩阵详解(一)
Techniques - ICS | MITRE ATT&CKhttps://attack.mitre.org/techniques/ics/ 一、初始访问(Initial Access) 该阶段:攻击者正在尝试进入ICS环境。 初始访问包括攻击者可能用作入口向量,从而可以在 ICS 环境中获得初始立足点的…...
Rust多线程访问数据,推荐使用mutex还是channel?
在Rust中,选择使用互斥锁(mutex)还是通道(channel)来进行多线程间的数据访问,主要取决于你的具体需求和数据共享的模式。 互斥锁(Mutex) 互斥锁是一种同步原语,用于保护…...
基于pytorch的手写体识别
一、环境搭建 链接: python与深度学习——基础环境搭建 二、数据集准备 本次实验用的是MINIST数据集,利用MINIST数据集进行卷积神经网络的学习,就类似于学习单片机的点灯实验,学习一门机器语言输出hello world。MINIST数据集,可以…...
Leetcode 56. 合并区间
题目描述:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入…...
C++:List的使用和模拟实现
创作不易,感谢三连!! 一、List的介绍 list的文档介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不…...
20个Python函数程序实例
前面介绍的函数太简单了: 以下是 20 个不同的 Python 函数实例 下面深入一点点: 以下是20个稍微深入一点的,使用Python语言定义并调用函数的示例程序: 20个函数实例 简单函数调用 def greet():print("Hello!")greet…...
Wireshark——获取捕获流量的前N个数据包
1、问题 使用Wireshark捕获了大量的消息,但是只想要前面一部分。 2、方法 使用Wireshark捕获了近18w条消息,但只需要前5w条。 选择文件,导出特定分组。 输入需要保存的消息范围。如:1-50000。 保存即可。...
006-浏览器输入域名到返回
浏览器输入域名到返回 1、URL 输入2、DNS 域名解析3、建立 TCP 连接三次握手概念三次握手理解 4、发送 HTTP/HTTPS 请求5、服务器处理,并返回响应6、浏览器解析并渲染页面7、请求结束,端口 TCP 连接四次挥手概念四次挥手理解 1、URL 输入 2、DNS 域名解析…...
【kubernetes】关于k8s集群如何将pod调度到指定node节点?
目录 一、k8s的watch机制 二、scheduler的调度策略 Predicate(预选策略) 常见算法: priorities(优选策略)常见的算法有: 三、k8s的标签管理之增删改查 四、k8s的将pod调度到指定node的方法 方案一&am…...
【框架】React和Vue的异同
1. 前言 React对于原生JS要求会高一级,国外React用的多,国内Vue用的多。 2. 共同点 组件化函数式编程 (vue3函数式编程、vue2声明式编程)单向数据流,数据驱动视图VirtualDOM Diff算法操作DOM社区成熟,…...
如何选择阅读软件技术学习书籍
如何选择阅读软件技术学习书籍 这里以软件技术学习的角度结合自身感悟谈谈,如何选择阅读书籍。 人的时间和精力都是非常有限的,软件技术学习者如何选择阅读书籍。以下是从我的经验教训总结的一些体会: 1、确定自己的兴趣领域和阅读目标 选…...
做抖店用平板能代替电脑操作吗?抖店运营相关注意事项,注意规避
我是王路飞。 之前给你们讲在抖音开店流程的时候,说过开店需要用到电脑,还需要执照、资金、时间等等。 那么做抖店用平板能代替电脑操作吗? 这个问题其实有很多新手问过我,有的甚至是想直接在手机上操作,想着能省点…...
【FastChat】用于训练、服务和评估大型语言模型的开放平台
FastChat 用于训练、服务和评估大型语言模型的开放平台。发布 Vicuna 和 Chatbot Arena 的存储库。 隆重推出 Vicuna,一款令人印象深刻的开源聊天机器人 GPT-4! 🚀 根据 GPT-4 的评估,Vicuna 达到了 ChatGPT/Bard 90%* 的质量&…...
从根到叶:深入理解二叉搜索树
我们的心永远向前憧憬 尽管活在阴沉的现在 一切都是暂时的,转瞬即逝, 而那逝去的将变为可爱 🌝(俄) 普希金 <假如生活欺骗了你> 1.二叉搜索树的概念 概念:搜索树(Search Tree)是一种有序的数据结构,用于存储和组…...
网络信息安全:11个常见漏洞类型汇总
一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。 在设计程序,忽略了对输入字符串中夹带的SQL指令的检查&…...
阿里云服务器使用教程_2024建站教程_10分钟网站搭建流程
使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…...
【排序算法】推排序算法解析:从原理到实现
目录 1. 引言 2. 推排序算法原理 3. 推排序的时间复杂度分析 4. 推排序的应用场景 5. 推排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现推排序算法 6.1 Java 实现: 6.2 JavaScript 实现: 6.…...
Python爬虫实战(基础篇)—13获取《人民网》【最新】【国内】【国际】写入Word(附完整代码)
文章目录 专栏导读背景测试代码分析请求网址请求参数代码测试数据分析利用lxml+xpath进一步分析将获取链接再获取文章内容测试代码写入word完整代码总结专栏导读 🔥🔥本文已收录于《Python基础篇爬虫》 🉑🉑本专栏专门针对于有爬虫基础准备的一套基础教学,轻松掌握Py…...
常见控件应用
常见控件应用 1.操作Ajax选项2.滑动滑块操作 1.操作Ajax选项 Ajax即Asynchronous JavaScript and XML(异步JavaScript和XML),是指一种创建交互式、快速动态网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,Ajax可以…...
什么是降压恒流芯片?它有什么作用?
降压恒流芯片是一种电子元件,用于将高电压或高电流的输入电源转换为稳定的低电压输出电源,并同时保持恒定的电流输出。 降压恒流芯片的作用有以下几点: 将高电压降低到适合驱动车灯的工作电压,确保车灯亮度稳定。 在负载变化时…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
