
YouTube als C2-Kanal – Windows-Systeme durch Hochladen von QR-Videos auf YouTube steuern
SharpCovertTube ist ein Programm, das entwickelt wurde, um Windows-Systeme remote zu steuern, indem Videos auf YouTube hochgeladen werden.
Das Programm überwacht einen YouTube-Kanal, bis ein Video hochgeladen wird, dekodiert den QR-Code aus der Thumbnail des hochgeladenen Videos und führt einen Befehl aus. Die QR-Codes in den Videos können Klartext- oder AES-verschlüsselte Werte enthalten.
Es gibt zwei Versionen: eine Binärversion und eine Dienst-Binärversion. Zudem ist ein Python-Skript enthalten, um die schädlichen Videos zu erstellen. Der Zweck ist, eine Persistenzmethode bereitzustellen, die nur Webanfragen an die Google-API verwendet.

Führen Sie den Listener auf Ihrem Windows-System aus:

Es wird den YouTube-Kanal in einem bestimmten Intervall überprüfen (standardmäßig 10 Minuten), bis ein neues Video hochgeladen wird. In diesem Fall laden wir "whoami.avi" aus dem Ordner example-videos hoch:
Nachdem festgestellt wurde, dass ein neues Video auf dem Kanal erschienen ist, wird der QR-Code aus der Video-Thumbnail dekodiert, der Befehl ausgeführt und die Antwort base64-codiert und über DNS exfiltriert:

Dies funktioniert auch für QR-Codes mit AES-verschlüsselten Nutzlasten und längeren Befehlsantworten. In diesem Beispiel wird die Datei "dirtemp_aes.avi" aus example-videos hochgeladen und der Inhalt von c:\temp über mehrere DNS-Abfragen exfiltriert:

Das Protokollieren in eine Datei ist optional, aber stellen Sie sicher, dass der Ordner existiert. Der Standardwert ist "c:\temp\.sharpcoverttube.log", daher sollte "c:\temp" existieren.
Die DNS-Exfiltration ist ebenfalls optional und kann einfach mit Burp's Collaborator getestet werden:

Alternativ habe ich ein Skript erstellt, um einfach QR-Videos zu erstellen, auf YouTube hochzuladen und die base64-codierten DNS-Abfragen zu überwachen und zu parsen. Die Konfiguration zur Verwendung dieses Skripts als C2-Server wird im Ordner c2-server erklärt:

Es gibt einige Werte, die Sie ändern können. Diese finden Sie in der Datei Configuration.cs für die normale Binärdatei und die Dienst-Binärdatei. Nur die ersten beiden Werte müssen aktualisiert werden:

Sie können die Videos mit dem Server-Skript im Ordner c2-server erstellen oder einfach das Skript generate_video.py ausführen. Für letzteres installieren Sie zuerst die Abhängigkeiten:
pip install Pillow opencv-python pyqrcode pypng pycryptodome rebus
Falls Sie Linux verwenden, benötigen Sie möglicherweise auch:
apt-get install libgl1
Führen Sie dann das Skript generate_video.py aus:
python generate_video.py -t TYP -f DATEI -c BEFEHL [-k AESKEY] [-i AESIV]
TYP (-t) muss "qr" für Nutzlasten im Klartext oder "qr_aes" bei Verwendung von AES-Verschlüsselung sein.
DATEI (-f) ist der Pfad, in dem das Video erstellt wird.
BEFEHL (-c) ist der Befehl, der im System ausgeführt werden soll.
AESKEY (-k) ist der Schlüssel für die AES-Verschlüsselung, nur erforderlich bei Verwendung des Typs "qr_aes". Es muss ein String aus 16 Zeichen sein und identisch mit dem in der Program.cs-Datei von SharpCovertTube.
AESIV (-i) ist der IV für die AES-Verschlüsselung, nur erforderlich bei Verwendung des Typs "qr_aes". Es muss ein String aus 16 Zeichen sein und identisch mit dem in der Program.cs-Datei von SharpCovertTube.
Erstellen Sie ein Video mit einem QR-Wert "whoami" im Klartext im Pfad c:\temp\whoami.avi:
python generate_video.py -t qr -f c:\temp\whoami.avi -c whoami
Erstellen Sie ein Video mit einem AES-verschlüsselten QR-Wert "dir c:\windows\temp" mit dem Schlüssel und IV "0000000000000000" im Pfad 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

Den Code, um es als Dienst auszuführen, finden Sie im Ordner SharpCovertTube_Service. Er bietet dieselben Funktionen, mit Ausnahme der Selbstlöschung, die hier keinen Sinn ergeben würde.
Es kann mit InstallUtil installiert werden. Es ist darauf vorbereitet, als SYSTEM-Benutzer ausgeführt zu werden, und Sie müssen es als Administrator installieren:
InstallUtil.exe SharpCovertTube_Service.exe
Sie können es dann starten mit:
net start "SharpCovertTube Service"
