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

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
OneDrive-UDC2 — OneDrive 作为 Cobalt Strike 的隐蔽 C2 传输通道 | Kitploit
工具/GitHubGitHub/nmht3t/onedrive-udc2
防御工具渗透测试框架后渗透利用云安全命令与控制红队Payload 开发
GitHubnmht3t/onedrive-udc2

OneDrive-UDC2

OneDrive 作为 Cobalt Strike 的隐蔽 C2 传输通道

查看仓库
348435天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

OneDrive UDC2

一个使用 OneDrive 作为传输层的 Cobalt Strike 用户自定义 C2 通道。

架构

你需要准备

  • 一个 Microsoft Entra ID 租户,其中有一个拥有 OneDrive for Business 的用户。
  • 一个具有 Files.ReadWrite.All 应用程序权限的应用注册。

设置

1. 注册应用程序

在 Azure 门户中,转到 应用注册 并创建一个新应用:

  • 账户类型: 单租户。
  • 重定向 URI: 留空。

记下概览页面中的 租户 ID 和 客户端 ID。

2. 添加 Graph 权限

在 API 权限 下:

  1. 添加 Microsoft Graph,然后添加 应用程序权限,然后添加 Files.ReadWrite.All。
  2. 点击 授予管理员同意。

3. 创建客户端密钥

在 证书和密码 下,创建一个新密钥并复制其值。

4. 创建 OneDrive 文件夹

在该用户的 OneDrive 中,创建两个文件夹,一个用于收件箱,一个用于 发件箱(例如 c2inbox 和 c2outbox)。

5. 获取驱动器 ID 和文件夹 ID

打开 Graph Explorer, 以该用户身份登录,然后运行:

root@kitploit:~
GET https://graph.microsoft.com/v1.0/me/drive/root/children

获取每个文件夹的 id,以及 JSON 响应中任意条目的 driveId。

构建

root@kitploit:~
cp server/config.json.example server/config.json

填写 server/config.json:

然后构建客户端:

root@kitploit:~
make

运行

启动中继(使用 screen 或 tmux,这样当你的终端断开连接时它仍能保持运行):

root@kitploit:~
python3 server/relay.py --config server/config.json --ts-addr <teamserver-ip> --ts-port <udc2-port>

在 Cobalt Strike 中,在同一端口上创建一个 UDC2 监听器,并加载 client/bof.o。

中继选项

状态、假脱机与锁文件

中继会在你的配置旁边创建一些文件,以便在重启之间跟踪各种事项:

  • 状态文件(config.json.state.json)- 跟踪哪些收件箱文件已被处理、待处理的上传以及 beacon 会话信息。使用 --state 设置自定义路径。
  • 假脱机目录(config.json.state.json.spool/)- 保存尚未上传到 OneDrive 的响应数据。如果中继在上传过程中崩溃,假脱机会保留数据,以便在下次启动时重试。
  • 锁文件(config.json.state.json.lock)- 防止两个中继实例针对同一状态运行。如果你看到 Another relay holds the lock 且没有其他中继在运行,则该锁是崩溃后遗留的陈旧锁。

重置中继状态

如果中继的本地状态损坏,或者陈旧的锁阻止了启动,请使用 --clean 清除状态文件和假脱机目录,以便中继重新开始:

root@kitploit:~
python3 server/relay.py --config server/config.json --clean

锁文件会被保留。当另一个实例正在运行时,中继不会执行清理。在下次正常启动时,它会重新初始化并跳过任何超过 30 分钟的收件箱文件。

你也可以通过自行删除状态文件和假脱机目录来手动重置。如果锁文件已陈旧(没有中继在运行),也请将其删除。

演示

POC

参考资料

  • Cobalt Strike UDC2 文档
  • Cobalt Strike ICMP UDC2
  • WKL Slack UDC2
下载工具
字段值
tenant_idMicrosoft Entra ID 租户 ID
client_id应用程序客户端 ID
client_secret客户端密钥值
drive_idOneDrive 驱动器 ID
inbox_folder_id收件箱文件夹 ID
outbox_folder_id发件箱文件夹 ID
标志描述
--configconfig.json 的路径(必填)
--ts-addrTeamserver IP
--ts-portUDC2 监听器端口
--poll轮询间隔(秒)(默认 2.0)
--state状态文件的路径(默认:<config>.state.json)
--debug启用调试日志记录
--clean删除状态文件和假脱机目录,然后退出