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

devtools/2025/1/18 8:03:45/

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

目录: 

提取和分析 .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.ppmy.cn/devtools/151506.html

相关文章

【数据分析】coco格式数据生成yolo数据可视化

yolo的数据可视化很详细,coco格式没有。所以写了一个接口。 输入:coco格式的instances.json 输出:生成像yolo那样的标注文件统计并可视化 import os import random import numpy as np import pandas as pd import matplotlib import matplot…

几个Linux系统安装体验(续): 中标麒麟服务器系统

本文介绍中标麒麟服务器系统(NeoKylin)的安装。 下载 下载地址: https://product.kylinos.cn/productCase/42/25 下载文件:本文下载文件名称为NeoKylin-Server7.0-Release-Build09.06-20220311-X86_64.iso。 下载注意事项&…

剑指Offer|LCR 031. LRU 缓存

LCR 031. LRU 缓存 运用所掌握的数据结构,设计和实现一个 LRU (Least Recently Used,最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存…

Python贪心

贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质&#xf…

【算法学习笔记】32:筛法求解欧拉函数

上节学习的是求一个数 n n n的欧拉函数,因为用的试除法,所以时间复杂度是 O ( n ) O(\sqrt{n}) O(n ​),如果要求 m m m个数的欧拉函数,那么就会花 O ( m n ) O(m \sqrt{n}) O(mn ​)的时间。如果是求连续一批数的欧拉函数&#x…

DNS服务学习

DNS服务 一、什么是DNS服务二、概念三、疑问四、内容五、应用实践 一、什么是DNS服务 二、概念 三、疑问 四、内容 五、应用实践 windows server 2019 搭建dns服务器

浅谈云计算20 | OpenStack管理模块(下)

OpenStack管理模块(下) 五、存储管理5.1 存储管理概述 5.2 架构设计5.2.1 Cinder块存储架构5.2.2 Swift对象存储架构 六、网络管理6.1 网络管理概述6.2 架构解析6.2.1 Neutron网络服务架构6.2.2 网络拓扑架构 6.3 原理与流程6.3.1 网络创建原理6.3.2 网络…

如何在vue中渲染markdown内容?

文章目录 引言什么是 markdown-it?安装 markdown-it基本用法样式失效?解决方法 高级配置语法高亮 效果展示 引言 在现代 Web 开发中,Markdown 作为一种轻量级的标记语言,广泛用于文档编写、内容管理以及富文本编辑器中。markdown…