トレンドマイクロでは、ユーザを保護するためにサイバー攻撃の監視を行っています。その監視の中で、日本を狙う標的型サイバー攻撃キャンペーン「ChessMaster」の新たな活動をこの 2018年 4月に確認しました。ChessMaster は 2017年 7月から確認されている攻撃キャンペーンであり、当初は学術界、メディア、政府機関のような日本の組織を標的としてさまざまな攻撃ツールと手法を駆使した攻撃を行っていました。
利用する手口の巧妙さから当初推測された通り、ChessMaster はその後もツールおよび手法を変化させながら活動を続けてきました。以前の活動では、「ChChes」のような「Remote AccessTool(RAT)」を利用していましたが、2017年9月以降は新しいバックドア型マルウェア「ANEL(エイネル)」の利用を確認しています。今回も、複数の脆弱性を利用するANELの新たな亜種(「BKDR_ANEL.ZKEI」として検出)の利用が確認されました。
本記事では、ANEL の変遷とその利用手法を中心に、今回確認された ChessMaster の活動およびツールについて解説します。
活動時期 | 2017 年 7 月 | 2017 年 9 月 | 2018 年 4 月 |
侵入経路 | おとり文書を添付した標的型メール
|
おとり文書を添付した標的型メール
|
おとり文書を添付した標的型メール
|
特筆すべきツールや手法 |
|
|
|
バックドア型マルウェア |
|
|
|
■技術的な解析
図 1:今回確認された攻撃における感染の流れ
今回確認された ChessMaster の攻撃も、以前と同様に「.doc」、「.docx」、「.rtf」、「.csv」、「.msg」形式の不正なファイルが添付されたメールから始まります。メールの件名と添付ファイルのファイル名は日本語で書かれており、ビジネスや政治経済に関する以下のような一般的な用語が含まれています。
- 世界経済
- 経済政策
- 予算概算要求
- 日米対話
- 安倍再任
- 連絡網
- 職員採用案
- 会議
しかし、添付ファイルが利用する脆弱性や正規機能には変化が見られます。2017 年 9 月の活動では、第二段階のマルウェアをダウンロードするために、Microsoft .NET フレームワークにおける SOAP WSDL パーサーの脆弱性「CVE-2017-8759」が利用されました。引き続き利用が確認されているこの脆弱性に加え、今回の活動では、脆弱性「CVE-2017-11882」が利用されています。この脆弱性は、改変されたバージョンの情報窃取型マルウェア「Loki」を送り込む際にも利用されていることが確認されています。CVE-2017-8759 は 2017 年 9 月に、CVE-2017-11882 は 2017 年 11 月に更新プログラムが既に公開されています。
図 2:脆弱性「CVE-2017-11882」の利用
他に、Microsoft Office の 3 つの正規機能も悪用します。
機能 | 目的 | 実際の攻撃で確認された Microsoft Office 文書のファイル形式 |
Automatic Dynamic Data Exchange(DDEAUTO) | 別の Office ファイルからデータを取得する | 「.doc」、「.rtf」、「.msg」 |
リンクの自動更新 | ファイルを開いた際に、ユーザの操作無しで自動的にリンクを更新する | 「.csv」 |
Microsoft Word の フレーム機能 | HTML またはテキストページを Microsoft Word のフレーム内に読み込む機能 | 「.docx」 |
図 3:DDEAUTO 機能の利用
図 4:Microsoft Word のフレーム機能の利用
図 5:リンクの自動更新機能の利用
ChessMaster は上述のいずれかの方法で、侵入後の不正活動に利用するツール「Koadic」をダウンロードします。Koadic はオープンソースの RAT です。以前の活動でも、特に環境情報のような感染 PC の情報を窃取するために Koadic が利用されていました。
Koadic は以下の形式でコマンドを実行します。
%comspec% /q /c <コマンド> 1> <出力先> 2>&1 |
図6 と図7 は異なるバージョンの ANEL に感染した端末で確認された攻撃者からのコマンド実行結果です。それぞれ実行されているコマンドの順序が異なっており、感染端末の情報収集の手順が統一化されていないことが分かります。「ANEL 5.1.2 rc1」を利用する場合、ダウンロードするデータを暗号化するために HTTPS が使用されています。
図 6:ANEL 5.1.1 rc を利用する場合のKoadic のコマンドおよび出力先
図 7:ANEL 5.1.2 rc1 を利用する場合のKoadic のコマンドおよび出力先
以下は Koadic の関数の一覧です。
<変数>.user | ユーザに関連する関数 | |
<変数>.user.isElevated | 権限の確認 | |
<変数>.user.OS | OS バージョンの取得 | |
<変数>.user.DC | レジストリからドメインコントローラ(DC)名を取得 | |
<変数>.user.Arch | アーキテクチャ情報を取得 | |
<変数>.user.info | ユーザ情報を取得 | |
<変数>.work | 主な機能を担う関数 | |
<変数>.work.report | サーバに報告を送信 | |
<変数>.work.error | エラーを返す | |
<変数>.work.make_url | URL(C&C)を変更/修正 | |
<変数>.work.get | POST リクエストの応答を取得 | |
<変数>.work.fork | “rundll32.exe” プロセスを作成 | |
<変数>.http | HTTP 接続関連の関数 | |
<変数>.http.create | 初期のHTTPオブジェクトを作成 | |
<変数>.http.post | POST ヘッダ | |
<変数>.http.addHeaders | HTTP ヘッダを追加 | |
<変数>.http.get | GET ヘッダ | |
<変数>.http.upload | バイナリファイル/データのアップロード | |
<変数>.http.bin2str | 文字列操作 | |
<変数>.http.downloadEx | レスポンスをダウンロード | |
<変数>.http.download | 追加のダウンロード関数 | |
<変数>.process | プロセス関連の関数 | |
<変数>.process.currentPID | 現在のプロセスIDを取得 | |
<変数>.process.list | プロセスの列挙 | |
<変数>.process.kill | プロセスの終了 | |
<変数>.registry | レジストリ関連の関数 | |
<変数>.registry.HKCR | 「HKEY_CLASSES_ROOT」を設定 | |
<変数>.registry.HKCU | 「HKEY_CURRENT_USER」を設定 | |
<変数>.registry.HKLM | 「HKEY_LOCAL_MACHINE」を設定 | |
<変数>.registry.STRING | 文字列を設定 | |
<変数>.registry.BINARY | バイナリ値を設定 | |
<変数>.registry.DWORD | DWORD 値を設定 | |
<変数>.registry.QWORD | QWORD 値を設定 | |
<変数>.registry.write | レジストリ値の書き込み/追加 | |
<変数>.registry.provider | レジストリハンドルの作成 | |
<変数>.registry.destroy | レジストリキーの削除 | |
<変数>.registry.read | レジストリ値の取得/読み取り | |
<変数>.WMI | WMI 関連の関数 | |
<変数>.WMI.createProcess | 指定したプロセスを作成 | |
<変数>.shell | ファイル/プロセス実行に関連した関数 | |
<変数>.shell.run | コマンドの実行 | |
<変数>.shell.exec | プロセスの実行 | |
<変数>.file | ファイル関連の関数 | |
<変数>.file.getPath | ファイルパスの取得 | |
<変数>.file.readText | 指定したテキストファイルの読み込み | |
<変数>.file.get32BitFolder | システムフォルダの取得(32/64ビット) | |
<変数>.file.writol | 指定したファイルへの書き込み | |
<変数>.file.deleteFile | 指定したファイルの削除 | |
<変数>.file.readBinary | 指定したバイナリファイルの読み込み |
図 8:ダウンロードされた Koadic が実行するコマンド(<変数>.shell.exec の形式で利用)
Koadic が収集した情報に基づき、感染 PC を攻撃対象として判別した場合、Koadic はコマンド&コントロール(C&C)サーバから Base64 方式で暗号化された ANEL をダウンロードし、実行します。次に、暗号化された ANEL を「certutil -decode」コマンドによって復号します。ANEL が実行されると、“lena_http_dll.dll”というファイル名の復号された「ダイナミック・リンク・ライブラリ(Dynamic Link Library、DLL)」がメモリに展開されます。この DLL は、「crt_main」または「lena_main」のいずれかのエクスポート関数を含んでいます。
図 9:Koadic が Base64 方式で暗号化された ANEL をダウンロード
ANEL は感染 PC の環境情報を C&C サーバに送信します。この時、ANEL は、「Blowfish」、XOR、および Base64 の暗号化方式を使用して送信する情報を暗号化します。この手法は、ChChes に似ていますが、ANEL の暗号化方式はより単純化されています。
図 10:「blowfish」による暗号化に使用する暗号鍵 “this is the encrypt key”
トレンドマイクロが ANEL を初めて確認したのは 2017 年 9 月です。PC に侵入した ANEL はまず正規システムプロセス ”svchost.exe” にコードを注入します。このコードによって自身に埋め込まれているバックドア型マルウェアを復号し実行します。この初期バージョンの ANEL には「5.0.0 beta1」というバージョンがハードコードされており、不完全なコードも含まれていました。そのため、将来的に新しいバージョンが出現することが当時から予測されていました。
弊社が確認している ANEL のバージョンは以下の 4 種類です。
- 5.0.0 beta1
- 5.1.1 rc
- 5.1.2 rc1
- 5.2.0 rev1
各バージョンの違いは、ローダとメインの DLL です。各バージョンの違いは図 11 の通りです。
図 11:ANEL の各バージョンの違い
表 4 は、ANEL のバックドアコマンドをバージョンごとに整理した一覧です。
コマンド(CMD)ID | 5.0.0 beta1/5.1.1 rc/5.1.2 rc1 | 5.2.0 rev1 |
0x97A168D9697D40DD | ファイルの保存 | |
0x7CF812296CCC68D5 | ファイルのアップロード | |
0x652CB1CEFF1C0A00 | 無し | 新しい PE ファイルの読み込み |
0x27595F1F74B55278 | ファイルの保存と実行 | |
上記のいずれにも一致しない場合 | コマンドまたはファイルの実行 |
各バージョンで小さな変更が加えられていることが分かります。例えば、1 番目の「5.0.0 beta1」の C&C サーバは以降のバージョンとは異なります。2 番目の「5.1.1 rc」ではローダのファイル形式が DLL からEXE に変わり、C&C サーバも変更されています。その後、3 番目の「5.1.2 rc1」ではローダのファイル形式が DLL に戻り、C&C サーバには変更がありませんでした。4 番目の「5.2.0 rev1」では、メインの DLL のエクスポート関数と C&C サーバの両方が変更されています。以上より、ChessMaster の攻撃者は、段階的な変更を繰り返しながら ANEL を巧妙化させてきたことが分かります。
図 12:ANEL のバックドア機能の違い
ANEL 5.0.0 beta1、5.1.1 rc、5.1.2 rc1(左)
ANEL 5.2.0 rev1(右)
PC に侵入した ANEL は、不正活動のためにさまざまなツールをダウンロードします。“Getpass.exe” は Protected Storage やブラウザの情報を、”Mail.exe” はメールクライアントの情報を窃取するためのツールです。また、「DLLサイドローディング攻撃」または「DLLハイジャッキング」と呼ばれる良く知られた攻撃手法を利用して異なるバージョンの ANEL を実行するために、以下の 3つのファイルをダウンロードします。
- “accevent.exe” :「DLL サイドローディング攻撃」に利用するための正規ファイル。イベントを記録する Windows のツール「Microsoft Accessible Event Watcher 7.2.0.0」
- “event.dll”:”ssssss.ddd” のローダ(「TROJ_ANELLDR」として検出)
- “ssssss.ddd(lena_http.bin)”: 暗号化された「BKDR_ANEL」(「BKDR_ANELENC」として検出)
これら 3 つのファイルの中で、メインとなる実行ファイルは ”accevent.exe” です。通常は正規のファイルがそのまま利用されます。“accevent.exe” が実行されると、優先的に読み込ませるために同一フォルダ内に配置された ”event.dll” を読み込みます。次に、”event.dll” が暗号化されたバックドア型マルウェア ”ssssss.ddd” を復号し読み込みます。この “ssssss.ddd” は「BKDR_ANEL」でした。「ANEL 5.1.1 rc」を解析した際には、暗号化された「ANEL 5.1.2 rc1」がダウンロードおよび実行されました。
■被害に遭わないためには(短期的対策)
ユーザが DDEAUTO や リンクの自動更新を利用しているオフィス文書を開くと、下のようなメッセージが表示されます。この時、「いいえ(N)」や「無効にする(D)」をクリックすることで不正活動を防ぐことが可能です。
図 13:DDEAUTO 機能を利用したファイルを開いた際に表示されるメッセージ
図 14:リンクの自動更新機能を利用したファイルを開いた際に表示されるメッセージ
Koadic は JScript のコードを平文で送信するため、トラフィックを検出することが可能です。
図 15:Koadic の通信トラフィック
■被害に遭わないためには(中長期的対策)
一見すると、過去数カ月間の ChessMaster の変化は微妙な違いのように思われます。しかし、機能や侵入経路の変更が繰り返されてきたことを考えると、このキャンペーンの背後にいる攻撃者は今後もツールや手法を変化させ続けていくことが予想されます。企業や法人は、さまざまな対策技術を利用し、ベストプラクティスに従うことによって、今回のような標的型攻撃から自身を守る必要があります。脆弱性を利用した攻撃を防ぐためには、定期的に更新プログラムを適用し、さまざまなレベルにわたってネットワークを防御することのできるツールを利用してください。挙動監視、アプリケーションコントロール、メールゲートウェイの監視、そして侵入検知システムのような機能を持ったセキュリティ対策製品の採用を検討してください。
サイバー攻撃に利用されるツール、戦術、手法が日々変化していることを考慮すると、企業や法人は基本的なセキュリティ業務を越えて、先取りして攻撃を検知する方法を見つける必要があります。つまり、プロアクティブなインシデント対応戦略による脅威の検出と対処が求められます。このようなインシデント対応戦略には、効果的に脅威に対処するための復旧計画の立案や24 時間体制の侵入検知および脅威の解析などが含まれます。通常、標的型攻撃は容易に検出されないように設計されているため、プロアクティブな戦略が有効です。また、そのようなセキュリティ対策をより効果的に実施するためには、企業や法人において意志決定者と技術者が互いに情報を共有し、共通認識を持つ必要があります。
■トレンドマイクロの対策
トレンドマイクロの総合サーバセキュリティ製品「Trend Micro Deep Security™」や「Trend Micro Virtual Patch for Endpoint™」、ネットワーク脅威防御ソリューション「TippingPoint」は脆弱性を悪用する脅威からエンドポイントを保護します。
エンドポイントセキュリティ対策製品「ウイルスバスター™ コーポレートエディション XG」や中小企業向けのクラウド型エンドポイントセキュリティサービス「ウイルスバスター™ ビジネスセキュリティサービス」は、不正なファイルや関連した不正なURLをブロックし、個人ユーザおよび企業を脅威から守ります。
「ウイルスバスター™ コーポレートエディション XG」はクロスジェネレーション(XGen)セキュリティアプローチにより、グローバルスレットインテリジェンスに基づくさまざまな高度なセキュリティ技術に加えて、次世代の AI技術のひとつである高度な機械学習型検索を活用し、実行前・実行後両方に対応する独自のアプローチで、未知のファイルが脅威かどうか判別します。
ANELが通信するC&Cサーバの詳細な解析結果はこちらを参照してください。
■侵入の痕跡(Indicators of Compromise、IoC)
ChessMaster に関連するハッシュ値は以下の通りです。
- 76b1f75ee15273d1226392db3d8f1b2aed467c2875e11d9c14fd18120afc223a
- 4edcff56f586bd69585e0c9d1d7ff4bfb1a2dac6e2a9588f155015ececbe1275
- 1b5a1751960b2c08631601b07e3294e4c84dfd71896453b65a45e4396a6377cc
「BKDR_ANEL ファミリ」として検出されたマルウェアのハッシュ値は以下の通りです。
5.0.0 beta1
- af1b2cd8580650d826f48ad824deef3749a7db6fde1c7e1dc115c6b0a7dfa0dd
5.1.1 rc
- 2371f5b63b1e44ca52ce8140840f3a8b01b7e3002f0a7f0d61aecf539566e6a1
5.1.2 rc1
- 05dd407018bd316090adaea0855bd7f7c72d9ce4380dd4bc0feadc6566a36170
5.2.0 rev1
- 00030ec8cce1f21120ebf5b90ec408b59166bbc3fba17ebae0fc23b3ca27bf4f
lena_http.bin
- 303f9c00edb4c6082542e456a30a2446a259b8bb9fb6b0f76ff318d5905e429c
ChessMaster で利用されたツールのハッシュ値は以下の通りです。
Getpass.exe
- 52a8557c8cdd5d925453383934cb10a85b117522b95c6d28ca097632ac8bc10d
event.dll
- 6c3224dbf6bbabe058b0ab46233c9d35c970aa83e8c4bdffb85d78e31159d489
mail.exe
- 2f76c9242d5ad2b1f941fb47c94c80c1ce647df4d2d37ca2351864286b0bb3d8
ChessMaster に関連する URL および IP アドレスは以下の通りです。
- www[.]nasnnones[.]com
- trems[.]rvenee[.]com
- contacts[.]rvenee[.]com
- 91[.]207[.]7[.]91
- 89[.]18[.]27[.]159
- 89[.]37[.]226[.]108
- 185[.]25[.]51[.]116
- 185[.]81[.]113[.]95
- 185[.]144[.]83[.]82
- 185[.]153[.]198[.]58
- 185[.]159[.]129[.]226
参考記事:
- 「ChessMaster Adds Updated Tools to Its Arsenal」
by Tamada Kiyotaka and MingYen Hsieh
翻訳: 澤山 高士(Core Technology Marketing, TrendLabs)