Edge および Chrome の不正な拡張機能を確認、バックドア活動によりユーザの情報を窃取

トレンドマイクロは、弊社も提携している、マルウェアや URL を分析する無料オンラインスキャンサービス「VirusTotal」を利用してマルウェアのテストを行っていると見られる一連のファイル提出活動を確認しました。ファイル名や提出元情報から、これは明らかにモルドバ共和国の同一のマルウェア開発グループによるテスト目的の提出だと推測されます。提出されたファイルは、Java または JavaScript で作成されたマルウェアをダウンロードおよび実行するダウンローダ「DLOADR(ディーローダ)」(「JS_DLOADR」および「W2KM_DLOADR」として検出)で、迷惑メールに添付した不正な文書ファイルを介して拡散することを意図していたようです。

DLOADR がダウンロードするマルウェア(「TROJ_SPYSIVIT.A」および「JAVA_ SPYSIVIT.A」として検出)は、感染 PC を乗っ取るために正規の「Remote Access Tool(RAT)」である「VisIT」をインストールします。さらには、ユーザが Edge または Chrome ブラウザ上で入力した情報をバックドア活動によって窃取する不正な拡張機能もインストールします。

正規 RAT の認証情報を窃取して悪用する手口は新しいものではなく、以前にも、マルウェア「TeamSpy」を拡散する迷惑メール送信活動で確認されています。TeamSpy は、正規リモートデスクトップツール「TeamViewer」を悪用し、感染 PC を遠隔から操作するマルウェアです。このように、「Chrome WebDriver」や「Microsoft WebDriver」のようなオープンソースツール、そして正規「Application Program Interface(API)」の悪用は、新しい手口ではないものの、依然として確かな脅威となっています。

DLOADR から始まる攻撃の流れ

図 1:DLOADR から始まる攻撃の流れ

■不正なマクロによる拡散

DLOADR が埋め込まれたさまざまな不正文書を相関分析したところ、拡散手法に関していくつかの特徴を見つけることができました。例えば、不正文書のファイル名からは、このマルウェアがまだ開発段階にあることが分かります。また、ファイル名の中には、不正文書が利用するソーシャルエンジニアリングの手口を示すようなものも確認できました。以下は確認されたファイル名の一例です。

  • TEST1234.docm
  • Employment Application(2).dotm
  • tewst123.dotm
  • test2.docm
  • 123.doc
  • test1111.docm
  • t1.docm
  • INVOICE.docm
  • Invoice_Example.dotm
  • Doc1.docm
  • Fake Resume.doc
  • wwww.doc
  • zzzzz.dot

これらの文書ファイルには不正なマクロが埋め込まれており、中には難読化されているものもありました。不正なマクロの機能はすべて同一で、JavaScript ファイルの作成と実行です。この JavaScript は、ZIP 形式の圧縮ファイルをダウンロードおよび解凍し、内部に含まれた不正プログラムを実行します。不正プログラムは 2 種類確認されており、1 つはサーバサイド JavaScript 実行環境「Node.js」のアプリケーションで、もう 1 つはプログラミング言語「Java」で作成されたアプリケーションでした。

インボイスに偽装した文書ファイル、マルウェアが埋め込まれている

図 2:インボイスに偽装した文書ファイル、マルウェアが埋め込まれている

「enable editing(編集を有効にする)」ボタンをクリックするように促す不正な文書ファイル

図 3:「enable editing(編集を有効にする)」ボタンをクリックするように促す不正な文書ファイル

不正な文書ファイルに含まれていたマクロのコード

図 4:不正な文書ファイルに含まれていたマクロのコード

■Node.js アプリケーション

Node.js アプリケーションを含む ZIP ファイルには、図 5 のように複数のファイルが含まれています。

Node.js アプリケーションを含む ZIP ファイルの中身

図 5:Node.js アプリケーションを含む ZIP ファイルの中身

不正文書に埋め込まれたマクロは、まず「node.exe install.js」コマンドにより、インストールスクリプト “install.js” を実行します。”install.js” は、ユーザまたはユーザが所属するグループが管理者権限を持っているかどうかチェックし、”install.vbs” を呼び出します。次に、”install.vbs” が “install_do.js” を呼び出します。もし、このプロセスが管理者権限を持っていた場合、後からインストールする RAT との間のトラフィックを許可するためにファイアウォールにルールを追加します。また、ショートカットファイル(拡張子:LNK)を「Startup」フォルダに追加することで、持続的な活動を確立します。加えて、”install_do.js” は、感染 PC のブラウザ拡張機能ディレクトリに不正な拡張機能をインストールし、”timestamp.dat” ファイルを作成します。このファイルには、不正な拡張機能がインストールされた時刻のタイムスタンプの値が保存され、以降の攻撃で対象を一意に識別するために利用されます。

