convoC2 通过Microsoft Teams控制被攻陷的主机

convoC2 通过Microsoft Teams控制被攻陷的主机

convoC2简介

convoC2 允许红队成员通过 Microsoft Teams 在受感染的主机上执行系统命令。
它将数据渗透到 Microsoft Teams 消息中隐藏的 span 标签中,并将命令输出泄露到自适应卡图像 URL 中,从而触发对 C2 服务器的越界请求。
受害者和攻击者之间不进行直接通信,再加上受害者只向 Microsoft 服务器发送 http 请求,而防病毒软件不会查看 MS Teams 日志文件,这使得检测更加困难。

convoC2 通过Microsoft Teams控制被攻陷的主机

演示

视频演示地址

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

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

用法

服务器

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>")

要求

为了使其正常工作,您需要设置一些东西:

convoC2 通过Microsoft Teams控制被攻陷的主机
  • 获取 ID 和身份验证令牌:Teams 使用 POST 初始化聊天,并https://teams.microsoft.com/api/chatsvc/emea/v1/threads在正文中包含受害者和攻击者的唯一 ID。在响应中,threadId 将在 Location 标头 URL 的路径中返回。同一请求的 Bearer 令牌用于对 进行身份验证https://teams.microsoft.com/api/chatsvc/emea/v1/users/ME/conversations/<threadId>/messages,这是发送消息的端点。所以我们只需要抓住这三件事,服务器会处理剩下的事情。
  • 确保您有一个面向公众的主机,允许端口 80 上的入站 HTTP 流量。
  • Teams 需要在受害者主机上运行,​​在后台运行也可以。

启动服务器后,您可以接收新代理并控制它们,使用之前获得的数据进行身份验证。查看演示以获取使用示例。

使用工作流传入 Webhook 创建团队频道

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

convoC2 通过Microsoft Teams控制被攻陷的主机

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

convoC2 通过Microsoft Teams控制被攻陷的主机

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

convoC2 通过Microsoft Teams控制被攻陷的主机

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

convoC2 通过Microsoft Teams控制被攻陷的主机

获取 ID 和身份验证令牌

首先寻找受害者。

convoC2 通过Microsoft Teams控制被攻陷的主机

选择受害者账户后,通过 Web 代理拦截请求,您可以发送虚拟消息。

convoC2 通过Microsoft Teams控制被攻陷的主机

保存请求中存在的两个 ID,api/chatsvc/emea/v1/threads然后删除该请求。身份验证令牌将是同一请求的 Bearer 令牌。

convoC2 通过Microsoft Teams控制被攻陷的主机

灵感

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

<script><meta>aria-label<span>display:none

convoC2 通过Microsoft Teams控制被攻陷的主机

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

贡献

如果您发现错误或想要改进项目,请随时打开拉取请求,我将很乐意审核并最终合并您的更改。

短期待办事项包括:

  • 消息AES加密
  • 通过 Keepalive 来检测代理何时死亡
  • 代理的 Powershell 版本

下载地址

项目地址

GitHub:
https://github.com/cxnturi0n/convoC2

转载请注明出处及链接

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注