Discord 是一个社交平台,用户可以创建服务器来组建社区并进行实时交流,支持语音、视频和文本聊天。虽然它最初在游戏玩家中很受欢迎,但现在已扩展为一个兴趣各异的群体聚集在一起交流的空间。
Discord Bot 是一个在用户创建的服务器上自动执行特定任务的程序,提供各种功能,例如服务器管理、自动消息响应、游戏辅助、音乐播放和通知传递,使服务器操作更加简单。这些机器人主要使用 Python 和 JavaScript 等语言实现,并通过 Discord API 与服务器交互。
本文分析了一个使用 Discord Bot 实施 RAT 恶意软件的案例(PySilon)。此 RAT 恶意软件的完整源代码已在 GitHub 上公开,其网站和 Telegram 服务器等平台上都有社区。
图 1. RAT 恶意软件构建程序
Builder 支持自定义,允许用户指定开发 Discord Bot 所需的服务器 ID 和机器人令牌等信息,以及在系统上安装的注册表路径和名称。之后,将自定义信息输入到预先实现的 Python 代码中,并使用 PyInstaller 将其转换为可执行文件 (.exe)。
图 2. 构建定制化 RAT 恶意软件的过程
当以此方式创建的可执行文件在用户电脑上运行后,威胁行为者在服务器上会创建一个新通道。IP 地址和其他系统信息最初通过聊天发送给威胁行为者,如下图所示。
为每台被机器人感染的 PC 创建一个新通道,允许威胁行为者单独控制每台被感染的 PC。
图 3. 最初安装的机器人向威胁行为者发送的系统信息
图 4. 保持持久性
当构建的 RAT 恶意软件在系统上执行时,它会自我复制并在用户文件夹中创建以保持持久性(见图 4),并使用注册表将自身添加到 RUN 键中。这样,恶意软件就会继续执行,并驻留在每次 PC 启动时系统中。威胁行为者还可以自定义和创建用于自我复制的文件夹的名称。
此外,还有反虚拟机逻辑,该逻辑使用虚拟机中存在的文件或进程的名称来实现其功能。该恶意软件被设置为识别虚拟环境,并且在执行其功能之前不会在其中运行。
图 5. 可用命令
随后,威胁行为者可以将图5列出的命令输入到创建的频道的聊天中,以执行其他恶意行为。
以下是从威胁行为者的角度来看恶意软件的主要行为。
- 收集信息
图 6. 收集信息
Grab命令可用于从安装了RAT恶意软件的系统中收集信息。
它从安装的浏览器路径收集用户的个人信息,包括支付信息,以及浏览历史记录和 cookie 信息,并提取各种密码发送给威胁行为者。
可收集信息:Discord 代币、Nitro、MFA、电子邮件、电话号码、密码、cookie 信息、网页浏览历史记录等。
- 屏幕录制和录音
图 7. 发送给威胁行为者的屏幕和录音文件
它支持使用 Python 模块(例如 pyautogui、numpy、imageio 和 sounddevice)在受感染的 PC 中录制屏幕和音频。
- 键盘记录
图 8. 键盘记录
当用户按下“Enter”键时,它会将输入内容传输到威胁行为者的服务器。
- 文件夹加密
图 9. 加密/解密命令
图 10. 在用户文件夹中创建的密钥文件
它可以对受感染PC上的文件夹内的文件进行加密。经发现,该病毒使用了Fernet算法,解密所需的密钥文件存储在用户文件夹中。
加密文件的扩展名为 .pysilon,并且没有创建赎金记录。
除了上述功能外,它还可以操纵hosts文件,创建和管理网站黑名单/白名单,上传/下载文件,执行cmd命令,启动/终止进程,甚至使用Windows原生功能触发蓝屏死机(BSOD)。
使用 Discord 实现恶意 RAT 功能的开源项目(如 PySilon)正在不断涌现。由于源代码是公开可用的,威胁行为者可以轻松地将其合并到他们的机器人中并将其伪装成有用的工具。此外,由于数据是使用为正常机器人功能实施的官方 Discord 服务器传输的,因此用户很难意识到已安装恶意软件。因此,在安装来自不受信任来源的机器人或程序时务必小心谨慎。