免责声明:
本公众号致力于安全研究和红队攻防技术分享等内容,本文中所有涉及的内容均不针对任何厂商或个人,同时由于传播、利用本公众号所发布的技术或工具造成的任何直接或者间接的后果及损失,均由使用者本人承担。请遵守中华人民共和国相关法律法规,切勿利用本公众号发布的技术或工具从事违法犯罪活动。最后,文中提及的图文若无意间导致了侵权问题,请在公众号后台私信联系作者,进行删除操作。
Electron是一个开源框架,允许开发者使用Web技术(HTML、CSS和JavaScript)构建跨平台的桌面应用程序。由于其易用性和灵活性,Electron被广泛应用于各种领域,比如VScode、typora、xmind、QQ等软件都使用了Electron。
在Electron中,可以使用ASAR格式来打包应用程序,以便在多个平台上运行。ASAR是一种打包和分发Electron应用程序的格式,它可以将应用程序的所有文件和目录打包成一个单独的文件(asar文件),以便于分发和管理,asar文件通常在应用安装目录的resources文件夹下。
Electron投毒是对ASAR解包后在源代码或依赖中植入恶意代码,或者通过调试模式注入代码,以实现恶意操作,通常Electron应用会带有可信的数字签名,植入恶意代码不会破坏签名校验。
1.安装asar
npm install -g asar
2.命令行中解压asar文件
asar extract app.asar ./app
3.命令行中重新打包asar文件
asar pack ./app app.asar
-
node_modules投毒
攻击者可以在Electron项目的node_modules依赖项中植入恶意模块,这些模块在应用程序运行时被加载并执行恶意操作。
以typora为例,安装目录下的resources文件夹有node_modules.asar,对它进行解包
asar extract node_modules.asar ./node_modules_extract
在常用的库中植入恶意代码,这里选择raven库,这个库会在打开typora时加载
保存后通过以下命令重新打包
asar pack ./node_modules_extract node_modules.asar
打开typora执行恶意代码
-
入口文件投毒
攻击者可以在应用的入口文件(如main.js等)中注入恶意代码,当应用程序启动时,这些代码会被执行。
以vscode为例,打开package.json,查看main字段,入口文件为out目录下的main
在最后植入恶意代码并保存
重新打开vscode会执行恶意代码
-
资源文件投毒
攻击者修改或替换应用的资源文件(如html、js等),在加载这些资源时触发恶意代码执行,当html或js中允许使用require,方法和上面一样,部分应用中的html或js可能无法使用require,若此时chrome内核版本较低,可以配合chrome的RCE实现命令执行,这种方式也常用于XSS2RCE。
某应用使用了低版本Chromium内核,对app.asar解包后,index.html中插入Chrome RCE代码
重新打包app.asar,打开应用会执行Chrome RCE
-
调试模式注入
前3种方式都存在局限性,在程序运行中是无法植入恶意代码的,但是可以通过chrome的inspect功能实现在调试模式下注入恶意代码,参考开源项目:https://github.com/djerryz/electron_shell
1.资源文件验证与完整性校验
在加载应用资源文件之前,进行严格的验证和完整性校验,确保资源文件未被篡改。同时,使用安全的哈希算法对资源文件进行校验,确保文件的完整性和未被篡改
如在QQ的入口文件植入代码,会提示文件损坏
2.使用bytenode等方式保护代码
bytenode会将js代码编译成V8字节码,攻击者无法直接植入恶意JS代码,同时会提高逆向分析的难度,开源项目:https://github.com/bytenode/bytenode
3.保持Electron框架的安全更新
及时关注Electron框架和Chromium内核的安全公告和更新,确保应用程序使用最新的安全版本
4.禁用调试模式与安全配置
禁用调试模式,防止攻击者利用开发者工具进行投毒。同时,配置安全设置,限制应用程序的敏感操作,例如禁用不必要的API调用、限制文件系统访问等。
原文始发于微信公众号(Lambda小队):一篇文章让你秒会Electron投毒攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论