繼SolarWinds和Kaseya之後,又一宗大型的供應鏈攻擊被揭發,有人利用ChromePass盜取Windows上Chrome的帳號認證,並且是透過合法的密碼復原工具去進行。
來自開源儲存庫
這次盜取認證的編碼會使用到Google Chrome瀏覽器上的合法密碼回復工具,隱身於NPM的開源儲存庫內,在龐大的應用程式群中等待被植入。研究人員發現這個密碼盜竊工具有多種功能,包括接收來自攻擊者C&C伺服器的指令,可以上載檔案、錄影受害者螢幕和攝錄機,並且執行shell command。
NPM (Node Package Manager)預設為執行JavaScript的運行環境Node.js,內建於Chrome的V8 JavaScrpit引擎內,其儲存庫和其他同類型如GitHub、RubyGems和PyPI一樣,是軟件供應鏈的一部份,NPM託管超過150萬個獨立Packages,為全球1100萬名開發者每日提供超過10億個JavaScript package要求。
濫用Google ChromePass功能
除了文字的JavaScript檔案,NPM同時持有不同種類的執行檔案,例如:PE、ELF和Mach-O,根據ReversingLabs研究人員發表的報告,在分析編碼儲存庫時,他們發現有趣的嵌入式Windows執行檔案,這正是認證盜取威脅,並標籤為Win32.Infostealer.Heuristics,以nodejs_net_server和temptesttempfile兩個packages出現。
其中nodejs_net_server有12個版本,自2019年2月開始有超過1300次下載,最後更新是6個月前,作者名為「chrunlee」,根據ReversingLabs的資料,chrunlee同樣在GitHub上相當活躍,有61個儲存庫正在儲理。
透過統計分析,研究人員發現Win32.Infostealer.Heuristics檔案被用在多個nodejs_net_server package內,其原始數據顯示檔案名稱原本為a.exe,儲於在「lib」資料夾內,單字的執行檔明顯會引起他人的警剔,而a.exe結果成為名叫ChromePass的工具,用來合法復原儲存在Chrome瀏覽器內的密碼。
然而chrunlee經過12個版本增加了nodejs_net_server packages的功能,直至去年12月最後的更新,具儲腳本去下載開發者儲存於個人網頁的密碼盜竊工具,它後來被設定為執行TeamViewer.exe,可能是因為製作者不希望惡意程式與他們的網站有明顯的關係。
chrunlee發佈首個版本只為測試發存NPM packages的流程,三個月後惡意程式製作者部署了remote shell功能加強往後數個版本,到2020年4月chrunlee製作了shell功能的小改動版本1.0.7和1.0.8,直至2020年12月的1.1.0版本更新具備腳本下載密碼盜竊工具。
至於另一個有問題的package temptesttempfile,總共超過800次下載,這檔案讓研究人員感到疑惑,提供的網頁和首頁儲存庫連結到不存在的網頁,在另一個chrunlee的NPM packages「tempdownloadtempfile」內,同樣擁有不存在的連結,當中的file/test.js檔案部署與nodejs_net_server相同的remote shell功能,但該package萁不會執行騎劫,因為缺少了持久化(persistence)機制,ReversingLabs的研究人員也不明白當中的目的。
開發人自己也失手
在研究chrunlee的時候研究人員有有趣的發現,他不但製作了認證盜竊工具,也意外地公開了他們自己儲存的登入認證,形式密碼盜竊工具盜竊了他們自己的密碼,令製作人自己也成為被攻擊目標。
在NPM儲存庫公開的1.1.1和1.1.2版本包括了在製作人自己個人電腦上,測試ChromePass工具的結果,這些登入認證儲存在a.txt檔案內,放在與密碼回復工具相同的資料夾內。
另一個有趣的發現是純文字檔內有282個登入認證是從chrunlee的瀏覽器內取得,有部份可能仍然有效(ReversingLabs研究人員沒有驗證),具中包括差無可差的密碼「111」和用戶名稱「admin」,由此可見製作人自己也不太注意密碼設定的安全。
有問題Package已被移除
研究人員在月初聯絡NPM保安團隊後,直至月中仍能找到兩個有問題packages,而在本週終於被移除,總算暫時阻止了潛在傷害繼續擴散。
資料來源:Threat Post