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

admin 2025年1月16日18:54:25评论13 views字数 2617阅读8分43秒阅读模式

 

提取和分析 .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 包即可直接执行其命令。

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

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

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

4.2. 提取过程

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

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

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

npx asar extract app.asar app-extract

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

简单说明:

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

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

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

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

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 发现该令牌几乎拥有对敏感数据的完全访问权限,可能被用于修改数据,甚至导致重大停机问题。

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

根据这些数据和事实,提取 .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

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

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

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

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

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

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

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

References

[1] asar: https://github.com/electron/asar
[2] EdOverflow 编写的综合列表: https://gist.github.com/EdOverflow/8bd2faad513626c413b8fc6e9d955669

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月16日18:54:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件https://cn-sec.com/archives/3635124.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息