摘要#
近期发现 GitHub 用户 0xjiefeng 针对网络安全人员发起了供应链投毒攻击 。攻击者(GitHub ID:0xjiefeng)通过伪造热门漏洞利用工具项目(如 CVE-2024-35250-BOF、BOF-BypassUAC),诱导研究人员下载并在 Visual Studio 中打开。相关仓库现已被封禁 。
该攻击摒弃了传统的 .exe 捆绑或 .csproj 构建任务投毒,而是将恶意反序列化载荷隐匿于 Visual Studio 隐藏的 .suo(解决方案用户选项)文件中。载荷一旦触发,会利用“白加黑”侧载与内存镂空技术实现深度隐藏,最终滥用知名云笔记平台 Notion 的 API 建立 C2(命令与控制)隧道,极大地增加了流量检测与防御溯源的难度。
完整攻击链路#
初始访问与隐蔽触发#
攻击者在 GitHub 上发布看似正常的 Visual Studio 漏洞利用项目模板。相比于容易被查杀的 .csproj 文件,本次攻击将目光投向了 .vs 隐藏文件夹下的 .suo 文件。因为 .suo 主要存储用户的本地布局等配置,通常会被安全人员在检查代码时自然忽略。
恶意数据藏匿于 .suo 文件的 VsToolboxService 数据流中。当受害者使用 Visual Studio 加载该项目时,VS 的底层机制会调用 BinaryFormatter 解析该流。这一过程直接触发了恶意的反序列化操作,导致 Base64 加密的 Payload 被无声执行。此外,由于 Visual Studio 在关闭时会自动覆盖更新 .suo 文件,这种攻击往往具有“阅后即焚”的单次执行特征,进一步增加了隐蔽性。

解开序列化数据,发现其中包含Base64加密的payload。

持久化与防御规避#
初始Payload解码后为.NET程序,主要功能为在系统的 %LocalAppData% 目录下创建文件夹,并释放两个关键文件:带有微软官方数字签名的正常程序 TraceIndexer.exe(白文件),以及经过篡改的恶意 TTDReplay.dll(黑文件)。
File: TraceIndexer.exe SHA1: ae3c0a7edb6fb07900f4cb59f6da10fbdc1f0251
File: TTDReplay.dll SHA1: f9247ea23e34160f1f9d4229d8b1448d40e2c255
随后,它将启动命令写入 Registry.CurrentUser 注册表以实现静默自启动。

恶意进程通过传递参数 ttd.tmp 来启动合法的 TraceIndexer.exe。

该官方程序在运行中会使用白加黑侧载同目录下的恶意 TTDReplay.dll。为了欺骗主程序,恶意 DLL 甚至精细伪造了原版动态库的导出函数(如 CreateReplayEngineWithHandshake)以配合白程序的调用 。

命令与控制(C2 via Notion API)#
滥用云服务建立隧道: 攻击者将 C2 服务器直接托管在了 Notion 平台上。通过向合法的 api.notion.com 发起 HTTP PATCH 请求,攻击者完美避开了传统基于恶意域名/IP 黑名单的边界拦截设备。
信息窃取与代码块伪装,恶意程序首先收集受害者本机的系统进程列表(如 smss.exe、csrss.exe、lsass.exe 等)完成环境探测。接着,利用硬编码的 Bearer Token,将这些窃取到的数据以 JSON 格式伪装成 Notion 笔记中的“代码块”(Code Block),同步回传至攻击者控制的指定 Notion 工作区(Block UUID:1915edab-ab70-819e-9dc6-dd552369598e)。

通信数据包分析:
认证:使用硬编码的 Bearer Token (ntn_2546...) 进行 Notion 鉴权 。

操作接口:发送 HTTP PATCH 请求更新特定的 Block UUID (1915edab-ab70-819e-9dc6-dd552369598e) 。

