NPM包可竊取瀏覽器密碼
近日,研究人員發(fā)現(xiàn)官方NPM庫(kù)中的軟件包可以從Chrome web瀏覽器竊取保存的密碼。
NPM 是Node.js的包管理器,共有超過(guò)150萬(wàn)個(gè)包,每個(gè)月的下載量超過(guò)300億次。研究人員分析發(fā)現(xiàn),NPM中包含不同類(lèi)型的可執(zhí)行文件,包括PE、ELF、MachO等。
研究人員分析發(fā)現(xiàn)nodejs_net_server包的多個(gè)版本中都具有惡意行為。通過(guò)這些包的metadata數(shù)據(jù)分析發(fā)現(xiàn)該文件的原始名為a.exe,位于lib文件夾中。研究人員進(jìn)一步分析發(fā)現(xiàn)a.exe是一個(gè)ChromePass工具,用來(lái)恢復(fù)Chrome web瀏覽器中保存的密碼。

圖1: ChromePass工具
該工具本身并不是惡意的,但是可以用于惡意目的。比如,該包使用它來(lái)執(zhí)行惡意密碼竊取和憑證竊取。雖然該密碼恢復(fù)工具有圖形用戶(hù)接口,但是惡意軟件作者好像更喜歡用命令行工具。

圖2: nodejs_net_server NPM包
NPM的 nodejs_net_server包頁(yè)面表明該包的最新版本為v1.1.2,大約6個(gè)月前發(fā)布。該包的URL主頁(yè)指向一個(gè)GitHub地址。該包的開(kāi)發(fā)者為chrunlee,是GitHub的活躍開(kāi)發(fā)者,GitHub賬號(hào)中含有一個(gè)web鏈接:hxxps://chrunlee.cn 。
圖3: chrunlee的 github頁(yè)面
NPM版本歷史表明該包一共發(fā)布了12個(gè)版本,總下載次數(shù)為1283次。
表 1: nodejs_net_server版本

有意思的是發(fā)布的1.1.1和1.1.2版本中包含了測(cè)試ChromePass工具的結(jié)果。這些登錄憑證信息保存在相同文件夾的a.txt文件中, 因?yàn)槊艽a恢復(fù)工具名為a.exe。
文本文件中包含2020年3月到2020年12月創(chuàng)建的282個(gè)登錄憑證信息。圖4可以看出惡意軟件作者并沒(méi)有遵循密碼的最佳安全實(shí)踐。

圖4: 惡意軟件作者從瀏覽器中恢復(fù)的密碼
另外,惡意軟件作者還通過(guò)類(lèi)似單詞(typosquatting)誘使受害者執(zhí)行惡意包。惡意軟件作者使用與主流包類(lèi)似名的包來(lái)誘使用目標(biāo)安裝包。本例中,惡意軟件作者使用了不同的方式來(lái)濫用npm包的配置選項(xiàng)。
NPM包在package.json 配置文件中的bin 域來(lái)PATH路徑安裝一個(gè)或多個(gè)可執(zhí)行文件。包安裝后,NPM會(huì)將該文件軟鏈到prefix/bin文件夾(全局安裝)或./node_modules/.bin/ 文件夾(本地安裝)。這些可執(zhí)行文件可能會(huì)被分配給任意名,如果相同名字的模塊存在,就會(huì)覆寫(xiě)和映射到惡意軟件提供的腳本。
NPM下載數(shù)據(jù)表明該包已經(jīng)被下載超過(guò)3.5萬(wàn)次數(shù)。該包在Node.js開(kāi)發(fā)者社區(qū)也是非常流行的,在過(guò)去7天內(nèi)下載量超過(guò)1000次。該包車(chē)位劫持目標(biāo)的另外一個(gè)原因是測(cè)試執(zhí)行時(shí)是以命令行形式而非JS文件模塊的形式。

圖 5: 濫用package.json中的bin域來(lái)執(zhí)行劫持
包安裝和成功劫持后,惡意軟件還會(huì)通過(guò)將 lib/test.js 腳本安裝為Windows服務(wù)的形式來(lái)實(shí)現(xiàn)駐留。

圖6: 駐留Windows服務(wù)安裝
該服務(wù)會(huì)打開(kāi)一個(gè)socket來(lái)監(jiān)聽(tīng)7353端口的命令。支持的命令包括逆向host和端口配置、目錄內(nèi)容監(jiān)聽(tīng)、文件查詢(xún)、文件上傳、shell命令執(zhí)行、屏幕和攝像頭錄制。瀏覽器密碼竊取是通過(guò)之前下面的ChromePass 工具的shell命令執(zhí)行實(shí)現(xiàn)的。

圖7: 創(chuàng)建監(jiān)聽(tīng)socket
該包的主頁(yè)和GitHub倉(cāng)庫(kù)鏈接目前都指向不存在的web頁(yè)面。查看惡意軟件開(kāi)發(fā)者chrunlee發(fā)布的其他NPM包發(fā)現(xiàn)了一個(gè)同樣沒(méi)有鏈接的包。該包名為tempdownloadtempfile,只在2019年6月發(fā)布過(guò)1個(gè)版本。其中只包含 package.json 和file/test.js文件。file/test.js文件實(shí)現(xiàn)了nodejs_net_server 包中實(shí)現(xiàn)的相同的遠(yuǎn)程shell功能,但該包并不執(zhí)行劫持也沒(méi)有駐留機(jī)制。
本文翻譯自:https://blog.secure.software/groundhog-day-npm-package-caught-stealing-browser-passwords如若轉(zhuǎn)載,請(qǐng)注明原文地址。