Discord はユーザーのサーバーを作成し、コミュニティを形成してリアルタイムでコミュニケーションを取ることができ、音声、映像、テキストによるチャットに対応するソーシャルプラットフォームである。主にゲーマーの間で人気を得ていたが、現在では様々な関心事を持つグループが集まり、コミュニケーションを取る空間として拡張された。
Discord Bot は、ユーザーが作成したサーバーで特定のタスクを自動で実行するプログラムであり、サーバー管理、メッセージの自動返信、ゲーム進行、音楽再生、通知送信など、様々な機能を提供し、サーバー運用を簡単にしてくれる。このような Bot は主に Python、JavaScript などの言語で実装され、Discord API を通じてサーバーと対話する。
今回の記事では、Discord Bot で RAT マルウェアを実装したケース(PySilon)について分析していく。当該 RAT マルウェアのソースコードはすべて Github に公開されており、ホームページを始めとする Telegram サーバーなどのコミュニティが存在する。
上記の Builder では、Discord Bot を開発するために必要な Server ID と Bot Token 情報、システムにインストールされるレジストリパスや名前などを指定してカスタマイズできるように対応している。その後、事前に実装されている Python コードにカスタマイズされた情報が入力され、PyInstaller を通じて実行ファイル(.exe)として作成される。
このようにして作成された実行ファイルがユーザーの PC で実行されると、以下の画像のように攻撃者が作成したサーバーに新たなチャンネルが作成され、最初に IP アドレスとその他システム情報がチャットを通じて攻撃者に渡される。
Bot に感染した PC 1台あたり、チャンネル1つが新たに作成される方式で、攻撃者が感染した PC を個別にコントロールできる。
ビルドが完了した RAT マルウェアがシステムで実行されると、マルウェアは[図4]のように持続性の維持のためにユーザーフォルダーに自己複製によって作成され、レジストリを利用して RUN キーに自身を登録する。このようにすることで、PC が起動するたびに当該マルウェアが持続的に実行され、システムに常駐するようになる。自己複製先のフォルダー名も、攻撃者がカスタムして作成することができる。
また、VM において機能の実現のために存在するファイルやプロセスの名前を利用した Anti-VM ロジックが存在する。マルウェアが自らの機能を実行する前に仮想環境を認識し、仮想環境では動作しないように設定されている。
その後、攻撃者は攻撃に成功して作成されたチャンネルに上の[図5]のようなコマンドをチャットで入力し、追加の不正な振る舞いを実行できる。
以下は、当該マルウェアの主な振る舞いを攻撃者視点から見た内容である。
- 情報収集機能
Grab コマンドを利用して RAT マルウェアがインストールされたシステムから情報を収集できる。
決済情報を含むユーザーの個人情報や、インストールされているブラウザのパスからアクセス記録、Cookie 情報などを収集し、各種パスワードを抽出して攻撃者に転送する。
収集可能な情報:Discord トークン、Nitro、MFA、電子メール、電話番号、パスワード、Cookie 情報、Web ページアクセス記録など
- 画面録画および録音
pyautogui、numpy、imageio、sounddevice などの Python モジュールを利用し、感染した PC から録画およびサウンド録音をサポートする。
- キーロガー
ユーザーが「Enter」を入力する時点で、入力された内容を攻撃者サーバーに転送する。
- フォルダー暗号化
感染した PC 内のフォルダーに存在するファイルを暗号化できる。Fernet アルゴリズムが利用されるものと確認され、復号化時に必要な Key ファイルがユーザーフォルダーに保存される。
暗号化されたファイルは .pysilon 拡張子を持ち、ランサムノートなどのファイルは作成されない。
上記で取り上げた内容以外にも、Host ファイルを操作して Web ページの Black/White リストを作成して管理することができ、ファイルのアップロード/ダウンロード、cmd コマンドの実行、プロセスの開始/終了、さらには Windows の Native 関数を利用して BSOD(ブルースクリーン)を誘発する機能も存在する。
PySilon のように Discord を利用して不正な RAT 機能を実装したオープンソースプロジェクトが作成され続けている。ソースコードが公開されているため、攻撃者が自身の Bot に容易に搭載することができ、有用な機能を持つ Bot としての偽装が簡単である。また、正常な Bot 機能のために実装された Discord 公式サーバーを活用してデータが転送されるため、ユーザーは当該マルウェアがインストールされたことを認知することが非常に難しい。したがって、信頼できない配布元の Bot やプログラムをインストールする際は特に注意が必要である。