為了隱匿惡意意圖,攻擊者將惡意程式碼進行混淆處理已經常態,現在有人將有效酬載的程式碼經過4道混淆處理,並根據開發人員電腦執行的作業系統類型,經由安裝的惡意NPM套件散布竊資軟體。

資安業者Socket近期發現10個惡意NPM套件,攻擊者以誤植名稱(Typosquatting)的手法,模仿TypeScript、discord.js,以及ethers.js等知名套件名稱,引誘開發人員上當。這些套件在7月4日上架,迄今已被下載9,900次,一旦開發人員下載安裝,這些套件就會根據受害電腦執行的作業系統(Windows、Linux,或macOS),植入對應的竊資軟體,從密碼管理工具、瀏覽器,以及身分驗證服務挖掘帳密與憑證,特別的是,攻擊者為降低開發人員戒心,過程裡還會顯示假的驗證碼。

雖然這些惡意套件能在NPM套件庫存活長達4個月的關鍵,主要還是在惡意程式碼經過4層混淆處理而難以被察覺異狀,但其他手法還是相當值得留意。首先,攻擊者在惡意套件的安裝流程當中,加入了預先安裝(preinstall)的指令碼,目的是確保惡意酬載在NPM套件安裝完成之後就會執行。

攻擊者先透過install.js確認受害電腦的作業系統,然後下載對應的惡意程式載入工具app.js,而這就是Socket提及經過4層混淆處理的有效酬載。

這些手法分別是:能自我解碼的Eval函數包裝手法、以動態金鑰與XOR演算法進行解碼、URL編碼處理,以及控制流程的混淆。

特別的是,此惡意程式還會在套件安裝完成後,顯示以ASCII打造的驗證碼,這樣的做法在NPM套件攻擊相當罕見。Socket認為,攻擊者這麼做可能有幾個目的,首先,讓惡意軟體看起來像合法工具,並讓開發人員認為套件來源可靠。

再者,由於圖靈驗證需要使用者互動,有機會繞過自動安全掃描機制,而且,這麼做還能讓惡意程式延遲執行,使得惡意軟體與NPM套件之間的關連降低。

在惡意酬載下載真正的竊資軟體之前,還會將受害電腦的IP位址傳送到攻擊者的伺服器,藉此讓攻擊者追蹤攻擊流程,確認受害電腦符合攻擊目標,並排除特定的國家或地區用戶。接著,攻擊者才會下載檔案大小為24 MB的二進位程式,此檔案是以Python打造而成的應用程式,功能是到不同平臺挖掘帳密資料。

值得留意的是,攻擊者特別針對Windows、macOS,以及不同的Linux桌面環境,挖掘內建帳密管理機制存放的帳密。以Windows而言,他們針對Windows認證管理員(Credential Manager);而在macOS電腦上,他們針對鑰匙串系統(Keychain)而來;此外,攻擊者也對KDE桌面環境的KWallet、GNOME的Keyring下手。在作業系統的帳密管理機制之外,攻擊者也染指Firefox,並在受害電腦當中,試圖從OAuth驗證程式庫、JWT權杖,以及Ubuntu作業系統搭載的LaunchPad模組,找出用於身分驗證的權杖。

熱門新聞

Advertisement