2021年12月25日,天问Python供应链威胁监测模块捕获到四个可疑包,其访问可疑链接并下载exe文件执行:pip_manager.exe,md5:d0d6807cf73168f42885f40b17849c76,经过测试发现此链接为discord频道内分享的文件。

discord于2020年成为欧美州大量高校的线上教学工具,是目前美国用户增长最迅速的聊天软件。discord的功能包括但不限于绑定银行卡用于购买会员、订阅以及第三方应用绑定,如steam、jira、paypal等。

在发现其可疑行为后,我们迅速对该包进行了分析,发现其除了执行可疑文件外,还存在窃取用户信息、银行卡信息等恶意行为。包作者在__init__.py 中插入恶意代码,当用户import该包时会触发恶意行为。

攻击者在__init__.py定义了两个主要攻击函数main和HazardStealer,main函数片段如下所示。

discord_paths

图一:所有遍历的路径

 

discord_main

图二:main函数中信息窃取

 

攻击者通过遍历图一中的路径,将图二中窃取到的用户名、邮箱、电话、注册日期、mfa认证状态、银行卡信息保存状态等信息回传到webhook链接,如下所示。

discord_sendback

discord_webhook

图三:信息回传链接

 

经过测试,我们发现webhook是discord频道内自带的机器人功能,当使用requests.post等类似操作向其传递信息时,其会自动在频道内推送该消息,攻击者窃取到的所有信息均通过discord频道回传。如下图为我们做测试生成的消息机器人。

discord_webhook_check

图四:测试机器人

 

在回传敏感信息之后,包作者通过HazardStealer函数将discord所有进程退出,修改启动脚本后重新启动,如下所示。

discord_hazard

图五:修改启动脚本

 

图五中第一个for循环遍历所有和discord相关的进程并终止进程。

第二个for循环将discord的启动脚本index.js内内容替换为新的自定义函数,其重新声明并覆盖了discord原启动脚本中的如下函数。

函数名 作用
FirstTime 在用户启动discord时,将所有缓存移除,这样可尽可能的获取全部用户信息
SendToWebhook 将统计到信息回传到图三所示discord频道
Login 替换原有函数,用户登陆时将账号密码回传
ChangePassword 替换原有函数,用户修改密码时将账号密码回传
ChangeEmail 替换原有函数,用户修改邮箱时将新邮箱地址回传
CreditCardAdded 替换原有函数,用户绑定新的信用卡时将信用卡相关信息回传

第三个for循环重新启动discord。

discord_execute

图六:执行命令行

 

该恶意包最后会释放一个恶意exe 文件并进行相关持久化操作,经过天穹沙箱分析,发现该exe访问进程及注册表,关闭计算机中的任务管理器组建并同时禁用了计算机中的安全工具,避免自己被发现。

discord_close

图七:恶意行为

 

其同时将自己设置为开机启动项,为后续持续窃密做准备。

discord_selfgen

图八:启动项修改

 

攻击者此次共上传了四个不同名但是代码及攻击完全相同的包,我们已于发现第一时间通报给官方。

IOC

恶意包md5信息:

388e4a8eb5f9d6e6a6ff6801ff3f2df3

00f71a9eb6c801e0cc8ea3fa24ce24a4

029d821c7ac07e2ae24b27732ce667ea

a510679b0021c29ffc9fb8f69b154aa4

下载的恶意程序md5信息:

d0d6807cf73168f42885f40b17849c76