ファイアウォールにルールを追加するコード

図 6:ファイアウォールにルールを追加するコード

次に、“lnk_service.vbs” が ”service.js“ を実行します。この ”service.js“ には、オープンソースのヘルパーモジュール「node-bindings」を利用して、「app」と命名された Node.js のネイティブ拡張を読み込むコードが 1 行だけ書かれています。

Node.js のネイティブ拡張を読み込むコード

図 7:Node.js のネイティブ拡張を読み込むコード

■Node.js のネイティブ拡張が RAT を利用して感染 PC を乗っ取る仕組み

「build/app.node」に置かれたネイティブ拡張は、「taskkill /IM <終了させるプロセスのイメージ名>」コマンドを利用して現在開いているブラウザを閉じ、正規かつ署名済みの RAT 「VisIT 0.63」を実行します。

TeamViewer のように、「VisIT」は PC を識別するマシン ID とパスワードによって対象 PC の「Graphical User Interface(GUI)」を表示します。遠隔操作を行うユーザは、この ID とパスワードを対象 PC から受け取る必要があります。不正なネイティブ拡張は、VisIT のクライアントソフトウェアを実行しますが、画面は表示されません。なぜなら、不正なネイティブ拡張機能が VisIT のウィンドウ名「TFMain」を検索し、見つかった場合、「ShowWindow」API にパラメータ「SW_HIDE」を与えて実行することで当該ウィンドウを非表示にするためです。

図 8 は、「VisIT」の画面とウィンドウ構造です。赤枠で示した「TPanel」の子ウィンドウ「TMaskEdit」にはマシン ID が、「TMemo」にはパスワードが表示されていることが分かります。

RAT「VisIT」の画面(左)とウィンドウ構造(右)

図 8:RAT「VisIT」の画面(左)とウィンドウ構造(右)

図 9 は、「TFMain」ウィンドウを非表示にし、マシン ID とパスワードを読み取るコードです。具体的には、ウィンドウを非表示にした後、「FindWindowEx」APIを利用してマシン ID とパスワードを保持しているウィンドウを特定します。次に、「WM_GETTEXT」メッセージを送信することによりフィールドの値を読み取ります。読み取った 2 つの値はファイル “vnc_access.dat” に保存されます。

RAT の認証情報を取得するコード

図 9:RAT の認証情報を取得するコード

その後、ネイティブ拡張 ”app.node” は、 “vnc_access.js” を実行し、窃取した RAT の認証情報をコマンド&コントロール(C&C)サーバにアップロードします。マシン ID とパスワードを入手した攻撃者は、遠隔から感染 PC に接続し、完全に操作することが可能になります。

窃取した認証情報を C&C サーバにアップロードするコード

図 10:窃取した認証情報を C&C サーバにアップロードするコード

■Java アプリケーションが RAT を利用して感染 PC を乗っ取る仕組み

Java アプリケーションとして作成された不正プログラムは、以下のような手順で Node.js バージョンと同様の不正活動を実行します。Node.js バージョンとの違いは、Java で作成されているという点のみです。

  1. マクロが「javaapp.exe -jar elevate.jar & exit」コマンドを実行(不正な Java アプリケーションのファイル名は、Java を管理する「Oracle」の正規 Java アプリケーション実行プログラム ”javaw.exe” に変更)
  2. “elevate.jar ” が 「elevate.exe elevate.bat」コマンドを実行(”elevate.exe” は管理者権限でプログラムを実行するツール。リポジトリホスティングサービス「GitHub」で公開されているプログラムを参考に作成されたものと推測)
  3. “elevate.bat” が「javapp.exe -jar JavaApp.jar」コマンドを実行
  4. “JavaApp.jar” が Node.js の不正なネイティブ拡張 “app.node” 内の JavaScript や VisualBasic のスクリプトと同様の機能(ブラウザの再起動、不正な拡張機能のインストール、RAT のインストールおよび認証情報の窃取、持続的活動の確立)を実行

■バックドア機能を持つ不正なブラウザ拡張機能

不正な Node.js アプリケーションおよび Java アプリケーションのモジュールを解析する中で、これらのマルウェアが、Google Chrome と Microsoft Edge の両方のブラウザに不正な拡張機能をインストールすることを確認しました。これらの不正プログラムが、Chrome または Edge が開いていることを検知すると、元のブラウザのプロセスを停止し、新しいプロセスを起動して不正な拡張機能を読み込みます。この時、Chrome では、Web アプリケーションのためのテスト自動化ツール「Selenium」とコマンドライン引数を利用してセキュリティチェックを無効化し、不正な拡張機能を読み込みます。

