ランサムウェア
仮想環境をも侵害するLinux版「DARKSIDE」ランサムウェア
2021年5月に米国の石油パイプライン大手Colonial Pipeline社を操業停止に追い込んだランサムウェア「DARKSIDE」は、前回の記事で解説したように、米国、フランス、ベルギー、カナダなどの地域で、製造業、金融業、基幹インフラの企業などを標的にしています。またWindowsおよびLinux双方のプラットフォームも標的としています。この記事では、Linux版「DARKSIDE」ランサムウェアの動作を解説します。
2021年5月に米国の石油パイプライン大手Colonial Pipeline社を操業停止に追い込んだランサムウェア「DARKSIDE」は、前回の記事で解説したように、米国、フランス、ベルギー、カナダなどの地域で、製造業、金融業、基幹インフラの企業などを標的にしています。またWindowsおよびLinux双方のプラットフォームも標的としています。この記事では、Linux版「DARKSIDE」ランサムウェアの動作を解説します。Linux版では特に、VMware ESXIサーバ上の仮想マシン関連ファイルを標的とし、事前に組み込まれた環境設定により仮想マシン(VM)を強制終了する点や、感染端末上のファイルを暗号化した後、窃取したシステム情報をリモートサーバに送信する挙動などをもっています。DARKSIDE自体は既に活動停止状態と考えられていますが、WindowsだけでなくLinux環境にも感染する、仮想環境をも攻撃対象とするなどの活動は、攻撃を受けた組織の被害を一層拡大させる可能性があり、他のランサムウェアでも行われる可能性が高いものであることに留意してください。
Windows版およびLinux版のDARKSIDEランサムウェアの動作の違いをまとめると、以下のとおりとなります。
Windowsバージョン | Linuxバージョン | |
暗号化の仕組み | RSA-1024によるSalsa20 | RSA-4096によるChaCha20 |
暗号化ブロック | Salsa20のマトリックスがカスタムとなり「RtlRandomExW」でランダムに生成される | ChaCha20の初期ブロックは標準的なものであり、定数文字列「expand 32-byte k」で構築される |
環境設定 | 暗号化される | 暗号化されない |
VMを強制終了するか | しない | する |
暗号化の標的となるファイル | 設定に記載されているファイル、フォルダ、ファイル拡張子を除く、システム上のすべてのファイル | VMware ESXIサーバ上のVM関連ファイル(環境設定に記載されている特定のファイル拡張子を持つもの) |
新たに追加される拡張子 | 感染端末のHWIDを「.4731c768」としてCRC32を数回適用して生成する | 埋め込み設定により「.darkside」としてハードコード化されているか、実行パラメータで付与される |
脅迫状のファイル名 | README.という設定でハードコード 化された部分と、前述の生成されたIDで構成される。例えば「README. 4731c768.TXT」 | 埋め込み設定により「darkside_readme.txt」としてハードコード化されているか、実行パラメータで付与される |
表1:WindowsおよびLinuxにおけるDARKSIDEの比較
■ Linuxバージョンの解析
ターゲット
DARKSIDEには、より多くの端末を感染させて大規模なダメージを与えるため、Linuxを狙った亜種(以下、「LinuxバージョンのDARKSIDE」)が存在します。この亜種の場合、下図のとおり、主にVMware ESXIサーバ上のVM関連ファイルをターゲットにする特徴を示しています。
図1:対象となるファイルの拡張子
環境設定
LinuxバージョンのDARKSIDEでは、Windowsバージョンと異なり、文字列や設定が難読化されません。一方、Linuxバージョンの場合、環境設定において、暗号化ファイルの拡張子、C&CのURL、スレッド数、暗号化する対象ファイルの最小サイズの制約などといった特徴が検体から確認されました。
下図のルートパス(暗号化の開始点)は「/vmfs/volumes/」であり、これはESXIホストのVMファイルのデフォルトの場所となります。
図2:Linuxバージョンの環境設定
さらにLinuxバージョンのDARKSIDEの実行ファイルは、ハードコード化された設定に加え、より多くのファイルを感染させたり、デフォルト設定を変更したりするためのパラメータを受け入れることも可能となっています。図3は、こうした動作のために実行パラメータが解析される箇所を示しています。
図3:Linuxバージョンランサムウェアによるパラメータ解析
ESXCLIコマンド
LinuxバージョンのDARKSIDEは、複数のESXCLIコマンド(vSphereのコマンドラインインターフェイスフレームワークなど)を実行して、稼働中の仮想マシンVM、ストレージ関連情報、vSAN関連情報など、感染したESXIホストに関する情報を収集します。
表2は、実際に感染端末上で実行されたESXCLIコマンドの一覧です。
コマンド | 記述 |
esxcli --formatter=csv --format-param=fields=="Device,DevfsPath” storage core device list | 現在ストレージに登録されているデバイスのDevfs Pathを列挙する |
esxcli --formatter=csv storage filesystem list | ESXIホストに現在接続されているストレージの論理セクションを列挙する |
esxcli --format-param=fields=="WorldID,DisplayName” vm process list | ESXIホスト上で稼働しているVMを列挙する |
esxcli vsan debug vmdk list | vSAN内のVMDKの状態を列挙する |
esxcli --format-param=fields=="Type,ObjectUUID,Configuration” vsan debug object list | vSAN オブジェクトのUUIDを列挙する |
表2:ESXCLIコマンド
図4は、LinuxバージョンのDARKSIDEがESXI上で実行中の仮想マシンをリストアップしている様子を示しています。
図4:稼働中のVMのリストアップ
仮想マシンの強制終了
LinuxバージョンのDARKSIDEは、暗号化に際しては、その前に以下のESXIコマンドを使用して、ESXIサーバ上で実行中のVMを強制終了することができます。
図5:稼働中のVMを強制終了する
図6:VMの強制終了に関する状況を報告する
暗号
そして実際の暗号化に際しては、ChaCha20ストリーム暗号とRSA-4096を用いて、感染端末上で標的となるファイルへ暗号化を施します。
図7のように、事前に組み込まれた環境設定もしくはパラメータで指定されたルートパス上のファイルをループします。
図7:ファイル/ディレクトリ間をループするLinuxバージョンランサムウェア
なお、暗号化の前には、ファイルサイズのチェックも行われます。この場合、標的となるファイルが、事前に組み込まれた環境設定もしくはパラメータで指定された最小ファイルサイズ以上であることが確認されます。
図8:ファイルサイズのチェックを行うLinuxバージョンのランサムウェア
その後、標的となるファイルを開き、事前の環境設定やパラメータで与えられたパートやスペースのサイズに基づいてコンテンツを読み取り、暗号化を実施し、以下のコードのようなファイルへの書き込みがなされます。
図9:ファイルの暗号化
なお、暗号化に際しては、「RtlRandomExW」を何度も呼び出してカスタムSalsa20マトリックスをランダムに生成するWindowsバージョンと異なり、LinuxバージョンのDARKSIDEの場合は、下図のように、感染端末上のファイル暗号化のChacha20暗号として標準的な定数「expand 32-byte k」が用いられます。
図10:Chacha20暗号の定数として「expand 32-byte k」を使用する
そして暗号化の後、図11のとおり、暗号化済ファイルの最後の部分へヘッダーおよび暗号化のコードが追加されます。
図11:ヘッダーへのコード追加
図12:暗号化されたファイルのHex表示
そしてLinuxバージョンのDARKSIDEの出力コンソールには、暗号化の結果として、暗号化されたファイル名、サイズチェック後に破棄されたファイル、暗号化された時間などの情報が表示されます。
図13:ランサムウェアの出力コンソール
脅迫状および追加された拡張子
そして最後に、感染端末上に身代金請求の脅迫状が表示され、暗号化されたファイルには新たなファイル拡張子が追加されます。
LinuxバージョンのDARKSIDEは、Windowsバージョンと異なり、脅迫状のファイル名および暗号化されたファイルの新しい拡張子は、環境設定ファイルによってハードコード化されているか、もしくはパラメータで付加されており、拡張子の最後に独自の認証が付加されることはありません。
例えば、今回解析した検体の場合、新しい拡張子は「.darkside」であり、ハードコード化された脅迫状のファイル名は「darkside_readme.txt」となっていました。
図14:脅迫状を含む暗号化されたフォルダの一例
C&Cサーバとの通信
LinuxバージョンのDARKSIDEの場合、感染端末から窃取したシステム情報は、事前に設定・ハードコード化されたリモートサーバに送信されることで、コマンド&コントロール(C&C)サーバとの通信が可能になります。図15のとおり、この場合、ホスト名、ドメイン、ディスク情報といったシステム情報が窃取されます。
図15:窃取されるシステム情報
図16:窃取されるシステム情報の形式
その後、窃取情報は、ハッシュ化され、事前に設定内に記載されているURL宛に送信されます。またこの際、感染端末のネットワーク上のIPS/IDSデバイスによるC&Cトラフィックの検出を困難にするため、送信リクエストには、以下のとおり、8文字のランダムなパラメータが使用されます。
図17は、窃取情報がリモートサーバへ送信されたHTTP POSTリクエストを示しています。
図17:C&Cサーバとの通信内容を示すHTTPトラフィック
■ 結論
ランサムウェアDARKSIDEファミリーは、WindowsおよびLinux双方のプラットフォームを標的にしています。それぞれのバージョンには類似点があるものの、暗号化の仕組み、標的となるファイル、脅迫状の名称、拡張子、C&CサーバのURLなど、いくつかの機能に関する相違点も確認されます。
このLinuxバージョンのランサムウェアでは、感染端末上のファイルを暗号化するため、ChaCha20ストリーム暗号とRSA-4096が使用されます。そして主にVMWare ESXIサーバ上のVM関連ファイル(VMDKファイルなど)が暗号化の標的とされます。また、感染端末上でより多くのファイルを感染させるためのパラメータを受け入れることも可能です。そして情報窃取に関しては、ESXCLIコマンドを実行して、感染端末上のvSANおよびストレージの情報が窃取されます。なお、暗号化の際には、事前に感染端末のESXIホスト上で稼働しているVMをリストアップした上で強制終了が施されています。そして身代金請求のための脅迫状は、感染端末上の暗号化されたディレクトリ上に作成されます。
■ トレンドマイクロのソリューション
トレンドマイクロのセキュリティソリューションの中でもランサムウェアへの対策として推奨されるものを以下に示します。
法人向けのエンドポイント製品「Trend Micro Apex One™」や中小企業向けのクラウド型エンドポイントセキュリティサービス「ウイルスバスター™ビジネスセキュリティサービス」では、「FRS」技術によるウイルス検出と同時に、機械学習型検出や挙動監視機能(不正変更監視機能)の強化により、侵入時点で検出未対応のランサムウェアであっても警告可能です。
また「Trend Micro Apex One™」は事前防御(EPP)と事後対応(EDR)を統合し、高い防御力を実現します。また、クロスジェネレーション(XGen)セキュリティアプローチにより、高い検出率と誤検出/過検出の回避を両立しつつ、コンピュータへの負荷軽減を実現します。
「Trend Micro XDR」は高度な分析と人工知能(AI)技術を使用して、エンドポイント、メール、ネットワークなどのアラートを相関させ、一つの防御ポイントの情報だけではわからないような脅威を可視化し、深刻度のレベルに応じて優先順位を付けます。これにより、企業は攻撃がどのように開始され、どの程度拡散しているかを迅速に把握でき、被害を最小化することができます。
■侵入の痕跡(Indicator of Compromise、IoC)
今回の記事に関する侵入の痕跡はこちらを参照してください。
参考記事:
- 「DarkSide on Linux: Virtual Machines Targeted」
by Mina Naiim
翻訳:与那城 務(Core Technology Marketing, Trend Micro™ Research)