攻撃グループBlackTechが使用するLinux版マルウェア(ELF_PLEAD)

以前のJPCERT/CC Eyesで攻撃グループBlackTechが使用するLinux版マルウェアELF_TSCookieについて紹介しましたが、この攻撃グループは他にもLinux OS向けのマルウェアを使用することが分かっています。以前紹介したWindows OS向けマルウェアPLEADダウンローダがダウンロードするPLEADモジュールのLinux版マルウェア(ELF_PLEAD)が存在します。
今回は、Windows版マルウェア「PLEADモジュール」とLinux版マルウェア「ELF_PLEAD」を比較しながら、ELF_PLEADの特徴を紹介します。

PLEADモジュールとELF_PLEADの比較

ELF_PLEADはPLEADモジュールと同じコードを多く使用しているため、通信など機能の多くが類似しています。図1はELF_PLEADとPLEADモジュールのコードのメイン関数部分を比較した結果です。

ELF_PLEADとPLEADモジュールのコードの比較
図1: PLEADモジュールとELF_PLEADのコードの比較
(左: PLEADモジュール 右: ELF_PLEAD)

このように処理の流れを比較するだけでも2つのマルウェアが類似していることがわかります。以降では、ELF_PLEADの次の特徴について説明します。

  • 設定情報
  • 通信方式
  • 命令によって実行されるコマンド

設定情報

ELF_PLEADは、サイズ0x1AAの設定情報を持っています。図2は、設定情報の例です。設定情報内には通信先や、通信の暗号化に使用するキーなどの情報が含まれています。(設定情報の詳細はAppendix Aをご覧ください)

設定情報の例
図2: 設定情報の例

設定情報は、RC4で暗号化されており、暗号化された設定情報の前の32バイトが暗号化キーになっています。図3は、暗号化された設定情報と暗号化キーの例です。

暗号化された設定情報と暗号化キー
図3: 暗号化された設定情報と暗号化キー

通信方式

PLEADモジュールは、HTTPを利用してC2サーバーと通信をしていましたが、ELF_PLEADでは独自通信を使用しています。通信プロトコルは異なりますが、送信するデータのフォーマットや暗号化キーの交換方法などはほぼ同じです。図4は、ELF_PLEADの通信の流れを示しています。

ELF_PLEADの通信の流れ
図4: ELF_PLEADの通信の流れ

ELF_PLEADとC2の最初の通信時にRC4キーの一部を交換します。その後の通信では、交換によって作成したRC4キーを使用して暗号化を行います。送信されるデータは、RC4で暗号化されて、さらにLZOで圧縮されています。(詳しい通信のフォーマットについては、Appendix Bをご覧ください。)

命令によって実行されるコマンド

ELF_PLEADは、大きく5つのコマンドグループが実装されています。以下は、実装されているコマンドグループ名です。(各グループの詳細な機能についてはAppendix Cをご覧ください。検体によってはコマンド番号が異なる場合があります。)

  • CFileManager(グループ番号0): ファイル操作関連のコマンド
  • CFileTransfer(グループ番号1): ファイル送受信関連のコマンド
  • CRemoteShell(グループ番号2): リモートシェル関連のコマンド
  • CPortForwardManager(グループ番号3): プロキシモード関連のコマンド
  • 名前なし(グループ番号0xFF): マルウェア制御関連のコマンド

コマンドグループ名
図5: コマンドグループ名

PLEADモジュールのコマンドと比較すると、対応する機能がほぼ同じであることがわかります。

おわりに

攻撃グループBlackTechは、TSCookie、PLEAD、KIVARSなど多くのマルウェアを使用することで知られていますが、これらのマルウェアはWindows OSだけではなくLinux OSもターゲットにしています。BlackTechに関連するマルウェアがネットワーク内で発見された場合は、Linux環境も合わせて調査することをお勧めします。

インシデントレスポンスグループ 朝長 秀誠

Appendix A: 設定情報

表 A-1: 設定情報の一覧
オフセット 説明 備考
0x000 RC4キー 通信の暗号化に使用
0x004 ID
0x024 ポート番号1
0x026 ポート番号2
0x028 ポート番号3
0x02A 通信先1
0x0AA 通信先2
0x12A 通信先3

※ 検体によって、設定情報のフォーマットが異なる場合があります。

Appendix B: 送受信データの内容

表 B-1: 送信データのフォーマット
オフセット 長さ 内容
0x00 4 RC4キー(Key4)
0x04 4 ハッシュ値
0x08 4 RC4キー(Key1)
0x0C 2 送信データ長
0x0E 2 オフセット0x10のデータの圧縮前の長さ
0x10 - 暗号化されたデータ(RC4+LZO)(詳しくは表B-2を参照)
表 B-2: 暗号化されたデータのフォーマット
オフセット 長さ 内容
0x00 2 0xFF
0x02 4 RC4キー(Key2)
0x06 - ランダムなデータ(128バイト以上)
表 B-3: 受信データのフォーマット
オフセット 長さ 内容
0x00 4 RC4キー(Key4)
0x04 4 ハッシュ値
0x08 4 RC4キー(Key1)
0x0C 2 送信データ長
0x0E 2 オフセット0x10のデータの圧縮前の長さ
0x10 - 暗号化されたデータ(RC4+LZO)(詳しくは表B-4を参照)
表 B-4: 受信データに含まれる暗号化されたデータのフォーマット
オフセット 長さ 内容
0x00 2 0x01FF
0x02 4 RC4キー(Key3)

Appendix C: コマンド

表 C-1: 名前なし(グループ番号0xFF)コマンドの一覧
内容
4 ランダムなデータを送信
5 再接続
6 リスタート
7 終了
8 終了
9 socketの変更
11 接続先サーバーの変更
表 C-2: CFileManager(グループ番号0)コマンドの一覧
内容
32 ファイル一覧の送信
37 ファイルサイズ・モード・タイムスタンプの送信
39 ファイル名の変更
41 ファイル・ディレクトリの削除
43 ファイルのアップロード
45 ファイルの実行
49 ディレクトリの作成
51 ファイルの移動
53 ディレクトリの削除
表 C-3: CFileTransfer(グループ番号1)コマンドの一覧
内容
64 ファイルまたはディレクトリ情報の送信
67 ディレクトリの作成
70 ファイルのダウンロード
71 ファイル情報の送信
75 ファイルのアップロード
表 C-4: CRemoteShell(グループ番号2)コマンドの一覧
内容
80 リモートシェルの起動
表 C-5: CPortForwardManager(グループ番号3)コマンドの一覧
内容
96 プロキシセットアップ
100 プロキシ接続
102 プロキシデータ送信
104 -
106 -
108 プロキシ終了

Appendix D: 通信先

  • mx.msdtc.tw

Appendix E: マルウェアのハッシュ値

  • 5b5f8c4611510c11d413cb2bef70867e584f003210968f97e0c54e6d37ba8d8d
  • ca0e83440b77eca4d2eda6efd9530b49ffb477f87f36637b5e43f2e428898766
≪ 前へ
トップに戻る