SharpCovertTube 是一个通过上传视频到 Youtube 来远程控制 Windows 系统的程序。
该程序会监控一个 Youtube 频道,直到有新视频上传,然后解码视频缩略图中的二维码并执行命令。视频中的二维码可以使用明文或 AES 加密的值。
它有两个版本:普通二进制版本和服务二进制版本,并包含一个用于生成恶意视频的 Python 脚本。其目的是作为一种仅使用 Google API 网络请求的持久化方法。

在你的 Windows 系统中运行监听器:

它会每隔一段特定时间(默认 10 分钟)检查 Youtube 频道,直到有新视频上传。在这个例子中,我们从 example-videos 文件夹上传了 "whoami.avi":
在发现频道上有新视频后,它会解码视频缩略图中的二维码,执行命令,并将响应进行 base64 编码后通过 DNS 外传:

这也适用于 AES 加密负载的二维码和更长的命令响应。在这个例子中,文件 "dirtemp_aes.avi" 从 example-videos 上传,并通过多个 DNS 查询外传 c:\temp 的内容:

日志记录到文件是可选的,但请确保文件夹存在,默认值为 "c:\temp\.sharpcoverttube.log",因此 "c:\temp" 应该存在。
DNS 外传也是可选的,可以使用 Burp 的 collaborator 轻松测试:

作为替代方案,我创建了一个脚本,可以轻松创建 QR 视频、上传到 Youtube,并监控和解析 base64 编码的 DNS 查询。将此脚本用作 C2 服务器的配置在 c2-server 文件夹 中有说明:

你可以修改一些值,可以在 普通二进制 和 服务二进制 的 Configuration.cs 文件中找到它们。只有前两个值必须更新:

你可以使用 c2-server 文件夹 中的服务器脚本生成视频,或者直接运行 generate_video.py 脚本。如果是后者,首先安装依赖项:
pip install Pillow opencv-python pyqrcode pypng pycryptodome rebus
如果你使用的是 Linux,可能还需要:
apt-get install libgl1
然后运行 generate_video.py 脚本:
python generate_video.py -t TYPE -f FILE -c COMMAND [-k AESKEY] [-i AESIV]
TYPE(-t)必须是 "qr"(负载使用明文)或 "qr_aes"(使用 AES 加密)。
FILE(-f)是生成视频的路径。
COMMAND(-c)是在系统中执行的命令。
AESKEY(-k)是 AES 加密的密钥,仅在使用类型 "qr_aes" 时需要。它必须是 16 个字符的字符串,且与 SharpCovertTube 的 Program.cs 文件中的密钥一致。
AESIV(-i)是 AES 加密的 IV,仅在使用类型 "qr_aes" 时需要。它必须是 16 个字符的字符串,且与 SharpCovertTube 的 Program.cs 文件中的 IV 一致。
生成一个二维码值为 "whoami"(明文)的视频,路径为 c:\temp\whoami.avi:
python generate_video.py -t qr -f c:\temp\whoami.avi -c whoami
生成一个二维码值为 "dir c:\windows\temp"(AES 加密)的视频,使用密钥和 IV 均为 "0000000000000000",路径为 c:\temp\dirtemp_aes.avi:
python generate_video.py -t qr_aes -f c:\temp\dirtemp_aes.avi -c "dir c:\windows\temp" -k 0000000000000000 -i 0000000000000000

你可以在 SharpCovertTube_Service 文件夹 中找到将其作为服务运行的代码。它具有相同的功能,但除了自我删除(在这种情况下没有意义)。
可以使用 InstallUtil 进行安装,它准备以 SYSTEM 用户身份运行,并且需要以管理员身份安装:
InstallUtil.exe SharpCovertTube_Service.exe
然后你可以使用以下命令启动它:
net start "SharpCovertTube Service"

如果你拥有管理员权限,这可能比普通二进制版本更隐蔽,但 "Description" 和 "DisplayName" 应该更新(如上图所示)。如果你没有管理员权限,则无法安装服务,因此只能使用普通二进制版本。
文件必须是 64 位!!! 这是由于用于二维码解码的代码,该代码借自 Stefan Gansevles 的 QR-Capture 项目,而该项目部分代码又借自 Uzi Granot 的 QRCode 项目,而该项目的部分代码又借自 Zakhar Semenov 的 Camera_Net 项目(再往后我就跟踪不到了)。所以感谢他们所有人!
该项目是从 covert-tube 移植而来,这是我在 2021 年仅使用 Python 开发的一个项目,灵感来源于 Welivesecurity 关于 Casbaneiro 和 Numando 恶意软件的博客文章。
该项目是一个概念验证(PoC),旨在展示几乎任何互联网上的内容都可以用作 C2 通道,希望能对某人有所启发。该项目仅用于教育目的,如果你滥用 Youtube 服务,可能会遇到问题,例如 Youtube 删除你的频道。