黑客如何利用Discord Webhook在三主流软件包平台构建隐蔽C2通道

威胁攻击者正通过npm、PyPI和RubyGems等开源软件包平台,滥用Discord webhook作为隐蔽的命令与控制通道,窃取开发者环境中的敏感数据和系统信息。文章详细分析了其技术原理、在各生态中的具体恶意包案例,并提供了相应的缓解措施与入侵指标。

威胁攻击者利用Discord Webhooks构建C2通道,通过npm、PyPI和Ruby软件包实施攻击

威胁攻击者正日益滥用Discord webhooks作为开源软件包内部的隐蔽命令与控制(C2)通道,从而能够在无需搭建专用基础设施的情况下,秘密窃取敏感信息、主机遥测数据和开发者环境数据。 Socket公司的威胁研究团队记录了在npm、PyPI和RubyGems平台上活跃的此类滥用行为。在这些案例中,硬编码的Discord webhook URL充当了只写的“接收器”,通过HTTPS协议将数据虹吸到攻击者控制的频道。 由于webhook的请求数据类似于发往一个广泛允许的域名的普通JSON流量,这些操作常常能绕过边界过滤和基于签名的安全控制。

Discord Webhooks如何成为数据外泄管道

Discord webhooks是一种HTTPS端点,只需持有包含ID和秘密令牌的URL,即可向频道发布消息。 存活的端点通常在成功时返回“204 No Content”,或在设置了“?wait=true”参数时返回“200 OK”。而401、404和429状态码则分别表示令牌无效、webhook已删除或达到速率限制。 关键在于,webhook URL是只写的——防御者无法仅凭URL读取频道的历史记录——这使得关停攻击和追溯调查更加困难,同时降低了攻击者的实施难度和成本。

  • 只写访问:Webhook URL仅允许发布消息,无法读取频道历史。
  • 最小化身份验证:仅需持有包含ID和秘密令牌的URL。
  • 标准HTTP响应:存活的端点返回可预测的状态码以供验证。
  • 隐蔽性优势:流量看起来像是发往流行Discord域名的合法JSON数据。

跨生态系统的恶意软件包

在npm上mysql-dumpdiscord 针对敏感配置文件,如 config.json.envayarlar.jsayarlar.json(土耳其语中意为“设置”),读取并分块处理文件内容后,通过POST请求将其发送到硬编码的Discord webhook。 更为简单的是,nodejs.discord 实现了对 discord.js 的薄封装,可将任意字符串转发到内嵌的webhook URL。虽然有时用于日志记录,但如果在安装脚本或运行时被调用,这种模式很容易变成数据泄露点。

在PyPI上malinssx 覆盖了 setuptools 的安装命令,在 pip install 过程中静默触发向Discord webhook发送POST请求,并发送一条越南语通知信息。 同一攻击者(账户名 sdadasda232323)发布了完全相同的包(malicusmaliinn),重复使用同一个webhook——这标志着攻击者为逃避单一软件包下架,采用了跨名称的自动化或迭代式投毒策略。

  • npm攻击目标:如 .envconfig.json 等配置文件及土耳其语“ayarlar”设置文件。
  • PyPI渗透:在 pip install 过程中执行的安装时挂钩。
  • RubyGems利用:包括 /etc/passwd 和系统元数据在内的主机级数据收集。
  • 跨平台持久化:同一威胁攻击者在多个软件包生态系统中部署。

在RubyGems上sqlcommenter_rails 更进一步,收集主机级信号,包括 /etc/passwd 内容、来自 /etc/resolv.conf 的DNS解析器、用户名、主机名、工作目录和家目录、包元数据,以及通过 api.ipify.org 获取的公网IP地址,然后将整个有效载荷序列化并发送到硬编码的Discord webhook。整个过程会抑制错误,倾向于静默失败而非引发明显异常。

为何此战术有效——以及应对措施

Discord webhook C2改变了供应链攻击的经济模式。它是免费的、快速的,通过TLS协议将流量混入到流行域名的通信中,并且除了持有URL外,无需任何身份验证流程。 当与安装时挂钩、postinstall 脚本或Ruby/Python的安装覆盖功能结合时,这些软件包可以在应用程序运行时控制或终端检测与响应(EDR)介入之前,就从开发者笔记本电脑和CI运行器中窃取敏感信息。 类似的模式也在Telegram、Slack和GitHub的webhooks中被观察到,这突显了攻击者正更广泛地转向“商品化C2即服务”,从而削弱了静态入侵指标(IOC)的价值。

  • 经济优势:免费的基础设施消除了托管成本和技术复杂性。
  • 规避策略:发往受信任域名的TLS流量绕过了大多数安全控制。
  • 时机利用:安装时执行发生在运行时安全监控之前。
  • 扩大攻击面:类似模式在Telegram、Slack和GitHub webhooks中涌现。

缓解措施应侧重于行为和出口控制。将webhook端点视为潜在的数据外泄向量,并在可行的情况下,通过DNS和TLS SNI过滤实施允许列表策略。 使用锁文件固定依赖项,要求提供来源/SLSA证明,并通过PR扫描来管理依赖项更新,以标记硬编码的webhook URL、出站网络调用和安装时执行。 扫描软件包差异中的秘密访问,并以最小权限范围轮换开发者凭证。在CI/CD中,默认情况下禁止构建和测试步骤的出站互联网访问,仅授予严格限定范围的例外。 最后,为开发者工作流程配备能够拦截基于webhook外泄模式的软件包信誉和恶意软件检测功能。

入侵指标

ID 技术名称
T1005 来自本地系统的数据
T1016 系统网络配置发现
T1020 自动化外泄
T1033 账户发现
T1059 命令与脚本解释器
T1059.006 命令与脚本解释器:Python
T1059.007 命令与脚本解释器:JavaScript
T1071.001 应用层协议:Web协议
T1082 系统信息发现
T1119 自动化收集
T1195.002 供应链威胁:入侵软件供应链
T1552.001 不安全凭证:文件中的凭证
T1567 通过Web服务进行数据外泄
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计