攻撃グループBlackTech が使用するLinux用マルウエア (ELF_TSCookie)
以前のJPCERT/CC Eyesで攻撃グループBlackTechが使用するマルウエアTSCookieやPLEAD、IconDownについて説明しましたが、この攻撃グループは他にもいくつかのマルウエアを使用することが分かっています。これまで紹介したマルウエアはWindows OSに感染するものでしたが、JPCERT/CCの調査では、Linux OSに感染するTSCookieやPLEADの亜種が存在することを確認しています。
今回は、攻撃グループBlackTech が使用するLinux 版TSCookieについて紹介します。
TSCookie のWindows版とLinux版の違い
Linux 版TSCookieはWindows版と同じコードを多く使用しているため、機能のほとんどが同一です。図1はTSCookie のWindows版とLinux版のコードの一部を比較した結果です。
このようにコードを比較すると多くの個所が同じなのですが、Linux版はWindows版と比較すると大きく以下の点で異なります。
- 設定情報の減少
- 独自通信のみサポート
- 複数の機能がデフォルトで使用可能
以下では、これらの違いについて解説します。
設定情報の減少
Windows版TSCookieでは、以前のブログ(Appendix A: TSCookie設定情報を参照) で紹介した通りサイズ0xB78内に17個の設定情報が含まれていました。Linux版TSCookieでは5個まで簡略化されています。Windows版の際に存在したプロキシ通信に関する設定などはなくなっています。詳しくはAppendix Aをご覧ください。
この設定情報はWindows版の場合はRC4暗号化された上で、マルウエア内に埋め込まれていますが、Linux版の場合は、図2のようにメモリ上に確保した領域へ通信先などの平文の情報をコピーし、RC4暗号化したデータを設定情報として使用しています。Linux版TSCookieが初めから暗号化した設定情報保持していない理由は不明ですが、Windows版のコードを流用する過程でLinux版ではうまくコーディングできない部分があったのではないかと考えられます。
独自通信のみサポート
Windows版TSCookieは、複数の通信方式(HTTP通信、HTTPS通信、独自通信)をサポートしていましたが、Linux版では独自通信のみ使用するようになっています。図3はTSCookieの通信を行うコードの一部です。Linux版では独自通信のコードのみに削減されていることが分かります。
なお、送信データはRC4で暗号化されており、送信するデータのフォーマットについてはWindows版と大きく違いはありません。(詳しくはAppendix B表B-1、B-2をご覧ください。)このリクエストのレスポンスにコマンドが含まれていますが、このフォーマットもWindows版と大きく違いはありません。(詳しくはAppendix B表B-3をご覧ください。)
複数の機能がデフォルトで使用可能
Windows版TSCookieは、モジュールをダウンロードし、そのモジュールの機能によって様々な挙動を行います。Linux版では以下のような機能があらかじめ実装されているため、モジュールのダウンロードを行わなくても不審な挙動を行うことが可能です。(詳しくはAppendix Cをご覧ください。)
- 任意のシェルコマンド実行
- ファイル関連操作 (一覧の表示、削除、移動)
- ファイルのアップロード・ダウンロード
おわりに
今回紹介したマルウエアは、ネットワークに侵入した攻撃者によってLinuxサーバ上に設置されたものと考えられます。攻撃グループBlackTechに関連するマルウエアがネットワーク内で発見された場合は、Linux環境も合わせて調査することをお勧めします。なお、今回解説した検体の通信先に関しては、Appendix Dに記載しています。
インシデントレスポンスグループ 朝長 秀誠
Appendix A: ELF_TSCookie設定情報
オフセット | 説明 | 備考 |
0x000 | 通信先サーバおよびポート番号 | ";"で区切ることにより複数指定可能 |
0x400 | RC4キー | 通信の暗号化に使用 |
0x40C | キャンペーンID | |
0x44C | 通信モード | 設定値はあるが独自通信のみしか行わない |
0x454 | 未使用 |
Appendix B: ELF_TSCookie送受信データの内容
オフセット | 長さ | 内容 |
0x00 | 4 | 受信データ番号 (最初は0xFFFFFFFF) |
0x04 | 4 | データ長 |
0x08 | 4 | パケット番号(データ長が65440を超える場合、分割して送るときに使う) |
0x0C | 4 | コマンド (最初は0x7263BC02) |
0x10 | 4 | 0x20以降のRC4暗号化の有無 |
0x14 | 4 | 未使用 |
0x18 | 4 | 0x3001 |
0x1C | 4 | RC4キー (ランダムデータ) |
0x20 | - | 送信データ (1回目の通信は表B-2を参照) |
※ オフセット0x1Cまでは設定情報に含まれるRC4キーとランダムデータでRC4暗号化されている。
オフセット | 長さ | 内容 |
0x00 | 4 | 0x9A65001F |
0x04 | 4 | プロセスID |
0x08 | 4 | コマンド (最初は0x7263BC02) |
0x0C | 4 | 未使用 |
0x10 | 4 | オフセット0x14以降のサイズ |
0x14 | - | ランダムデータ |
※ オフセット0x14までは設定情報に含まれるRC4キーとランダムデータでRC4暗号化されている。
オフセット | 長さ | 内容 |
0x00 | 4 | 受信データ番号 |
0x04 | 4 | 受信データ長 |
0x0C | 4 | コマンド |
0x10 | 4 | オフセット0x20以降のRC4暗号化の有無 |
0x1C | 4 | RC4キー |
0x20 | - | データ |
※ オフセット0x1Cまでは設定情報に含まれるRC4キーと受信データ内のRC4キーで暗号化されている。
Appendix C: ELF_TSCookieのコマンド
値 | 内容 |
0x7200AC03 | リモートシェルの起動 |
0x7200AC04 | リモートシェルへコマンド送信 |
0x7200AC05 | リモートシェルの終了 |
0x7200AC07 | - |
0x7200AC0B | 0x7263BC06を返す |
0x7200AC0C | ファイル一覧の表示 |
0x7200AC0D | ファイルダウンロード |
0x7200AC0E | ファイルアップロード |
0x7200AC11 | - |
0x7200AC13 | マルウエアの終了 |
0x7200AC16 | ファイルの削除 |
0x7200AC1A | ファイルの移動 |
0x7200AC10 | コマンドの実行 |
Appendix D: 通信先
- app.dynamicrosoft.com
- home.mwbsys.org
Appendix E: ハッシュ値
- fc863fbd71e22c99eaa2b1b0eb72d806cedeb536213e600afb03f0fbea9d2bb3