
YouTube как C2-канал – Управление Windows-системами через загрузку QR-видео на YouTube
SharpCovertTube — это программа, созданная для удаленного управления системами Windows путем загрузки видео на Youtube.
Программа отслеживает канал Youtube до тех пор, пока не будет загружено видео, декодирует QR-код из миниатюры загруженного видео и выполняет команду. QR-коды в видео могут использовать значения в открытом виде или зашифрованные с помощью AES.
Она имеет две версии: двоичную и служебную, а также включает скрипт Python для создания вредоносных видео. Её цель — служить методом сохранения постоянства, используя только веб-запросы к Google API.

Запустите слушателя в вашей системе Windows:

Он будет проверять канал Youtube через определенный промежуток времени (по умолчанию 10 минут), пока не будет загружено новое видео. В данном случае мы загружаем "whoami.avi" из папки example-videos:
После обнаружения нового видео на канале, он декодирует QR-код из миниатюры видео, выполняет команду, а ответ кодируется в base64 и извлекается с помощью DNS:

Это также работает для QR-кодов с полезными нагрузками, зашифрованными AES, и для более длинных ответов команд. В этом примере загружается файл "dirtemp_aes.avi" из example-videos, а содержимое c:\temp извлекается с помощью нескольких DNS-запросов:

Ведение журнала в файл необязательно, но убедитесь, что папка существует; значение по умолчанию — "c:\temp\.sharpcoverttube.log", поэтому папка "c:\temp" должна существовать.
Извлечение DNS также необязательно и может быть легко протестировано с помощью collaborator от Burp:

В качестве альтернативы я создал скрипт для простого создания QR-видео, загрузки на Youtube, а также мониторинга и разбора DNS-запросов в кодировке base64. Настройка использования этого скрипта в качестве 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 символов и совпадать с указанным в файле Program.cs в SharpCovertTube.
AESIV (-i) — IV для шифрования AES, необходим только при использовании типа "qr_aes". Должен быть строкой из 16 символов и совпадать с указанным в файле Program.cs в SharpCovertTube.
Создать видео с QR-значением "whoami" в открытом виде по пути c:\temp\whoami.avi:
python generate_video.py -t qr -f c:\temp\whoami.avi -c whoami
Создать видео с зашифрованным AES QR-значением "dir c:\windows\temp" с ключом и 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-битным!!! Это связано с кодом, используемым для декодирования QR, который был заимствован из проекта Stefan Gansevles QR-Capture, который заимствовал его часть из проекта Uzi Granot QRCode, который, в свою очередь, заимствовал часть из проекта Zakhar Semenov Camera_Net (затем я потерял след). Так что спасибо всем им!
Этот проект является портом covert-tube, проекта, который я разработал в 2021 году, используя только Python, и который был вдохновлён блогами Welivesecurity о вредоносных программах Casbaneiro и Numando.
Этот проект является PoC, чтобы показать, что почти всё в Интернете может быть использовано в качестве C2-канала; надеюсь, он вдохновит кого-нибудь. Проект предназначен для образовательных целей; если вы неправильно используете сервис Youtube, у вас могут возникнуть проблемы, вплоть до удаления вашего канала.