不正な拡張機能を読み込むために新しい Chrome プロセスが作成される

図 11:不正な拡張機能を読み込むために新しい Chrome プロセスが作成される

この不正な拡張機能は Chrome 用ですが、Edge にも対応しています。この互換性は、Chrome 拡張機能を Edge に移植する開発者を支援するために Microsoft が 2017 年に導入した機能です。Edge に拡張機能を読み込む際にも Selenium が利用されます。

Edge 向けに移植された不正な Chrome 拡張機能

図 12:Edge 向けに移植された不正な Chrome 拡張機能

この不正な拡張機能はバックドアとして設計されており、ユーザが Web ページを開くたびに、Web サイトの URL と HTTP リファラ情報を C&C サーバに送信します。C&C サーバは、ブラウザの拡張機能上で実行される任意の不正コードを返信します。解析の間、C&C サーバから送り込まれるコードを確認することはできませんでした。

他にも、この拡張機能は、ボタンクリックやドロップダウンリストの項目選択、Web ページ内のフォームへの入力のような特定の操作を検知し、情報を窃取することが可能です。窃取した情報はすぐに C&C サーバに送信されます。このような挙動は Chrome と Edge の両方で確認されました。

ユーザの操作を検知し、情報を窃取するコード

図 13:ユーザの操作を検知し、情報を窃取するコード

■C&C 通信

図 14 は、感染 PC と C&C サーバ間の通信です。この通信は、窃取した情報を以下の平文のパラメータと共に POST リクエストで送信します。

  • deviceID:対象が感染した時刻のタイムスタンプ
  • url:ブラウザのアクティブなタブが現在開いている Web サイト

ユーザが訪問したすべての URL は C&C サーバのパス「/api/navigate/」に送信されます。図 14 はユーザが「google.com」にアクセスした際の通信です。

ユーザが Google.com にアクセスした際の C&C 通信

図 14:ユーザが Google.com にアクセスした際の C&C 通信(

ユーザが Web ページ上で入力した値は、C&C サーバのパス「/api/input/」に送信されます。図 15 は、ユーザが Google 検索を行った際の C&C 通信の例です。パラメータ「name」の値は検索ボックスの HTML 要素の ID で、パラメータ「value」は、検索ボックスに入力されたテキストです。この図の例では、検索語はハイライト部の「inputstring」という文字列です。

Google で文字列「inputstring」を検索した際の C&C 通信

図 15:Google で文字列「inputstring」を検索した際の C&C 通信

■被害に遭わないためには

今回のような脅威の性質と潜在的な影響力を考慮すると、法人および個人は、電子メール経由で拡散する脅威から自身を保護するためのベストプラクティスに従ってください。また、マクロの実行を禁止あるいは無効化する等、利用状況に合わせて Microsoft office のセキュリティ設定を有効化してください。

トレンドマイクロは、今回確認された脅威について Google と Microsoft に情報開示し、不正な拡張機能が Chrome および Edge のセキュリティに影響を与えないように協業しました。

「侵入の痕跡(Indicators of Compromise、IoC)」はこちらを参照してください。

■トレンドマイクロの対策

Trend Micro Hosted Email Security™」は、トレンドマイクロがクラウド上で運営しているサービスを利用するため、機能が継続的にアップデートされ、スパムメール、不正プログラム、スピアフィッシング、ランサムウェア、標的型サイバー攻撃などを常に最新の情報でブロックすることができます。

法人向けエンドポイント製品「ウイルスバスター™ コーポレートエディション XG」や中小企業向けのクラウド型エンドポイントセキュリティサービス「ウイルスバスター ビジネスセキュリティサービス」は、不正なファイルを検出し、関連する不正な URL をブロックすることによって、強固な保護を提供します。また、「Deep Discovery™ Email Inspector」は、不正な添付ファイルや URL を検出し、企業ユーザを保護します。

クロスジェネレーションで進化を続ける「XGen™セキュリティ」は、AI 技術をはじめとする先進技術と実績の高いスレットインテリジェンスを融合した防御アプローチにより、データを保管するサーバ、データを交換するネットワーク、データを利用するユーザの各レイヤーで最適化されたセキュリティを提供します。Web/URLフィルタリング、挙動解析、カスタムサンドボックスのような機能を備えたクロスジェネレーション(XGen)セキュリティアプローチは、既知または未知/未公開の脆弱性を狙い、個人情報の窃取や暗号化、不正な仮想通貨発掘活動を行う脅威をブロックします。XGen は「Hybrid Cloud Security」、「User Protection」、そして「Network Defense」へのソリューションを提供するトレンドマイクロ製品に組み込まれています。

参考記事:

翻訳: 澤山 高士(Core Technology Marketing, TrendLabs)