
YouTubeに動画をアップロードしてシステムをリモート制御するプログラム。Pythonで動画とリスナーを作成し、私が読んでいたマルウェアを模倣しています。シンプルなテキスト、平文のQRコード、AES暗号化を使用したQRコードで構成されたフレームを持つ動画を作成できます。
注: このPoCはフレームワーク covert-control に追加されました。これにより、Onedrive、Google Drive、Telegramを使用しても同様のことが可能です。
対象がWindowsシステムの場合、C#版 SharpCovertTube をお勧めします(最近更新しました)。
動画は generate_video.py を使用して作成します。コマンドを入力し、"exit" と入力して動画を生成します。生成される動画のデフォルト名は output.avi です(config.py で変更可能)。
python3 generate_video.py

python3 main.py
リスナーはデフォルトで300秒ごとにYoutubeチャンネルをチェックします(config.py で変更可能)。まず動画がアップロードされます。

チャンネルに新しい動画が見つかると、動画がダウンロードされ、コマンドが実行されます。

コマンドの出力が確認できます。

config.py ファイルを更新します。
channel_id (必須!!!): YoutubeチャンネルIDはこちらから取得してください。
api_key (必須!!!): APIキーを取得するには、こちらでアプリケーションを作成しキーを生成してください。
image_type (オプション。デフォルト: "qr_aes"): 動画の画像タイプ。
upload_seconds_delay (オプション。デフォルト: 300): 新しい動画がアップロードされたか確認するまでの秒数。
debug (オプション。デフォルト: True): メッセージを表示するかどうか。
aes_key (オプション。デフォルト: "covert-tube_2021"): AES暗号化のキー。"qr_aes" オプションで使用されます。
generated_video_path (オプション。デフォルト: "output.avi"): generate_video.py で生成された動画のパス。
downloaded_video_path (オプション。デフォルト: "/tmp/test.mp4"): 新しい動画がダウンロードされるパス。
temp_folder (オプション。デフォルト: "/tmp/"): 動画の各フレームの画像が保存されるパス。形式は image_X*.png* です。
プロジェクト全体の場合:
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
最近、YouTubeを悪用して設定をリモートで制御するマルウェアについて読んでいました。例えば、CasbaneiroはC&Cサーバーのドメインを保存するためにYouTubeを悪用しています。脅威アクターが使用するチャンネルの各動画には説明文があり、その末尾にはC&Cサーバーのドメインを含む偽のFacebookまたはInstagramのURLへのリンクがあります(Welivesecurityブログ)。2つ目の例としてNumandoがあり、YouTube動画のタイトルにデータを暗号化して埋め込んでいます(別のWelivesecurityブログ)。
これを踏まえ、YouTubeに動画をアップロードしてリモートシステムを制御するPoCを作成することにしました。ただし、タイトルや説明文ではなく、動画のコンテンツを使用します。任意のコマンドを実行できますが、リモートで設定を変更するためにも使用できます。これはあくまでPoCであり、教育目的で使用してください!