数据回传:回传数据被伪装成一段 Notion 的代码块 (Code Block) 。解码其 JSON Payload 中的 Base64 发现,内容为受害者本机的系统进程列表(如 smss.exe, csrss.exe, lsass.exe 等),这通常是攻击者进行环境探测的第一步 。
#请求体
{ "children": [ { "code": { "language": "plain text", "text": [ { "annotations": { "code": false }, "text": { "content": "2025-02-05 13:43:10 | W1N5c3RlbSBQcm9jZXNzXQkwCTAKU3lzdGVtCTQJMApSZWdpc3RyeQk4OAk0CnNtc3MuZXhlCTM0NAk0CmNzcnNzLmV4ZQk0MjQJNDEyCndpbmluaXQuZXhlCTQ5Ngk0MTIKY3Nyc3MuZXhlCTUxMgk0ODgKc2VydmljZXMuZXhlCTU4OAk0OTYKd2lubG9nb24uZXhlCTU5Ngk0ODgKbHNhc3MuZXhlCTYzNgk0OTYKc3ZjaG9zdC5leGUJNzQwCTU4OApmb250ZHJ2aG9zdC5leGUJNzcyCTQ5Ngpmb250ZHJ2aG9zdC5leGUJNzgwCTU5NgpzdmNob3N0LmV4ZQk4NzIJNTg4CmR3bS5leGUJOTUyCTU5NgpzdmNob3N0LmV4ZQkxMDEyCTU4OApzdmNob3N0LmV4ZQkzNjQJNTg4CnN2Y2hvc3QuZXhlCTY2OAk1ODgKc3ZjaG9zdC5leGUJMTA4NAk1ODgKdm1hY3RobHAuZXhlCTExMTIJNTg4CkhpcHNEYWVtb24uZXhlCTExMjAJNTg4CnN2Y2hvc3QuZXhlCTEyMDQJNTg4CnN2Y2hvc3QuZXhlCTEyODAJNTg4CnN2Y2hvc3QuZXhlCTE0ODAJNTg4CnN2Y2hvc3QuZXhlCTE2MDgJNTg4Ck1lbW9yeSBDb21wcmVzc2lvbgkxNzUyCTQKc3ZjaG9zdC5leGUJMTgxMgk1ODgKc3ZjaG9zdC5leGUJMTg0NAk1ODgKc3ZjaG9zdC5leGUJMTg1Ngk1ODgKc3Bvb2xzdi5leGUJMTkwMAk1ODgKc3ZjaG9zdC5leGUJMTk0NAk1ODgKdXN5c2RpYWcuZXhlCTMyOAkxMTIwCndzY3RybHN2Yy5leGUJMjA4OAk1ODgKc3ZjaG9zdC5leGUJMjEyMAk1ODgKc3ZjaG9zdC5leGUJMjI0OAk1ODgKc3ZjaG9zdC5leGUJMjMwMAk1ODgKUVFQcm90ZWN0LmV4ZQkyMzA4CTU4OApWR0F1dGhTZXJ2aWNlLmV4ZQkyMzQ0CTU4OAp2bXRvb2xzZC5leGUJMjM2NAk1ODgKV21pUHJ2U0UuZXhlCTMwMjgJNzQwCm1zZHRjLmV4ZQkyMzM2CTU4OApzaWhvc3QuZXhlCTM1MDAJMTAxMgpzdmNob3N0LmV4ZQkzNTIwCTU4OAp0YXNraG9zdHcuZXhlCTM2MTYJMTAxMgpjdGZtb24uZXhlCTM3ODQJMzY0CkNoc0lNRS5leGUJNDA2OAk3NDAKc3ZjaG9zdC5leGUJNDIzMgk1ODgKU2VhcmNoSW5kZXhlci5leGUJNDQ3Mgk1ODgKUnVudGltZUJyb2tlci5leGUJNDcyOAk3NDAKUnVudGltZUJyb2tlci5leGUJNDkzMgk3NDAKQXBwbGljYXRpb25GcmFtZUhvc3QuZXhlCTUxMTIJNzQwClJ1bnRpbWVCcm9rZXIuZXhlCTU0NjQJNzQwClJ1bnRpbWVCcm9rZXIuZXhlCTQ1MTIJNzQwClJ1bnRpbWVCcm9rZXIuZXhlCTM1OTIJNzQwClNlY3VyaXR5SGVhbHRoU3lzdHJheS5leGUJNjE4MAkzOTk2ClNlY3VyaXR5SGVhbHRoU2VydmljZS5leGUJNjIwOAk1ODgKdm10b29sc2QuZXhlCTYzMzYJMzk5NgpIaXBzVHJheS5leGUJNjQ4MAkxMTIwCnN2Y2hvc3QuZXhlCTQxMzIJNTg4ClNncm1Ccm9rZXIuZXhlCTMxOTIJNTg4ClN2Y2hvc3QuZXhlCTQ3MzYJNTg4ClFRTGl2ZVNlcnZpY2UuZXhlCTY4NDQJMjMwMApzdmNob3N0LmV4ZQk1MjI0CTU4OApzdmNob3N0LmV4ZQkxMzA0CTU4OApzbWFydHNjcmVlbi5leGUJMzM2MAk3NDA=" } } ] }, "object": "block", "type": "code" } ]}防御与排查建议#
面对这种将攻击链深度嵌入开发者日常工具的威胁,建议采取以下防范措施:
- 阻断触发链(物理隔离): 在打开任何来源不明(即使 GitHub Star 数量很多)的第三方 Visual Studio 项目前,务必先删除整个
.vs隐藏文件夹及所有的.suo文件。 - 严格的沙盒环境验证: 永远不要在日常办公机或包含敏感配置的物理机上直接编译、运行不可信的开源项目。使用完全隔离的虚拟机进行测试是安全人员的底线。
- 强化端点行为分析 (EDR): 关注安全软件中出现的异常进程派生关系(例如,由 IDE 进程释放未知的 EXE 并执行),以及
%LocalAppData%等非标准运行目录下出现的未知自启动注册行为。 - 白名单云流量审计: 针对“Living off the Cloud”的高级攻击,企业应当配合 SSL/TLS 解密设备,监测内网向 Notion 等办公云平台发出的异常 API 请求(例如:高频的 PATCH/POST 行为,或者请求头中携带非企业授权的私有 Token)。
参考链接: