攻撃グループ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は、実際にサーバから暗号化されたファイルをダウンロードした例です。

図 1:PLEADダウンローダのファイルダウンロードの例

ダウンロードしたファイルは先頭の20hがRC4のキーになっています。ダウンロードしたファイルを復号すると、モジュール(以降では、PLEADモジュールと記載します)や通信先、通信に使用する暗号化のキーなどが含まれています。図2はダウンロードしたファイルを復号した例です。

図 2:ダウンロードしたファイルの復号例

PLEADダウンローダは復号したデータに含まれるPLEADモジュールをメモリ上に展開し、実行します。このPLEADモジュールはファイルとして保存されることはなく、メモリ上にのみ存在します。以降では、このPLEADモジュールの詳細について記載します。

PLEAD モジュールの挙動の詳細
PLEADモジュールはC2サーバから命令を受信することによって動作します。C2サーバとの通信データは、RC4で暗号化されてさらにLZOで圧縮されています。暗号化に使用するRC4のキーは、自身が作成したものとC2サーバから送信されたものを組み合わせて使用します。図3はPLEADモジュールの通信の流れを示しています。

図 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は送信したデータをデコードした例です。

図 4:PLEADモジュールが送信するデータをデコードした例

その後、サーバからはコマンドが送信されます。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
≪ 前へ
トップに戻る
次へ ≫