
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.