攻撃グループBlackTechが侵入後に使用するマルウエア
以前のJPCERT/CC Eyesで攻撃グループBlackTechが使用するマルウエアTSCookieやPLEADについて説明しましたが、引き続きこの攻撃グループによる活動は行われています。JPCERT/CCの調査ではこの攻撃者がネットワーク内部に侵入した場合、これまでに説明したTSCookieとは少し異なる挙動を行う亜種を使用することを確認しています。
今回は、攻撃グループBlackTech が侵入後に使用するTSCookieの亜種について紹介します。
侵入後に使用されるTSCookieの概要
このマルウエアは、図1のように2つのファイル(TSCookie LoaderおよびTSCookie)で構成されています。
TSCookie LoaderはEXEまたはDLL形式で、同一フォルダまたは以下のフォルダにある特定のファイルを読み込み、実行します。(検体によって、確認するフォルダは異なる場合があります。)
- C:\Windows
- C:\ProgramData\Microsoft
- C:\Users\Public\Documents
- C:\Program Files\Internet Explorer
読み込むファイルは、以下のファイル名に該当するものが対象となります。
- desktop.db
- 「*7???.*」(ワイルドカード)にマッチするファイル名
- 「*8???.*」(ワイルドカード)にマッチするファイル名
ワイルドカードにマッチするファイル名として具体的には、KB78E7269.logやPM89E7267.xmlのようなファイル名が使われていることを確認しています。
TSCookieは、RC4で暗号化されておりTSCookie Loaderによってデコードされた後、メモリ上で実行されます。TSCookieはダウンローダーであり、以前のJPCERT/CC Eyesで記載した通り外部からモジュールをダウンロードすることで動作しますが、設定情報や通信方式など一部異なる点があります。
以降では、TSCookieの詳細な挙動を解説します。
TSCookieの挙動の詳細
TSCookieは、複数の通信方式(HTTP通信、HTTPS通信、独自通信)をサポートしています。どの通信方式を使うかについてはマルウエア内の設定情報に設定されています。(設定情報の詳細に関しては、Appendix Aをご覧ください。)
TSCookie がHTTP通信を行うように設定されていた場合、以下のようなHTTP POSTリクエストを送信します。
POST /index?o=E7E168C4EC82E HTTP/1.1 Cache-Control: no-cache Pragma: no-cache Accept: */* User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32) Proxy-Connection: Keep-Alive Content-Length: [サイズ] Host: [ホスト名] [送信データ]
URLのパスは複数パターン存在し、以下のような文字列にランダムな文字列・値などを組み合わせて動的に作成されます。(一部、フォーマット指定子で記載しています。また、これ以外の場合も存在します。)
- /news?%c=%X%X
- /index?%c=%X%X
- /?id=%X%X
- /Default.aspx?%c=%X%X
- /m%u.jsp?m=%d
- /N%u.jsp?m=%d
送信データはRC4で暗号化されています。送信するデータのフォーマットについては、Appendix B表B-1、B-2をご覧ください。
このHTTP POSTリクエストによってダウンロードしたデータは、設定情報に含まれているRC4キー(Appendix A: 表A-1)と受信データに含まれている値(Appendix B: 表B-3のRC4キー)を合わせた8byteの値によってRC4で暗号化されています。このダウンロードしたデータにモジュールが含まれており、メモリ上に展開したうえで実行されます。
TSCookieデコードツール
暗号化されたTSCookieファイルをデコードして設定を抽出するツールを作成し、GitHubに公開しています。TSCookieを分析する際にご活用ください。
JPCERTCC/aa-tools - GitHub
https://github.com/JPCERTCC/aa-tools/blob/master/tscookie_data_decode.py
おわりに
最近、組織内でTSCookieの感染が確認されたという被害報告が増加しています。今回解説したファイル名や通信の際の特徴などを基に組織内で感染が確認されていないかご確認ください。なお、今回解説した検体のハッシュ値に関しては、Appendix Cに記載しています。
インシデントレスポンスグループ 朝長 秀誠
Appendix A: TSCookie設定情報
オフセット | 説明 | 備考 |
0x000 | 通信先サーバおよびポート番号 | ";"で区切ることで複数指定可能 |
0x400 | RC4キー | 通信の暗号化に使用 |
0x404 | スリープ回数 | |
0x42C | Mutex | |
0x44C | 通信モード | 1,2,3: 認証プロキシに対応したHTTP通信 6,7,8: HTTPS通信 0: 独自通信 5: HTTP通信 |
0x454 | HTTPコネクションキープ | |
0x458 | ICMP受信設定 | ICMPで通信先サーバの情報を受信 |
0x4D4 | ICMPを受信するIPアドレス | |
0x624 | プロセスインジェクションモード | 0: 起動してインジェクション 1: すでに起動しているプロセスにインジェクション 2: オフセット0x62Cを起動 |
0x628 | インジェクションするプロセス | 0: svchost.exe 1: iexplorer.exe 2: explorer.exe 3: Default Browser 4: オフセット0x62Cのプロセス |
0x62C | プロセス名 | |
0x72C | プロキシサーバ | |
0x76C | プロキシポート番号 | |
0x770 | プロキシユーザ名 | |
0x790 | プロキシパスワード | |
0x7B0 | プロキシモード | 1: 設定情報を使用 0: Proxy自動検出 |
0x7B4 | プロキシ認証方式 | AuthScheme |
※ 検体によってはプロセスインジェクションを行わない検体も存在します。
Appendix B: TSCookie送受信データの内容
オフセット | 長さ | 内容 |
0x00 | 4 | 受信データ番号(最初は0xFFFFFFFF) |
0x04 | 4 | 送信データ長 |
0x08 | 4 | 通信回数 |
0x0C | 4 | 固定値(最初は0x5322、モジュール受信中は0x5324または0x5325) |
0x1C | 4 | ランダムデータ(RC4キー) |
0x20 | - | 2回目以降の通信はランダムデータ(1回目の通信は表B-2を参照) |
※ オフセット0x1Cまでは設定情報に含まれるRC4キーとランダムデータでRC4暗号化されている。
オフセット | 長さ | 内容 |
0x00 | 4 | 0x9A65001E |
0x04 | 4 | プロセスID |
0x08 | 4 | 0x5322 |
0x0C | 4 | ランダムデータ |
0x10 | 4 | オフセット0x14以降のサイズ |
0x14 | - | ランダムデータ |
※ オフセット0x14までは設定情報に含まれるRC4キーとランダムデータでRC4暗号化されている。
オフセット | 長さ | 内容 |
0x00 | 4 | 受信データ番号 |
0x04 | 4 | 送信データ長 |
0x0C | 4 | - |
0x10 | 4 | オフセット0x20以降の暗号化の有無 |
0x1C | 4 | RC4キー |
0x20 | - | モジュールデータ |
※ オフセット0x1Cまでは設定情報に含まれるRC4キーと受信データ内のRC4キーで暗号化されている。
Appendix C: 検体のSHA-256ハッシュ値
TSCookie Loader
- 072f24d2691fb3930628be91bc46cefb8bc3364d1d09d72ab0cb3863681cb107
- f49956f498042feb237c3e898f74a8e14500c27cda2746efca2d973a5390baa8
- 3e12938df72380e4ae7a2dcb3322e563de3da102f5f32b26a29662ba594e73d1
- 23ca1a3ca26ada00502bbd1abf4d42302343dafba32cbc0711847d52884ff8e1
- 6ec56de53ef1ea66c81b3e48f9a9b3cf3dc8e3ebda1ec08bf95cc21228a4c7b3
- bd89b972de19c8ab2be0fb3e2aa44638a95e465e4b52920c94e6f59c25ce4693
- c5d7e5a12c8eab9c14f008c93d92e0070f84f358d39f28ac089ee917c652f5a8
- 85536a139b9d44157aea2908a6a6e53e4ac19077355680b69edd8e84c70254bc
- 0d00d12d71dd080d2861e9da89906a67bb822c64366b4c6b72a55bb8c26a4ea3
- 81dfce847a9fd6a3a0080a927bbb740709bdcc099bfe1b0cfc99958f6ddeb52f
- 48fdc29e7f47e5d38c88a89667ed85740628bf4f4ce95045019f7ebfeb4bbb5c
- d5909d06ddb394dea114052e9e174fa1e88324d805d153edb6076c53842fd2f2
- 9e10a1abbff4d421eaee20040fb2a9270c4efb6d75ee6cd728b09bac1042bfa6
- ae5528cc802c81946f2787c7e884656416acebc89466989eeca9379fa066ad96
- 69b07aae04af6ca57d6066fdcbfeeb4c4849bfd2cd65b01c1e576f45b1c24d79
- 784b331d30d46ee9e7a264ecb45e3a39d7cef135d189bf0e712e89935728c13f
- 0eb9947a1ef4b810517f6cba175a321c4d69c3058d688bdd73492d54e7932c86