电影和电视节目教会我们将计算机黑客与艰巨的任务、详细的情节和精心设计的计划联系起来。
安全研究员 Carlos Fernández 和我最近在开源注册表中发现的内容讲述了一个不同的故事:坏人喜欢简单、有效和以用户为中心的思维。为了将他们的恶意代码提升到一个新的水平,他们还在 ChatGPT 的协助下添加了新功能。
就像软件即服务 ( SaaS ) 一样, DuckLogs 、 Redline Stealer和Racoon Stealer等恶意软件即服务 (MaaS) 产品在地下市场变得如此流行的部分原因是它们具有活跃的客户支持渠道及其产品往往是灵活且用户友好的。选中这些框,填写此表格,单击此按钮……这是您随时可用的恶意软件样本!不用说,这些产品通常是由专业的网络犯罪分子制造的。
在我们发现的不太受欢迎的 MaaS 产品中,例如Discord代币采集器Z3US ,它试图融入以人为本的设计原则,但该产品在客户支持方面失败了。由于违背了“终身保修”的承诺,相关的 Telegram 帐户主要由青少年操作和消费,充满了抱怨和敌意的“粗话”:
甚至在我加入 Sonatype 之前,我就想知道网络犯罪的现代面孔是什么样子的。现在我正在关注来自世界各地的一系列活动和不良行为者,我明白了一些事情:安全研究团队引起我注意的大多数恶意软件包并不是穿着连帽衫的古怪天才的产物在一个布满监视器的黑暗地下室里编码。由于 MaaS 的简单性,任何人都可以轻松地创建恶意软件样本并将其上传到开源注册表,只需最少的设置成本和技术知识。
Avast 研究人员观察到,自持续的 Covid-19 大流行开始以来,Discord 和 Telegram 等平台在年轻人中越来越受欢迎。这些青少年不使用主流社交媒体,而是在 Discord 中创建恶意软件社区,目的是在父母监督下进行游戏、聊天和社交。这些社区通常由技术最精通的成员领导,他们通过获得竞争服务器的所有权来炫耀,甚至通过分享屏幕截图来展示他们从毫无戒心的受害者那里窃取的信息。他们还根据其他成员的编程技能或为他们的活动做出贡献的潜力积极寻找其他成员。
作为这些活动的意外后果,我们所依赖的弹性开源注册表正面临资源负担过重的问题。仅上个月,我们的安全研究人员就确认上传到 npm 和 PyPI 注册表的 6,933 个软件包是恶意的。
我们最近跟踪了一个名为 EsqueleSquad 的西班牙语团体的活动,该团体已将 5,000 多个包上传到 PyPI。这些软件包中的有效负载试图使用 PowerShell 命令从 Dropbox、GitHub 和 Discord 下载 Windows 特洛伊木马。
我们随后调查了另一个名为 SylexSquad 的组织的活动,该组织可能来自西班牙,该组织创建了包含旨在泄露敏感信息的恶意软件的软件包。除了用 YouTube 视频为他们的产品做广告并在市场上销售外,他们还有一个小型 Discord 社区来招募新成员。而且他们似乎有足够的时间来污染开源软件供应链。
在 4 月的第一周,我们的 AI 系统将一系列上传到 PyPI 的包标记为可疑,后来被我们的安全研究人员确认为恶意包。这些软件包的命名模式由前缀“py”和后跟防病毒软件的引用组成: pydefenderultra 、 pyjunkerpro 、 pyanalizate和pydefenderpro 。
Carlos Fernández 注意到这些软件包归功于 SylexSquad 组织,这表明我们在涉及软件包reverse_shell和sintaxisoyyo之前跟踪的活动仍在继续。做出这一发现后,我们开始绘制他们的活动图。
在一场猫捉老鼠的游戏中,每当我们确认其中一个包是恶意包时,PyPI 团队就会帮助我们将其删除,几个小时后,作恶者就会潜入一个同名包。
为了让您全面了解此次活动,让我们回顾一下我们的初步调查结果:
如果开发人员要安装 PyPI 包reverse_shell , setup.py
将执行bypass.py
,这是一个托管在 GitHub 上的轻微混淆脚本,编码为一系列与 ASCII 代码相对应的数字。
反混淆后,它会在 Windows 上创建新的注册表值以实现持久性,因此,它会调用另一个 GitHub 托管的文件WindowsDefender.py
来窃取信息。浏览器信息(历史记录、cookie、密码……)、Steam 帐户、Telegram 帐户、信用卡,甚至受害者桌面的屏幕截图等敏感数据都将使用攻击者的 Discord webhook 上传。
快进到属于该组的新包,我们发现一个完全不同的setup.py
由使用Pyobfuscate生成的高度混淆代码(AES 256 加密)组成,该服务承诺“通过 4 层算法进行保护”。在 Carlos 卷起袖子进行去混淆之前,我们只能从伪装代码的海洋中辨认出两条信息:服务 URL 和一条可读消息:' why, are, you, reading, this, thing, huh
' 该消息中的每个词都是用于去混淆过程的变量:
我不会详细介绍 Pyobfuscate 的工作原理,但凭借耐心和专业知识,Carlos 成功地对代码进行了反混淆并揭示了其真实形式。他发现有趣的是,经过混淆的内容不仅存在于setup.py
中,而且还存在于之前可读的WindowsDefender.py
中,该文件最初是从 GitHub 中获取的,现在是从transfer.sh服务中获取的。
当坏人行动不够快时,像我们这样的安全研究人员——以及 GitHub 关于不允许将该平台用作恶意软件 CDN 的规则——很有可能会毁掉他们的计划。 WindowsDefender.py
就是这种情况,它最初托管在 GitHub 存储库“joeldev27”上,当时它被 PyPI 包pycracker和pyobfpremium使用,并在不久之后变得不活跃。
由于该文件名一直被使用,我进行了一些挖掘,发现WindowsDefender.py
托管在名为CosasRandoms480的 GitHub 存储库上。当我与卡洛斯分享这一发现时,他以一种惊奇的心情回应道:“在接下来的几个小时内,一个新的包将出现在 PyPI 上,其中包含一个经过混淆的setup.py
。安装后,它将从您刚刚发现的那个 repo 下载一个名为WindowsDefender.py
的高度混淆的脚本,它将建立一个持久性机制并下载我们之前调查过的信息窃取程序,也名为WindowsDefender.py
。”
当pyobfadvance包在不到 30 分钟后出现在 PyPI 上时,他的预测变成了现实,有效地使用“CosasRandoms480”作为恶意软件 CDN。我们将其报告给 PyPI 团队,并很快将其撤下。
科学家和哲学家想知道我们是否生活在计算机模拟中。作为一名安全研究员工作肯定会有这种感觉。您陷入了研究、发现和报告的循环中,同样的威胁不断出现。
两天后,我们的系统上标记了一个新的 SylexSquad 信用包: pydefenderpro。相同的混淆setup.py
。来自同一 GitHub 存储库的相同 URL 使用相同的持久性机制代码执行相同的WindowsDefender.py
并在WindowsDefender.py
中执行相同的信息窃取程序。一切看起来都一样,但文件不再被混淆,并且从transfer.sh调用了一个新脚本:
“这是一只老鼠!” Carlos 在Slack上给我发了消息。 “还有一个信息窃取者——”
“老鼠变种人?”我回答说,指的是我们一直在跟踪一种结合了远程访问木马和信息窃取程序的恶意软件的趋势。
“完全正确,”卡洛斯说。
OSINT 研究表明,新的 RAT 代码不是原始代码,而是DiscordRAT副本的副本:
冲洗并重复:恶意包被报告给 PyPI 团队,PyPy 团队将其取下。
当然,不久之后,一个新的软件包pydefenderultra出现了。这里的不同之处在于,不良行为者迁移到pastebin.pl服务而不是 GitHub 来下载WindowsDefender.py
,这可能是由于“CosasRandoms480”存储库被停用。
我们怀疑WindowsDefender.py
的可读版本更容易确认它是否违反了GitHub 规则。但是为什么坏人决定对脚本进行去混淆处理呢?对于他们简单的过程来说是不是太复杂了?
RAT 不断变异。菜单和评论现在已翻译成西班牙语并具有其他功能。
当他们上传另一个包pyjunkerpro时,循环继续。这次增加的功能包括键盘记录器、录音机、操作系统数据泄露,以及将任何文件从受害者上传到攻击者的 Discord 频道的能力。对代码的评论异常丰富,通常只与教程代码相关,与恶意软件无关。
“等等,”Carlos 说,大声思考,“如果他们使用 AI 来创建新功能怎么办?”
GPTZero和Copyleaks等工具为检测 AI 生成的文本提供了一个很好的起点。然而,识别人工智能生成的代码仍然具有挑战性,因为目前没有可用的工具(据我所知)能够准确地做到这一点。幸运的是,人类仍然非常擅长识别模式……
我迅速打开一个 ChatGPT 选项卡,然后用西班牙语输入提示,翻译为:“为使用 PyAudio 从远程计算机上传音频的 Discord 机器人编写 Python 代码。”我得到的输出非常相似:
我们似乎在跟踪脚本小子,他们从各种来源复制代码,然后使用 ChatGPT 添加新功能。生成的唯一代码使他们有信心在YouTube上为其做广告或通过他们自己的市场进行销售。没有人会怀疑这不是原创。
这就提出了一个有趣的问题:我们应该如何称呼这些不良行为者? AI 脚本的孩子?提示小子?
我问了 ChatGPT,它说:如果一个人正在使用 ChatGPT 为他们的恶意软件添加新功能,他们可能被认为是比传统脚本小子更高级的黑客类型。将他们称为“黑客”或“AI 辅助黑客”可能更准确。
迷人。
ChatGPT 给了他们更多的地位。
为了进行实验,Carlos 想尝试提示,看看该工具是否也能帮助我们进一步了解不良行为者的活动。
“我需要可以使用 Discord API 作为机器人的 Python 代码(使用令牌)。该脚本应连接到机器人并显示公会信息、公会成员、公会频道和消息历史记录。”
正如预期的那样,ChatGPT 生成了大量注释代码和清晰的入门说明:要使用此代码,请将“your_bot_token_here”替换为您的机器人令牌并运行 Python 脚本。因此,我们复制了“AI 辅助黑客”在MicrosoftUpdate.py
中添加的令牌,并将其粘贴到我们的 AI 生成的 Python 脚本中。
我们运行了那个代码……
……我们进去了!我们收集了有关成员(MEE6、$Demon666、$̷y̷n̷t̷a̷x̷E̷r̷r̷o̷r̷、aitanaxx05 + 4 reps、Esmeralda、SylexNaranjoDomina 和 AI Image Generator)、频道和消息历史记录的信息。事实证明,他们已经感染了几个用户——我们确定了一个来自古巴的 IP,另一个来自印度。操作系统信息被泄露到以受感染受害者用户名命名的频道:
我们发现我们连接到一个名为“SylexNaranjoDomina”的机器人,它具有管理员权限。这可能使某人能够添加成员、删除 webhook 或修改现有频道。
有人可以轻松地将公会名称从“Demon666 的服务器”更改为“Script Kiddie 的服务器”——对这类不良行为者的恰当描述,尽管我相信 ChatGPT 可能不赞成这个想法。
从这项调查中可以清楚地看出,MaaS 的普及和人工智能辅助代码的使用为技术水平较低的不良行为者创造了新的机会。随着越来越多的用户利用这些工具和产品,恶意包感染您的构建环境的机会就更多了。随着网络安全格局的不断发展,我们的防御措施也必须如此。通过保持知情、谨慎和受到保护,我们可以在应对不断变化的网络犯罪威胁方面领先一步。