Notion-C2:当红协作工具变身隐秘通信通道

admin 2026-03-13 01:48:05 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档介绍Notion-C2工具,其为MythicC2框架配置文件,利用NotionAPI将C2流量伪装成正常协作数据。核心原理是通过数据库页面增删改查交换加密指令,实现隐蔽通信以绕过防火墙。文章详述了配置步骤、Agent实现逻辑及优缺点,指出其适合低频高隐匿渗透场景。结论强调防御方需加强SaaS流量审计,传统边界防御已不足应对此类基于信任站点的生存技术。 综合评分: 92 文章分类: 红队,渗透测试,安全工具,实战经验


cover_image

Notion-C2:当红协作工具变身隐秘通信通道

原创

工具党 工具党

幻泉之洲

2026年3月12日 19:10 北京

一个基于Notion构建的MythicC2隐匿配置文件,它让恶意流量伪装成普通的团队协作数据流转,实现了在受信任站点上生存的高级渗透技巧。

01 这个工具解决什么问题?

想象一下,红队行动中传统的C2服务器被防火墙拦下的情景。换个思路,如果指挥控制的流量,完全走的是Notion、Slack这些日常办公软件的API呢?Notion-C2就是这样一种工具。它不是独立的恶意软件,而是一个为MythicC2(一个开源的C2框架)写的配置文件。它的核心思路是把C2服务器的功能,嵌进大家每天都在用的Notion里。

红队的Agent(受控主机上的程序)与C2服务器的通信,变成了对某个共享Notion数据库的“创建页面”和“查询页面”操作。从网络流量上看,这和产品经理在写需求文档、程序员在更新技术方案,没有任何区别。这是一种更高级的“基于信任站点的生存”(Living off Trusted Sites, LoTS)技术。

警告:该工具仅用于获得明确授权的安全测试、渗透测试及学术研究。未经授权使用涉嫌违法。

02 它的工作原理是什么?

整个过程就像在Notion里建立一个秘密留言板。

Agent要上传数据(比如执行命令的结果)时,它会在指定的Notion数据库里创建一个新页面。这个页面的标题是一个随机UUID,方向(direction)属性设为“in”,同时把自己Agent的唯一ID填进去。最关键的数据——经过加密和Base64编码的指令或结果——直接放在页面正文的代码块里。这样做的好处是,绕开了Notion单个属性2000个字符的限制,能传输更大块的数据。

C2服务器端(运行在Mythic容器里)会定时去查询这个数据库,找出所有未被处理(processed=false)、方向为“in”的新页面。它从代码块里读取数据,解密后交给Mythic主服务器处理。Mythic生成响应指令后,C2服务器端会再创建一个方向为“out”的新页面,把响应数据同样用Base64编码后放进代码块。

Agent则不断轮询,查找属于自己、方向为“out”且未处理的新页面,读取指令,执行,再将结果用“in”页面发回,形成一个闭环。整个过程,通信双方都只是在一个合法的SaaS平台上进行常规的增删改查。

数据流向示意图:

Agent                      Notion Database            C2 Profile Container   │                              │                            │   ├─── create page (dir=in) ────►│                            │   │    base64(encrypted_data)    │◄── query unprocessed ──────┤   │                              │                            ├──► Mythic Server   │                              │◄── create page (dir=out) ──┤   │◄── query page (dir=out) ─────┤    base64(response)        │

03 如何配置与安装?

Notion端设置

首先,你得准备一个Notion工作区和数据库。

  1. 创建集成

    :访问 notion.so/my-integrations,创建一个“内部集成”。创建成功后,记下那个以ntn_开头的集成令牌(Integration Token)。这是你的API钥匙。

  2. 创建数据库

    :新建一个“完整页面”类型的数据库。它需要包含以下列(属性):

    | 属性名 | 类型 | 说明 | | — | — | — | | uuid | 标题 (Title) | 消息的唯一标识,由服务器自动填充 | | direction | 选择 (Select) | 选项:in(入站), out(出站) | | agent_id | 文本 (Text) | 发送该消息的Agent的UUID | | processed | 复选框 (Checkbox) | 消息被消费后勾选 | | size | 数字 (Number) | 解码后的载荷大小(字节) |

    数据库的“创建时间”(created_time)属性Notion会自动添加,不用管。

  3. 分享数据库给集成

    :打开你刚建的数据库,点击“分享”(Share),通过名称或邮箱邀请你创建的集成加入。务必给它“可以编辑内容”的权限。

  4. 获取数据库ID

    :在浏览器地址栏找到你的数据库URL,其中包含一个32位的字符串,这就是数据库ID。通常是https://www.notion.so/your-workspace/XXXXXXXX...中的“XXXXXX…”部分。

