最近,有軟件安全研究者發現了Python包索引(PyPI)上12個惡意庫,其中包含惡意代碼,可以導致安全隱患,開啓後門,甚至盜取比特幣。

  該發現是安全研究者Bertus對PyPI做安全掃描時候發現的,先後兩次共發現12個有問題的軟件包,目前官方已經將他們刪除。今天蟲蟲就和大家一起來了解下這些惡意攻擊注入方法和原理。

  攻擊方法和涉及的包

  這些類包以所有以相同的模式打包。先是複製流行軟件包的代碼創建新庫,取了個相近但不同的名稱。例如有問題的四個包名字爲:diango,djago,dajngo,djanga都模仿了Django,這是一個非常流行的Python Web框架的名稱。然後給庫源碼的某些文件中注入了惡意代碼,主要是安裝文件setup.py中。 Setup.py文件包含一組指令,Python庫安裝程序(如”pip”)在Python項目中下載和設置新包時會自動執行這些指令。這些問題類庫增加了額外指令執行各種惡意操作,並且每個庫都內容有所不同。

  

  Bertus於10月13日發現了第一批11個惡意軟件包(見下表),並於10月21日發現了另一個惡意軟件包。

  

  這些惡意庫將嘗試收集感染機器的環境的數據,並添加到自動啓動,並開啓了一個反向shell後門,一旦啓動,惡意攻擊者就能遠程登陸該機器,並獲得全部權限。

  比特幣劫持攻擊原理和載荷(colourama)

  另一個惡意類庫”colourama”則會劫持了受感染用戶的操作系統剪貼板,並每隔500毫秒(接近試試)掃描一個類似比特幣地址的字符串,並將其替換爲攻擊者自己的比特幣地址,這樣如果感染用戶如果有比特幣的支付/轉賬操作時候,比特幣就會進入攻擊者的賬戶,因爲比特幣加密地址都是類似字串,基本上我們很難察覺。

  

  上面是Setup.py中插入的惡意行,請求一個地址,改地址內容(base64加密)解密後:

  

  最後復原的攻擊載荷(Vbscript代碼)

  

  上面代碼顯示,在註冊表CurrentVersion\Run 開機啓動項目增加自啓動項目,並且增加了個服務BTCS監控粘貼板並修改其中複製的類似比特幣地址的字串。

  該包也是模仿了一個名爲”colorama”的流行Python庫,用來美化命令行終端的。

  不過幸運是的是,絕大多數用戶都沒有收到這些惡意包的影響。由於及時發現和刪除,據PyPI 統計,只有54個用戶在被刪除前一個月下載了該軟件包。涉及攻擊者的比特幣賬戶也僅有40美元入賬,並且轉賬時間也是在該包發佈之前,所以,通過colourama應該是麼有偷到錢。

  安全研究人員聲稱他是通過使用自己創建的自動化系統發現了所有12個軟件包,該系統掃描了PyPI存儲庫,在對軟件包名稱對比時候做”拼寫錯誤”時候發現了這些惡意包的。

  研究人員說他是在看到去年斯洛伐克國家安全辦公室發出的安全警報後創建了掃描程序,警告Python開發人員在PyPI上發佈了10個惡意Python庫。那些圖書館也使用了拼寫錯誤的名字,直到數週後,用戶在由於意外或粗心安裝它們。

  該次注入的惡意代碼載荷大概爲:

  

  針對其他語言集中式類庫,Bertus表示還準備修改程序,並考慮增加對其他存儲庫,如RubyGems或JavaScript語言的npm也做類似掃描。

  比如去年年8月,瑞典開發人員就在npm repo上發現了38個惡意的JavaScript庫。這類庫通過惡意代碼收集用戶信息,並將數據上傳到攻擊者的服務器。

  

  蟲蟲在此可以預期針對開發語言基本類庫包的篡改,劫持會是將來惡意攻擊的一個方向,程序開發者在下載安裝類庫的時候一定要擦亮眼睛,謹防中標!

  專欄

查看原文 >>
相關文章