当前位置: 首页 > 科技观察

NPM包可以窃取浏览器密码

时间:2023-03-12 06:51:58 科技观察

最近,研究人员在官方NPM存储库中发现了一个包,可以从Chrome网络浏览器中窃取保存的密码。NPM是Node.js的包管理器,每月有超过150万个包和超过300亿次下载。研究人员分析发现,NPM包含不同类型的可执行文件,包括PE、ELF、MachO等。研究人员分析发现nodejs_net_server包的多个版本存在恶意行为。通过分析这些包的元数据数据,发现文件原名为a.exe,位于lib文件夹下。研究人员进一步分析发现,a.exe是一个ChromePass工具,用于恢复保存在Chrome网络浏览器中的密码。图1:ChromePass工具该工具本身并无恶意,但可用于恶意目的。例如,该软件包使用它来执行恶意密码窃取和凭据窃取。虽然密码恢复工具有图形用户界面,但恶意软件作者似乎更喜欢命令行工具。图2:nodejs_net_serverNPM包NPM的nodejs_net_server包页面表明该包的最新版本是v1.1.2,大约在6个月前发布。包的URL主页指向一个GitHub地址。这个包的开发者是chrunlee,他是GitHub的活跃开发者。GitHub账号中有网址:hxxps://chrunlee.cn。图3:chrunlee的github页面的NPM版本历史显示该包发布了12个版本,总下载量为1283次。表1:nodejs_net_server版本有趣的是,1.1.1和1.1.2版本包括测试ChromePass工具的结果。这些登录凭据信息保存在同一文件夹的a.txt文件中,因为密码恢复工具名为a.exe。该文本文件包含有关2020年3月至2020年12月期间创建的282个登录凭据的信息。图4显示恶意软件作者没有遵循密码的最佳安全实践。图4:恶意软件作者从浏览器中恢复的密码此外,恶意软件作者还使用类似的词(typosquatting)来引诱受害者执行恶意包。恶意软件作者使用与主流软件包名称相似的软件包来诱骗目标安装该软件包。在这种情况下,恶意软件作者使用不同的方式滥用npm包的配置选项。NPM包从package.json配置文件中的bin字段安装一个或多个可执行文件到PATH路径。安装包后,NPM会将文件软链接到prefix/bin文件夹(全局安装)或./node_modules/.bin/文件夹(本地安装)。如果存在同名模块,这些可执行文件可能会被分配任意名称,覆盖和映射到恶意软件提供的脚本。NPM下载数据表明该包已被下载超过35,000次。该软件包在Node.js开发者社区中也非常受欢迎,在过去7天内的下载量超过1000次。包劫持目标的另一个原因是测试是以命令行的形式执行的,而不是JS文件模块。图5:滥用package.json中的bin域执行劫持包安装,成功劫持后,恶意软件还通过将lib/test.js脚本安装为Windows服务来驻留。图6:常驻Windows服务安装该服务会在7353端口开启一个socket监听命令。支持的命令包括反向主机和端口配置、目录内容监控、文件查询、文件上传、shell命令执行、屏幕和摄像头录制。浏览器密码窃取是通过下面的ChromePass工具的shell命令执行实现的。图7:创建一个侦听套接字包的主页和GitHub存储库链接当前指向不存在的网页。查看恶意软件开发人员chrunlee发布的其他NPM包,发现一个包也没有链接。该软件包名为tempdownloadtempfile,2019年6月仅发布了一个版本。它仅包含package.json和file/test.js文件。file/test.js文件实现了在nodejs_net_server包中实现的相同的远程shell功能,但是这个包不执行劫持并且没有持久化机制。本文翻译自:https://blog.secure.software/groundhog-day-npm-package-caught-stealing-browser-passwords如有转载请注明出处。