
Youtube como canal encubierto - Controla sistemas de forma remota y ejecuta comandos subiendo videos a Youtube
Un programa para controlar sistemas de forma remota subiendo videos a Youtube usando Python para crear los videos y el listener, emulando algunos malwares que estaba leyendo. Permite crear videos con fotogramas formados por texto simple, códigos QR con texto claro o códigos QR usando cifrado AES.
NOTA: Esta PoC ha sido añadida al framework covert-control, que permite hacer esto también usando Onedrive, Google Drive y Telegram.
Si tu objetivo es un sistema Windows, quizás prefieras la versión en C#: SharpCovertTube (la he actualizado más recientemente).
Los videos se pueden crear usando generate_video.py: ingresa los comandos y genera el video escribiendo "exit". El video generado se llama por defecto output.avi (se puede actualizar en config.py):
python3 generate_video.py

python3 main.py
El listener revisará el canal de Youtube cada 300 segundos por defecto (se puede actualizar en ). Primero se sube el video:

Después de detectar que hay un nuevo video en el canal, se descarga y se ejecutan los comandos:

Podemos ver la salida de los comandos:

Actualiza el archivo config.py:
channel_id (¡Obligatorio!): Obtén el ID de tu canal de Youtube desde aquí.
api_key (¡Obligatorio!): Para obtener la clave de API, crea una aplicación y genera la clave desde aquí.
image_type (Opcional. Valor por defecto: "qr_aes"): Diferentes tipos de imágenes para el video.
upload_seconds_delay (Opcional. Valor por defecto: 300): Segundos de espera hasta comprobar si se ha subido un nuevo video.
debug (Opcional. Valor por defecto: True): Mostrar mensajes o no.
aes_key (Opcional. Valor por defecto: "covert-tube_2021"): Clave para el cifrado AES, utilizada en la opción "qr_aes".
generated_video_path (Opcional. Valor por defecto: "output.avi"): Ruta del video generado con generate_video.py.
downloaded_video_path (Opcional. Valor por defecto: "/tmp/test.mp4"): Ruta donde se descargará el nuevo video.
temp_folder (Opcional. Valor por defecto: "/tmp/"): Ruta donde se almacenan las imágenes de cada fotograma del video, con el formato image_X*.png*.
Para todo el proyecto:
sudo apt install libzbar0
pip3 install Pillow opencv-python youtube_dl pytesseract pyqrcode pypng pyzbar pycrypto
git clone https://github.com/ricardojoserf/covert-tube
pyinstaller --onefile main.py
cp dist/main covert-tube
rm -rf dist build
rm main.spec
Últimamente he estado leyendo sobre malware que utiliza Youtube para controlar sus sistemas de forma remota. Por ejemplo, Casbaneiro abusa de Youtube para almacenar los dominios de sus servidores C&C. Cada video en los canales utilizados por el actor de amenazas contiene una descripción y al final de estas hay un enlace a una URL falsa de Facebook o Instagram que contiene el dominio del servidor C&C (blog de Welivesecurity). Un segundo ejemplo es Numando, que abusa de ello cifrando los datos en el título de los videos de Youtube (otro blog de Welivesecurity).
Sabiendo esto, decidí crear una PoC para probar el control de sistemas remotos subiendo videos a Youtube pero, en lugar de usar el título o la descripción, usando el contenido del video. Permite ejecutar cualquier comando, pero podría usarse para cambiar algunas configuraciones de forma remota. Así que esto es solo una PoC, ¡úsala con fines educativos!