NPM開原始碼庫惡意軟體包可透過Chrome的帳戶恢復工具竊取密碼

zktq2021發表於2021-07-23

在一場大規模的軟體供應鏈攻擊中,密碼竊取者透過ChromePass從Windows系統上的 Chrome竊取證照。

在npm開原始碼儲存庫中發現了一個使用合法密碼恢復工具的憑據竊取程式碼,它潛伏在npm開原始碼儲存庫中,等待從該源提取程式碼的龐大應用程式群中植入。

研究人員從Windows系統上的Chrome中捕獲了惡意軟體竊取憑據。密碼竊取器是多功能的:它還可以偵聽來自攻擊者的命令和控制 (C2) 伺服器的傳入命令,可以上傳檔案、從受害者的螢幕和攝像頭進行記錄以及執行shell命令。


關於npm


npm(最初是 Node Package Manager或NPM的縮寫)是JavaScript執行時環境 Node.js的預設包管理器,Node.js建立在Chrome的V8 JavaScript引擎之上。它類似於 GitHub、RubyGems和PyPI等其他程式碼儲存庫,因為它是(非常長的)軟體供應鏈的一部分。

“龐大”似乎不足以來形容這個軟體生態系統:npm託管著超過150萬個獨特的包,每天為全球約1100萬開發人員提供超過10億次JavaScript包請求。

濫用Google ChromePass實用程式

除了文字JavaScript檔案,npm還包含各種型別的可執行檔案,例如PE、ELF和 Mach-O。ReversingLabs 研究人員在週三的一篇文章中發表了他們的發現,他們表示,在對程式碼儲存庫進行分析期間,他們發現了一個有趣的嵌入式 Windows 可執行檔案:憑證竊取威脅。標記為“Win32.Infostealer.Heuristics”,它出現在兩個包中:nodejs_net_server和temptesttempfile。

至少就目前而言,第一個主要威脅是nodejs_net_server。

一些細節:


nodejs_net_server:自2019 年2月首次釋出以來,已釋出12個版本,總共下載超過 1,300次的包。它最後一次更新是在六個月前,由某人使用“chrunlee”的名字創作。根據 ReversingLabs 的說法,chrunlee似乎也是 GitHub上的活躍開發人員,該開發人員正在開發61個儲存庫。

透過靜態分析,研究人員在nodejs_net_server包的多個版本中發現了 Win32.Infostealer.Heuristics 檔案。它的後設資料顯示該檔案的原始名稱是“a.exe”,位於“lib”資料夾內。研究人員指出,帶有類似副檔名的單字母檔名會向威脅者發出危險訊號。果然,a.exe 原來是一個名為ChromePass 的實用程式:一種用於恢復儲存在Chrome 網路瀏覽器中的密碼的合法工具。

chrunlee 透過12個版本增強了nodejs_net_server包,直到去年12月最終使用指令碼下載密碼竊取程式對其進行升級,開發人員將其託管在個人網站上。研究人員推測,它隨後被調整為執行 TeamViewer.exe,“可能是因為作者不希望惡意軟體與其網站之間存在如此明顯的聯絡”。

分析師稱,chrunlee 釋出了第一個版本,“只是為了測試NPM包的釋出過程”。三個月後,惡意軟體製造商實施了遠端shell功能,並在多個後續版本中進行了改進。然後,在2020 年4月,chrunlee對版本1.0.7 和1.0.8 中的shell功能進行了小的修改。最後,在2020 年12月,版本1.1.0更新了一個指令碼來下載密碼竊取工具。


第二個問題包


temptesttempfile:總下載量超過800次。令人不解的是,這個包的主頁和GitHub儲存庫連結指向的是不存在的網頁。

chrunlee的npm包之一——tempdownloadtempfile——也有不存在的連結。它的一個檔案——file/test.js——實現了與nodejs_net_server包版本中發現的相同的遠端shell 功能,但這個包不執行執行劫持,並且它缺乏永續性機制,使其目的有些不清晰。


有趣的開發者F-Up


