Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
convoC2 — 基于 Microsoft Teams 的 C2 基础设施。 | Kitploit
工具/GitHubGitHub/cxnturi0n/convoc2
持久化机制IDS/IPS规避数据泄露后渗透利用渗透测试命令与控制红队远程访问工具Payload 开发
GitHubcxnturi0n/convoc2

convoC2

基于 Microsoft Teams 的 C2 基础设施。

7591191年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

convoC2

目录

  • 简介
  • 演示
  • 用法
  • 要求
  • 灵感来源
  • 贡献

简介

这是一种命令与控制(C2)基础设施,允许红队成员通过 Microsoft Teams 在受感染主机上执行系统命令。
它将数据隐藏注入 Microsoft Teams 消息中的隐藏 span 标签,并通过 Adaptive Cards 图片 URL 外带命令输出,从而触发对 C2 服务器的带外请求。
受害主机与攻击者之间没有直接通信,再加上受害主机仅向 Microsoft 服务器发送 HTTP 请求,且杀毒软件不会检查 MS Teams 日志文件,这使得检测更加困难。

convoC2-Architecture

演示

以下视频演示了如何使用该服务器控制两台受感染主机:一台在 Windows 11 上运行新版 Teams,另一台在 Windows 10 上运行旧版 Teams。在第一种情况下,攻击者与受害主机不在同一组织内。

https://github.com/user-attachments/assets/d9fcccc1-de73-49cd-aaa7-df53303dbc6a

注意: 在第一种情况下,受害主机已经接受了与外部攻击者的聊天,但在攻击者首次与受害主机发起聊天的真实场景中,受害主机需要确认与攻击者的聊天(尽管这条警报消息可以轻易绕过,参见此处)。这不是问题:因为消息无论如何都会被缓存到日志文件中,即使受害主机尚未查看或接受聊天,命令也会被接收并执行。

用法

服务器

wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_server_amd64.tar.gz
tar -xzvf convoC2_server_amd64.tar.gz --one-top-level
root@convoC2-server-VPS:~# ./convoC2_server_amd64 -h
Usage of convoC2 server:
  -t, --msgTimeout  How much to wait for command output (default 30 s)
  -b, --bindIp      Bind IP address (default 0.0.0.0)

Agent

wget https://github.com/cxnturi0n/convoC2/releases/download/v0.1.0-alpha/convoC2_agent.tar.gz
tar -xzvf convoC2_agent.tar.gz --one-top-level
C:\Windows>convoC2_agent.exe -h
Usage of convoC2 agent:
  -v, --verbose   Verbose logging (default false)
  -s, --server    C2 server URL (i.e. http://10.11.12.13/)
  -t, --timeout   Teams log file polling timeout [s] (default 1)
  -w, --webhook   Teams Webhook POST URL
  -r, --regex     Regex to match command (default "<span[^>]*aria-label=\"([^\"]*)\"[^>]*></span>")

要求

要使其正常工作,你需要设置几项内容:

  • 创建带有工作流入站 Webhook 的 Teams 频道:这是接收包含输出的自适应卡片的位置。使用服务器时,务必保持打开此频道的浏览器窗口,否则服务器将无法接收来自代理的消息。

WebhookChannel

  • 获取 Id 和认证令牌:Teams 通过向 https://teams.microsoft.com/api/chatsvc/emea/v1/threads 发送 POST 请求来初始化聊天,请求体中包含受害者和攻击者的唯一 id。在响应中,threadId 将返回在 Location 头 url 的路径中。 同一请求的 Bearer 令牌用于认证到 https://teams.microsoft.com/api/chatsvc/emea/v1/users/ME/conversations/<threadId>/messages,这是发送消息的端点。因此我们只需获取这三项内容,服务器将处理其余部分。
  • 确保你有一个面向公网的主机,允许在端口 80 上接收入站 HTTP 流量。
  • Teams 需要在受害者主机上运行,在后台运行也可以。

启动服务器后,你可以使用先前获取的数据进行认证,接收新的代理并控制它们。查看演示以了解使用示例。

创建带有工作流入站 Webhook 的 Teams 频道

首先,你需要创建一个 Teams 频道。

CreateTeams

右键点击三个点,然后点击“工作流”。

CreateTeams_1

在搜索栏中输入“Webhook”,然后点击“当收到 webhook 请求时发布到频道”。

CreateTeams_5

继续使用默认设置,最后复制 url。

Create_Teams_6

获取 Id 和认证令牌

首先寻找受害者。

GetOrgIds

选择受害者账户后,在 Web 代理拦截请求的情况下,你可以发送一条测试消息。

GetOrgIds_1

保存 api/chatsvc/emea/v1/threads 请求中存在的两个 id,然后 DROP 该请求。认证令牌将是同一请求的 Bearer 令牌。

GetOrgIds_2

灵感来源

此基础设施的灵感来自 Bobbyrsec 所做的 Teams GIFShell 研究。 最初我的目的是复现该问题,但该解决方案似乎已被部分修复。该研究涉及将命令注入到 Base64 编码的 GIF 中,但这些 GIF 已无法正确显示:聊天中会出现一个损坏图像的图标,导致受害者可能开始产生怀疑。 在测试了各种方法后,我注意到可以将命令直接嵌入消息中,而不是嵌入 GIF 或图像中:发送多张图像比发送简单消息更容易引起怀疑,对吧? 最初我考虑将命令嵌入到 <script>、<meta> 或自定义标签中,但都被过滤掉了。最终,将命令嵌入到带有 display:none 的 <span> 标签的 aria-label 属性中成功了:受害者只会看到消息,但隐藏的命令实际上会污染 Teams 日志文件。

TeamsLogPoisoning

服务器 TUI 使用出色的 Go BubbleTea 框架开发。

贡献

如果你发现 bug 或想改进项目,欢迎提交 pull request,我很乐意审查并最终合并你的更改。 短期待办事项:

  • 消息 AES 加密
  • 用于检测 agent 是否存活的 keepalive
  • Agent 的 Powershell 版本
下载工具