
Youtube come canale C2 - Controlla sistemi Windows caricando video QR su Youtube
SharpCovertTube è un programma creato per controllare sistemi Windows da remoto caricando video su YouTube.
Il programma monitora un canale YouTube finché non viene caricato un video, decodifica il codice QR dalla miniatura del video caricato ed esegue un comando. I codici QR nei video possono utilizzare valori in chiaro o crittografati con AES.
Ha due versioni, binario e binario di servizio, e include uno script Python per generare i video dannosi. Il suo scopo è servire come metodo di persistenza utilizzando solo richieste web all'API di Google.

Esegui il listener nel tuo sistema Windows:

Controlla il canale YouTube ogni intervallo di tempo specifico (10 minuti di default) finché non viene caricato un nuovo video. In questo caso, carichiamo "whoami.avi" dalla cartella example-videos:
Dopo aver trovato un nuovo video nel canale, decodifica il codice QR dalla miniatura del video, esegue il comando e la risposta viene codificata in base64 ed esfiltrata tramite DNS:

Funziona anche per codici QR con payload crittografati con AES e risposte di comandi più lunghi. In questo esempio, viene caricato il file "dirtemp_aes.avi" da example-videos e il contenuto di c:\temp viene esfiltrato utilizzando diverse query DNS:

La registrazione su file è opzionale, ma verificare che la cartella esista; il valore predefinito è "c:\temp\.sharpcoverttube.log", quindi "c:\temp" dovrebbe esistere.
L'esfiltrazione DNS è anch'essa opzionale e può essere facilmente testata utilizzando il collaborator di Burp:

In alternativa, ho creato uno script per creare facilmente video QR, caricarli su YouTube e monitorare e analizzare le query DNS codificate in base64. La configurazione per utilizzare questo script come server C2 è spiegata nella cartella c2-server:

Ci sono alcuni valori che puoi modificare, li trovi nel file Configuration.cs per il binario normale e il binario di servizio. Solo i primi due valori devono essere aggiornati:

Puoi generare i video usando lo script del server nella cartella c2-server o semplicemente eseguendo lo script generate_video.py. Per quest'ultimo, installa prima le dipendenze:
pip install Pillow opencv-python pyqrcode pypng pycryptodome rebus
Se stai usando Linux, potresti aver bisogno anche di:
apt-get install libgl1
Quindi esegui lo script generate_video.py:
python generate_video.py -t TYPE -f FILE -c COMMAND [-k AESKEY] [-i AESIV]
TYPE (-t) deve essere "qr" per payload in chiaro o "qr_aes" se si utilizza la crittografia AES.
FILE (-f) è il percorso in cui viene generato il video.
COMMAND (-c) è il comando da eseguire nel sistema.
AESKEY (-k) è la chiave per la crittografia AES, necessaria solo se si utilizza il tipo "qr_aes". Deve essere una stringa di 16 caratteri e uguale a quella nel file Program.cs di SharpCovertTube.
AESIV (-i) è l'IV per la crittografia AES, necessario solo se si utilizza il tipo "qr_aes". Deve essere una stringa di 16 caratteri e uguale a quella nel file Program.cs di SharpCovertTube.
Genera un video con un valore QR di "whoami" in chiaro nel percorso c:\temp\whoami.avi:
python generate_video.py -t qr -f c:\temp\whoami.avi -c whoami
Genera un video con un valore QR crittografato con AES di "dir c:\windows\temp" con la chiave e IV "0000000000000000" nel percorso 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

Puoi trovare il codice per eseguirlo come servizio nella cartella SharpCovertTube_Service. Ha le stesse funzionalità tranne l'auto-eliminazione, che in questo caso non avrebbe senso.
È possibile installarlo con InstallUtil, è preparato per essere eseguito come utente SYSTEM e devi installarlo come amministratore:
InstallUtil.exe SharpCovertTube_Service.exe
Puoi quindi avviarlo con:
net start "SharpCovertTube Service"

Nel caso tu abbia privilegi amministrativi, questo potrebbe essere più furtivo del binario normale, ma "Description" e "DisplayName" dovrebbero essere aggiornati (come puoi vedere nell'immagine sopra). Se non hai tali privilegi, non puoi installare servizi, quindi puoi utilizzare solo il binario normale.
Il file deve essere a 64 bit!!! Ciò è dovuto al codice utilizzato per la decodifica QR, che è preso in prestito dal progetto QR-Capture di Stefan Gansevles QR-Capture, il quale ha preso in prestito parte di esso dal progetto QRCode di Uzi Granot QRCode, che a sua volta ha preso in prestito parte di esso dal progetto Camera_Net di Zakhar Semenov Camera_Net (poi ho perso le tracce). Quindi grazie a tutti loro!
Questo progetto è una porting di covert-tube, un progetto che ho sviluppato nel 2021 usando solo Python, ispirato dai blog di Welivesecurity sui malware Casbaneiro e Numando.
Questo progetto è un PoC per mostrare come quasi tutto su Internet possa essere utilizzato come canale C2, spero sia di ispirazione per qualcuno. Il progetto è destinato a scopi educativi; se usi male il servizio YouTube, potresti avere problemi come la cancellazione del tuo canale.