的分析師在挑選nodejs_net_server程式碼時發現了一個開發“有趣的事實”:它的作者 chrunlee不僅編寫了一個憑據竊取程式,而且還意外發布了自己儲存的登入憑據,與密碼竊取器緊密地聯絡在一起,使作者自己成為攻擊的物件。

“npm庫釋出的版本1.1.1和1.1.2包含了在作者的個人電腦上測試ChromePass工具的結果,”研究人員觀察到。"這些登入憑據被儲存在' a.txt '檔案中,該檔案與密碼恢復工具' a.exe '位於同一資料夾。"

此外,該文字檔案有282個從chrunlee瀏覽器捕獲的登入憑據,其中一些可能仍然有效(ReversingLabs 沒有驗證它們)。而且,其中一些憑據具有最蹩腳的密碼(例如“111”)和使用者名稱“admin”。

目前已刪除惡意軟體包

GitHub發言人宣告稱:在調查後,這兩個軟體包都被刪除了。


早期的npm劫持


這不是npm第一次被有毒程式碼滲透。今年早些時候,npm中釋出了三個惡意軟體包;研究人員表示,任何被程式碼損壞的應用程式都可能從Discord使用者那裡竊取令牌和其他資訊。

2018年7月,攻擊者破壞了ESLint維護者的npm憑據,並向npm登錄檔釋出了流行的“eslint-scope”和“eslint-config-eslint”軟體包的惡意版本。惡意程式碼複製了執行 eslint-scope機器的npm憑據並將其上傳給攻擊者。

幾個月後,也就是2018年11月,又發現了另一個惡意軟體包:它依賴於流行軟體包“event-stream”的 3.3.6 版。這個名為“flatmap-stream”的惡意包包含一個加密的有效載荷,專門用於從Copay應用程式中竊取比特幣。


儲存庫是越來越受歡迎的目標


儘管該惡意軟體在npm登錄檔中存在超過三年的事實令人擔憂,但值得慶幸的是,這也給反病毒安全公司一個標記惡意軟體的機會。高階安全研究員表示,Chrome密碼竊取惡意軟體“進一步證實了對開源生態系統的攻擊如何存在並且可能多年未被發現。”

請注意,這不僅僅是網路攻擊者瞄準線中的npm。本月早些時候,研究人員偶然發現了一組滲透到PyPI中的加密礦工,也就是Python Package Index (PyPI),這是一個用 Python程式語言建立的軟體程式碼儲存庫。

根據該報告,npm滲透說明開發人員過度信任第三方程式碼,重用庫以獲得快速、簡單的結果,並且很少在將庫納入他們的專案之前進行深入的程式碼或包的安全評估。

當然,有很多程式碼需要弄清楚。尤其在引入第三方程式碼庫中的程式碼時,使用 靜態程式碼檢測工具開原始碼測試可以有效發現程式碼中的安全漏洞及問題,降低軟體安全風險。靠完成軟體包安裝即算完成任務,很可能會導致意外安裝惡意軟體。

在這次分析中,惡意軟體包使用合法的Windows密碼恢復工具ChromePass,從使用者的Chrome瀏覽器中竊取密碼。威脅行為者通常依靠合法的元件和服務來實施網路攻擊以逃避檢測。

網路安全公司指出,軟體供應鏈攻擊正成為惡意行為者的“一種強有力的策略”,開發人員成為其組織及其客戶群的關鍵切入點。針對開發人員的最常見的攻擊媒介之一是利用公共軟體包儲存庫。因此在使用時,及時進行程式碼安全檢測十分重要。

由於這些儲存庫擁有大量託管包,它們為惡意軟體潛伏提供了一個很好的藏身之處。在這些儲存庫中反覆發現惡意包已經證明,對安全解決方案的需求日益增長,這些解決方案能夠提供可靠的識別和保護以抵禦這類攻擊。


參讀連結:

https://threatpost.com/npm-package-steals-chrome-passwords/168004/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2782853/,如需轉載,請註明出處,否則將追究法律責任。

相關文章