在Mythic中安装

如果你的Mythic已经部署好了,安装Notion-C2就一行命令。

cd /path/to/你的Mythic安装目录 ./mythic-cli install github https://github.com/0xbbuddha/notion

安装完成后,打开Mythic的Web界面,在“C2 Profiles”(C2配置文件)部分你应该能看到新增的“notion”选项。

参数配置

在Mythic UI里点击notion配置,填入以下两个核心参数,其他可以先用默认值:

  • integration_token

    :你前面记下的那个ntn_...令牌。

  • database_id

    :你获取的那个32位数据库ID。

还有两个参数控制Agent的活跃度:

  • callback_interval

    :Agent轮询新指令的间隔,默认10秒。

  • callback_jitter

    :轮询间隔的随机抖动百分比(0-50),默认10%。这会让Agent的请求时间更不规则,更难被基于固定周期的检测规则发现。

这些参数会在容器启动时自动写入配置文件,你不需要手动去改config.json

04 Agent端需要做什么?

要让你的Agent能用上Notion-C2,它需要具备调用Notion API的能力,实现两个核心操作:

  1. 发送数据

    :调用Notion API的 POST /v1/pages 来创建一个页面。需要设置好direction=inagent_id=(自己的ID),并把加密后的数据做Base64编码,放到页面正文的代码块里。

  2. 接收指令

    :调用 POST /v1/databases/{database_id}/query 来查询数据库。查询条件是:direction=outagent_id=自己的IDprocessed=false。找到页面后,从代码块中读取数据,解码并交给Mythic的加密层处理。最后,记得调用 PATCH /v1/pages/{page_id} 把该页面的processed属性标记为true

项目里提供了一个参考实现:C2_Profiles/notion/c2_code/notion_client.py,如果你的Agent是用Python写的,可以直接参考或集成这部分代码。

05 优点与局限性

先说优点:

  • 隐匿性极强

    :流量完全混迹于正常的SaaS服务,除非对Notion API的调用内容和模式进行深度行为分析,否则极难发现。

  • 无需公网IP

    :C2服务器端只需要能访问Notion API,不需要自己暴露端口,天然具备抗封堵能力。

  • 利用现有信任

    :目标组织的防火墙和代理服务器通常会放行对notion.so的访问,这是它最大的“护身符”。

局限性也很明显:

  • 速度受制于API

    :Notion的API有速率限制,大约每秒3个请求。这意味着你不能设置太快的轮询间隔,官方建议保持callback_interval至少5秒以上。

  • 依赖外网

    :Agent和服务器都必须能访问互联网和Notion服务,在内网完全隔离或无外网的环境下失效。

  • 数据处理逻辑稍复杂

    :Agent端需要额外实现Notion API的交互逻辑,比传统的HTTP/S通信复杂一些。

  • 大载荷自动分块

    :对于超大数据,工具会将其自动切分成1800字符左右的块,虽然解决了限制,但也增加了传输的回合数。

06 总结

Notion-C2是一个思路巧妙的工具,它把C2通信基础设施的成本和风险,转嫁到了像Notion这样的第三方云服务上。对于需要进行高度隐匿、长周期渗透测试的红队来说,这是个值得研究的选项。它不适合需要实时交互或高速数据传输的场景,但在“低而慢”(Low and Slow)的渗透策略中,可能会非常有效。

说实话,这类工具的不断出现,也给防御方提了个醒:光靠封端口、黑名单IP的传统边界防御已经不够了。对于出站流量,尤其是流向主流SaaS服务的API流量,也需要建立更细致的审计和异常行为分析能力。攻防的战场,早就不只在边界防火墙那一层了。

获取方式:回复“notion”获取


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:幻泉之洲 工具党 工具党《Notion-C2:当红协作工具变身隐秘通信通道》

评论:0   参与:  0