
Youtube come canale nascosto - Controlla sistemi da remoto ed esegui comandi caricando video su Youtube
Un programma per controllare sistemi da remoto caricando video su Youtube, utilizzando Python per creare i video e il listener, emulando alcuni malware di cui stavo leggendo. Permette di creare video con frame composti da testo semplice, codici QR in chiaro o codici QR con crittografia AES.
NOTA: Questo PoC è stato aggiunto al framework covert-control, che permette di fare lo stesso anche tramite Onedrive, Google Drive e Telegram.
Se il tuo target è un sistema Windows, potresti preferire la versione C#: SharpCovertTube (l'ho aggiornata più recentemente).
I video possono essere creati usando generate_video.py: inserisci i comandi e genera il video scrivendo "exit". Il video generato è chiamato di default output.avi (può essere aggiornato in config.py):
python3 generate_video.py

python3 main.py
Il listener controllerà il canale Youtube ogni 300 secondi di default (può essere aggiornato in config.py). Prima viene caricato il video:

Dopo aver trovato che c'è un nuovo video nel canale, viene scaricato e i comandi vengono eseguiti:

Possiamo vedere l'output dei comandi:

Aggiorna il file config.py:
channel_id (Obbligatorio!!!): Ottieni il tuo ID canale Youtube da qui.
api_key (Obbligatorio!!!): Per ottenere la chiave API, crea un'applicazione e genera la chiave da qui.
image_type (Opzionale. Default: "qr_aes"): Diversi tipi di immagini per il video.
upload_seconds_delay (Opzionale. Default: 300): Ritardo in secondi prima di controllare se un nuovo video è stato caricato.
debug (Opzionale. Default: True): Stampa messaggi o meno.
aes_key (Opzionale. Default: "covert-tube_2021"): Chiave per la crittografia AES, utilizzata nell'opzione "qr_aes".
generated_video_path (Opzionale. Default: "output.avi"): Percorso del video generato con generate_video.py.
downloaded_video_path (Opzionale. Default: "/tmp/test.mp4"): Percorso dove verrà scaricato il nuovo video.
temp_folder (Opzionale. Default: "/tmp/"): Percorso dove vengono salvate le immagini di ogni frame del video, con formato image_X*.png*.
Per tutto il progetto:
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
Ultimamente ho letto di malware che utilizzano Youtube per controllare da remoto le proprie impostazioni. Ad esempio, Casbaneiro abusa di Youtube per memorizzare i domini dei suoi server C&C. Ogni video nei canali utilizzati dall'attore della minaccia contiene una descrizione, e alla fine di queste c'è un collegamento a un falso URL di Facebook o Instagram contenente il dominio del server C&C (blog Welivesecurity). Un secondo esempio è Numando, che ne abusa crittografando i dati nel titolo dei video di Youtube (altro blog Welivesecurity).
Sapendo questo, ho deciso di creare un PoC per testare il controllo di sistemi remoti caricando video su Youtube, ma invece di usare il titolo o la descrizione, utilizzando il contenuto del video. Permette di eseguire qualsiasi comando, ma potrebbe essere usato per cambiare alcune impostazioni da remoto. Quindi questo è solo un PoC, usalo per scopi educativi!