当前位置: 首页 > article >正文

基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件

   视频教程在我主页简介或专栏里

目录: 

提取和分析 .asar 文件

 4.1. .asar 文件提取工具

 4.1.1. 为什么选择 NPX?

 4.2. 提取过程

 4.3. 提取 .asar 文件的重要性

 4.3.1 关键词

 4.3.2 执行关键词搜索

  4.3.2.1 使用命令行工具“grep”进行关键词搜索

 4.3.2.2. 使用GUI工具进行关键词搜索 —例如 “Visual Studio Code”

提取和分析 .asar 文件

书接上回以及上上回,在了解了操作系统上基于 Electron 的应用程序的安装和识别过程后,我们将探讨提取 Electron 应用程序以收集有用信息进行测试的常见步骤概述。

4.1. .asar 文件提取工具

在上一章节中提到,.asar 文件是一种归档文件,包含了基于 Electron 的应用程序中使用的所有 JavaScript、HTML、CSS 以及其他资源。因此可能会产生一个问题:“我们是否可以提取这个 .asar 文件?” 答案是:“可以”。

那么,如何做到这一点?从技术上讲,有多种方式可以实现,其中一种方式是使用名为 asar[1] 的工具(与其文件扩展名一致)以及 NPX (https://docs.npmjs.com/cli/v7/commands/npx)。不过,我们个人更推荐使用 NPX。

4.1.1. 为什么选择 NPX?

本质上,NPX(Node Package eXecute 的缩写)是一个 NPM 包执行工具,允许我们无需全局或本地安装 NPM 包即可直接执行其命令。

许多用户选择使用 NPX,主要是出于以下高效的原因:避免在操作系统中安装可能仅临时使用的包,从而保持系统的整洁。此外,这还可以避免“包污染”问题,即未使用的包可能占用存储空间,甚至与其他包产生冲突。

因此,当我们偶尔需要运行 asar 命令时,使用 NPX 会更好。通过 NPX,asar 包会被临时下载并执行,这使我们能够在无需显式安装的情况下使用命令,非常适合一次性或偶尔使用的场景。

4.2. 提取过程

假设我们已经成功识别出操作系统中存在的基于 Electron 的应用程序(例如我们在第 2 章中创建的 Electron 应用程序),并找到了该应用程序的 .asar 文件(名为 app.asar)。

接下来需要执行 NPX,可以使用以下命令完成:

npx asar extract app.asar app-extract

简单说明:

app-extract 是用于存放 app.asar 文件解压结果的目录。

此 NPX 命令可以在安装 Node.js 后执行——就像我们在第 2 章中所做的一样。

在解压过程成功完成后,我们就可以访问之前在构建过程中被打包的资源了。

4.3. 提取 .asar 文件的重要性

众所周知,软件开发中一个常见问题是将敏感信息(如凭据)硬编码到代码中,无论是有意还是无意为之。根据 GitGuardian 2024 年秘密扩散状况报告(https://www.gitguardian.com/state-of-secrets-sprawl-report-2024) 的数据,超过 1/10 的代码作者曾暴露过秘密,每 1,000 次提交中有 7 次至少暴露了一个秘密。

在 Electron 应用程序中嵌入凭据是否存在特定问题?答案是“”。在 2021 年,一位名为 augustozanellato 的研究员(hackone 报告:https://hackerone.com/reports/1087489) 在 .asar 文件中发现了一个 GitHub 个人访问令牌(Personal Access Token),该令牌属于 Shopify 的一名员工。简而言之,经过分析,Shopify 发现该令牌几乎拥有对敏感数据的完全访问权限,可能被用于修改数据,甚至导致重大停机问题。

根据这些数据和事实,提取 .asar 文件并分析其内容的过程无疑是一种明智的做法。我们永远无法预知其中嵌入了哪些敏感信息,以及这些信息可能被如何利用。

4.3.1 关键词

也许有读者会问,在搜索过程中应该关注哪些具体方面,以及可以使用哪些关键词。

实际上,在这种情况下,我们寻找的内容与在源代码中搜索敏感信息类似,例如凭据、令牌、密钥、URL 和路径(包括端点)、IP 地址等。

关于关键词,我们可以使用 EdOverflow 编写的综合列表[2](尽管这份列表可能已有一段时间,但其中的关键词至今仍然有效)。

等等,你不是提到过 URL 吗?难道我们不能通过子域名枚举工具找到 URL 的存在吗?是的,这没错。然而,我们不能忽视某些可能性,例如:

通过 URL 进行的身份验证过程的存在,这通常无法在没有特定访问权限的情况下获得。

存在与主域名不同的测试环境(staging)URL。请注意,测试区域中存在的漏洞可能导致访问生产数据的风险是非常可能的。

4.3.2 执行关键词搜索

有多种方法可以在源代码中搜索敏感信息。然而,为了简单起见,我们将专注于两种常用工具:命令行工具(具体是使用 grep)和图形界面工具(例如 Visual Studio Code)。

4.3.2.1 使用命令行工具“grep”进行关键词搜索

grep 是 Linux 和 Unix 环境中的一条重要命令。其主要目的是在指定文件中搜索文本和字符串。本质上,grep 命令会查看所提供的文件,寻找与指定字符串或单词匹配的行。作为一种基础命令,它为测试人员识别文件中的敏感信息提供了极大的便利。

要使用 grep 进行关键词搜索,我们可以导航到包含提取的 .asar 文件的目录,并使用以下命令:

grep -r keyword /path/to/extracted/asar

此命令将在目录中递归地搜索指定的关键词,并显示所有匹配的行,帮助测试人员快速识别潜在的关注点。

4.3.2.2. 使用GUI工具进行关键词搜索 —例如 “Visual Studio Code”

对于那些更喜欢使用可视化方式进行关键词搜索的用户,像Visual Studio Code(VS Code)这样的GUI工具也提供了强大的搜索功能。通过在VS Code中打开项目目录并使用内置的搜索功能,我们可以对整个代码库进行全面的搜索。

注意:无论我们使用哪种工具,都需要仔细监控每个输入关键词产生的输出结果。

ok,在下一篇文章中,我们将探讨一个独特的案例研究。

 视频教程在我主页简介或专栏里

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关

   视频教程在我主页简介或专栏里

目录: 

提取和分析 .asar 文件

 4.1. .asar 文件提取工具

 4.1.1. 为什么选择 NPX?

 4.2. 提取过程

 4.3. 提取 .asar 文件的重要性

 4.3.1 关键词

 4.3.2 执行关键词搜索

  4.3.2.1 使用命令行工具“grep”进行关键词搜索

 4.3.2.2. 使用GUI工具进行关键词搜索 —例如 “Visual Studio Code”

提取和分析 .asar 文件

书接上回以及上上回,在了解了操作系统上基于 Electron 的应用程序的安装和识别过程后,我们将探讨提取 Electron 应用程序以收集有用信息进行测试的常见步骤概述。

4.1. .asar 文件提取工具

在上一章节中提到,.asar 文件是一种归档文件,包含了基于 Electron 的应用程序中使用的所有 JavaScript、HTML、CSS 以及其他资源。因此可能会产生一个问题:“我们是否可以提取这个 .asar 文件?” 答案是:“可以”。

那么,如何做到这一点?从技术上讲,有多种方式可以实现,其中一种方式是使用名为 asar[1] 的工具(与其文件扩展名一致)以及 NPX (https://docs.npmjs.com/cli/v7/commands/npx)。不过,我们个人更推荐使用 NPX。

4.1.1. 为什么选择 NPX?

本质上,NPX(Node Package eXecute 的缩写)是一个 NPM 包执行工具,允许我们无需全局或本地安装 NPM 包即可直接执行其命令。

许多用户选择使用 NPX,主要是出于以下高效的原因:避免在操作系统中安装可能仅临时使用的包,从而保持系统的整洁。此外,这还可以避免“包污染”问题,即未使用的包可能占用存储空间,甚至与其他包产生冲突。

因此,当我们偶尔需要运行 asar 命令时,使用 NPX 会更好。通过 NPX,asar 包会被临时下载并执行,这使我们能够在无需显式安装的情况下使用命令,非常适合一次性或偶尔使用的场景。

4.2. 提取过程

假设我们已经成功识别出操作系统中存在的基于 Electron 的应用程序(例如我们在第 2 章中创建的 Electron 应用程序),并找到了该应用程序的 .asar 文件(名为 app.asar)。

接下来需要执行 NPX,可以使用以下命令完成:

npx asar extract app.asar app-extract

简单说明:

app-extract 是用于存放 app.asar 文件解压结果的目录。

此 NPX 命令可以在安装 Node.js 后执行——就像我们在第 2 章中所做的一样。

在解压过程成功完成后,我们就可以访问之前在构建过程中被打包的资源了。

4.3. 提取 .asar 文件的重要性

众所周知,软件开发中一个常见问题是将敏感信息(如凭据)硬编码到代码中,无论是有意还是无意为之。根据 GitGuardian 2024 年秘密扩散状况报告(https://www.gitguardian.com/state-of-secrets-sprawl-report-2024) 的数据,超过 1/10 的代码作者曾暴露过秘密,每 1,000 次提交中有 7 次至少暴露了一个秘密。

在 Electron 应用程序中嵌入凭据是否存在特定问题?答案是“”。在 2021 年,一位名为 augustozanellato 的研究员(hackone 报告:https://hackerone.com/reports/1087489) 在 .asar 文件中发现了一个 GitHub 个人访问令牌(Personal Access Token),该令牌属于 Shopify 的一名员工。简而言之,经过分析,Shopify 发现该令牌几乎拥有对敏感数据的完全访问权限,可能被用于修改数据,甚至导致重大停机问题。

根据这些数据和事实,提取 .asar 文件并分析其内容的过程无疑是一种明智的做法。我们永远无法预知其中嵌入了哪些敏感信息,以及这些信息可能被如何利用。

4.3.1 关键词

也许有读者会问,在搜索过程中应该关注哪些具体方面,以及可以使用哪些关键词。

实际上,在这种情况下,我们寻找的内容与在源代码中搜索敏感信息类似,例如凭据、令牌、密钥、URL 和路径(包括端点)、IP 地址等。

关于关键词,我们可以使用 EdOverflow 编写的综合列表[2](尽管这份列表可能已有一段时间,但其中的关键词至今仍然有效)。

等等,你不是提到过 URL 吗?难道我们不能通过子域名枚举工具找到 URL 的存在吗?是的,这没错。然而,我们不能忽视某些可能性,例如:

通过 URL 进行的身份验证过程的存在,这通常无法在没有特定访问权限的情况下获得。

存在与主域名不同的测试环境(staging)URL。请注意,测试区域中存在的漏洞可能导致访问生产数据的风险是非常可能的。

4.3.2 执行关键词搜索

有多种方法可以在源代码中搜索敏感信息。然而,为了简单起见,我们将专注于两种常用工具:命令行工具(具体是使用 grep)和图形界面工具(例如 Visual Studio Code)。

4.3.2.1 使用命令行工具“grep”进行关键词搜索

grep 是 Linux 和 Unix 环境中的一条重要命令。其主要目的是在指定文件中搜索文本和字符串。本质上,grep 命令会查看所提供的文件,寻找与指定字符串或单词匹配的行。作为一种基础命令,它为测试人员识别文件中的敏感信息提供了极大的便利。

要使用 grep 进行关键词搜索,我们可以导航到包含提取的 .asar 文件的目录,并使用以下命令:

grep -r keyword /path/to/extracted/asar

此命令将在目录中递归地搜索指定的关键词,并显示所有匹配的行,帮助测试人员快速识别潜在的关注点。

4.3.2.2. 使用GUI工具进行关键词搜索 —例如 “Visual Studio Code”

对于那些更喜欢使用可视化方式进行关键词搜索的用户,像Visual Studio Code(VS Code)这样的GUI工具也提供了强大的搜索功能。通过在VS Code中打开项目目录并使用内置的搜索功能,我们可以对整个代码库进行全面的搜索。

注意:无论我们使用哪种工具,都需要仔细监控每个输入关键词产生的输出结果。

ok,在下一篇文章中,我们将探讨一个独特的案例研究。

 视频教程在我主页简介或专栏里

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关


http://www.kler.cn/a/506528.html

相关文章:

  • libcurl编译配置和使用
  • flutter在使用gradle时的加速
  • CCLINKIE转ModbusTCP网关,助机器人“掀起”工业智能的“惊涛骇浪”
  • JS-Web API-day02
  • 小结:路由器和交换机的指令对比
  • c++领域展开第十二幕——类和对象(STL简介——简单了解STL)超详细!!!!
  • 【k8s面试题2025】1、练气期
  • 鸿蒙-点击Notification通知并打开App的具体页面
  • 动态规划汇总1
  • 服务器数据恢复—Zfs文件系统数据恢复案例
  • mongDB学习笔记
  • 基于Linux系统指令使用详细解析
  • 浅谈云计算18 | OpenStack架构概述
  • 自动化仓储管理与库存控制
  • 《零基础Go语言算法实战》【题目 4-11】在不使用任何内置散列表库的情况下设计一个 HashSet
  • 蓝桥杯刷题第三天——排序
  • 如何有效防止和解决IP劫持问题
  • Linux中常用命令详解
  • STM32 FreeRTOS消息队列
  • 使用DAS的导出和导入功能迁移GaussDB数据
  • 【JAVA】-JDK
  • Windows Subsystem for Linux (WSL) 中安装 Redis
  • openharmony设备测试XTS测评用例开发指导
  • 学术内容写作ChatGPT提示词分享
  • 【Qt 常用控件】按钮类(QPushButton、QRadioButton、QCheckBox)
  • 基于 requests 依赖包的 Python 爬虫实战