近日,研究人員發(fā)現(xiàn)官方NPM庫中的軟件包可以從Chrome web瀏覽器竊取保存的密碼。
NPM是Node.js的包管理器,共有超過150萬個(gè)包,每個(gè)月的下載量超過300億次。研究人員分析發(fā)現(xiàn),NPM中包含不同類型的可執(zhí)行文件,包括PE、ELF、MachO等。
研究人員分析發(fā)現(xiàn)nodejs_net_server包的多個(gè)版本中都具有惡意行為。通過這些包的metadata數(shù)據(jù)分析發(fā)現(xiàn)該文件的原始名為a.exe,位于lib文件夾中。研究人員進(jìn)一步分析發(fā)現(xiàn)a.exe是一個(gè)ChromePass工具,用來恢復(fù)Chrome web瀏覽器中保存的密碼。
圖1:ChromePass工具
該工具本身并不是惡意的,但是可以用于惡意目的。比如,該包使用它來執(zhí)行惡意密碼竊取和憑證竊取。雖然該密碼恢復(fù)工具有圖形用戶接口,但是惡意軟件作者好像更喜歡用命令行工具。
圖2:nodejs_net_server NPM包
NPM的nodejs_net_server包頁面表明該包的最新版本為v1.1.2,大約6個(gè)月前發(fā)布。該包的URL主頁指向一個(gè)GitHub地址。該包的開發(fā)者為chrunlee,是GitHub的活躍開發(fā)者,GitHub賬號中含有一個(gè)web鏈接:hxxps://chrunlee.cn。
圖3:chrunlee的github頁面
NPM版本歷史表明該包一共發(fā)布了12個(gè)版本,總下載次數(shù)為1283次。
表1:nodejs_net_server版本
有意思的是發(fā)布的1.1.1和1.1.2版本中包含了測試ChromePass工具的結(jié)果。這些登錄憑證信息保存在相同文件夾的a.txt文件中,因?yàn)槊艽a恢復(fù)工具名為a.exe。
文本文件中包含2020年3月到2020年12月創(chuàng)建的282個(gè)登錄憑證信息。圖4可以看出惡意軟件作者并沒有遵循密碼的最佳安全實(shí)踐。
圖4:惡意軟件作者從瀏覽器中恢復(fù)的密碼
另外,惡意軟件作者還通過類似單詞(typosquatting)誘使受害者執(zhí)行惡意包。惡意軟件作者使用與主流包類似名的包來誘使用目標(biāo)安裝包。本例中,惡意軟件作者使用了不同的方式來濫用npm包的配置選項(xiàng)。
NPM包在package.json配置文件中的bin域來PATH路徑安裝一個(gè)或多個(gè)可執(zhí)行文件。包安裝后,NPM會(huì)將該文件軟鏈到prefix/bin文件夾(全局安裝)或./node_modules/.bin/文件夾(本地安裝)。這些可執(zhí)行文件可能會(huì)被分配給任意名,如果相同名字的模塊存在,就會(huì)覆寫和映射到惡意軟件提供的腳本。
NPM下載數(shù)據(jù)表明該包已經(jīng)被下載超過3.5萬次數(shù)。該包在Node.js開發(fā)者社區(qū)也是非常流行的,在過去7天內(nèi)下載量超過1000次。該包車位劫持目標(biāo)的另外一個(gè)原因是測試執(zhí)行時(shí)是以命令行形式而非JS文件模塊的形式。
圖5:濫用package.json中的bin域來執(zhí)行劫持
包安裝和成功劫持后,惡意軟件還會(huì)通過將lib/test.js腳本安裝為Windows服務(wù)的形式來實(shí)現(xiàn)駐留。
圖6:駐留Windows服務(wù)安裝
該服務(wù)會(huì)打開一個(gè)socket來監(jiān)聽7353端口的命令。支持的命令包括逆向host和端口配置、目錄內(nèi)容監(jiān)聽、文件查詢、文件上傳、shell命令執(zhí)行、屏幕和攝像頭錄制。瀏覽器密碼竊取是通過之前下面的ChromePass工具的shell命令執(zhí)行實(shí)現(xiàn)的。
圖7:創(chuàng)建監(jiān)聽socket
該包的主頁和GitHub倉庫鏈接目前都指向不存在的web頁面。查看惡意軟件開發(fā)者chrunlee發(fā)布的其他NPM包發(fā)現(xiàn)了一個(gè)同樣沒有鏈接的包。該包名為tempdownloadtempfile,只在2019年6月發(fā)布過1個(gè)版本。其中只包含package.json和file/test.js文件。file/test.js文件實(shí)現(xiàn)了nodejs_net_server包中實(shí)現(xiàn)的相同的遠(yuǎn)程shell功能,但該包并不執(zhí)行劫持也沒有駐留機(jī)制。
本文翻譯自:https://blog.secure.software/groundhog-day-npm-package-caught-stealing-browser-passwords