Windowsインストーラを悪用し不正コードを実行する手法を解説

Windowsインストーラは、プログラムをインストールするために、「Microsoft Software Installation(MSI)」パッケージファイルを使用します。各パッケージファイルには、プログラムのインストールまたは削除に必要な指示とデータを格納するリレーショナルタイプのデータベースが含まれています。

トレンドマイクロは、2019年4月、従来のセキュリティソリューションを回避し、他のファイルをダウンロードして実行する不正なMSIファイルを確認しました。攻撃者はこれらのMSIファイルのカスタムアクションを利用して、不正なスクリプトの実行やマルウェアの作成を行います。この手法を利用するマルウェアの1つは、特定のフォルダをチェックすることで対象とする銀行システムの有無を判定し、キー入力のようなイベントを待機して不正活動を行うものでした。また、再起動時に自身を実行し活動を持続する機能も備えていました。

■不正なMSIファイルの解析

トレンドマイクロは、不正なMSIファイル(拡張子:msi)のいくつかの検体の中で「JScript」および「VBScript」のコードを確認しました。スクリプトはその一部が削除されているように見えましたが、断片がファイルのその他の部分に分散していました。そのため、この不正なスクリプトを実行するためにスクリプト実行環境「wscript.exe」が直接実行されることはありません。というのも、通常、「JScript」および「VBScript」を実行する際、スクリプト実行環境「wscript.exe」が使われますが、インストーラ「msiexec.exe」自体がスクリプトを処理するインタプリタを備えているためです。

図1:断片化したJavaScriptのコードを含むMSIファイル
図1:断片化したJavaScriptのコードを含むMSIファイル

トレンドマイクロは、MSIファイルを編集するツール「Orca MSI Editor」を使用し問題のファイルを解析しました。これを使用することで、MSIファイルの情報を確認し、「CustomAction」テーブルを表示して問題のスクリプトを見つけることができます。カスタムアクションテーブルを使用すると、カスタムコードとデータをインストールに統合できます。つまり、インストール時に、カスタムアクションに設定したコードの実行が可能になるということです。実行されるコードのソースには、特定のデータベース内からのストリーム、インストールされたファイル、または既存の実行可能ファイルを指定することが可能です。CustomActionテーブルは、カスタムアクションの詳細情報を定義した「Action」、「Type」、「Source」、「Target」、そして「ExtendedType」という列を持っています。

図2 :「Orca MSI Editor」で表示したJavaScriptのコードを含む「CustomAction」テーブル
図2 :「Orca MSI Editor」で表示したJavaScriptのコードを含む「CustomAction」テーブル

不正なJavaScriptのコード

不正なJavaScriptのコード(「Trojan.JS.MSAIHA.SM」として検出)は、ファイルをダウンロードするためにURL「hxxps[:]//s3-eu-west-1[.]amazonaws[.]com/<ランダムな文字列>/image2[.]png」にアクセスします。ダウンロードしたファイルは、以下のいずれかのフォルダに保存されます。

  • %User Startup%\
  • %User Profile%\Saved Games
  • %User Profile%\Contacts
  • %User Profile%\Links
  • %User Profile%\Music

この「image2.png」はZIPファイルです。含まれている「.exe」、「.msi」、または「.dmp」ファイルには、「jesus」または「dump」というファイル名を使用します。「.txt」ファイルの場合、「desktop.txt」、「desktop」、または「desktop.ini」のいずれかとなります。このマルウェアはシステムをシャットダウンする機能も備えています。

不正なPowerShellのコード

不正なPowerShellのコード(「Trojan.PS1.MASAIHA.SM」として検出)を含む検体も確認されました。トレンドマイクロによる解析の時点では、この不正なPowerShellのコードに関連するURLは稼働中でした。この検体は、ファイル「%Application Data%/<yyyyMM>.ini」が見つかった場合、不正な機能は続行せず、代わりに感染の指標としてファイルを作成することを確認しました。また、XOR方式で暗号化された「.zip」ファイルをダウンロードし、ハードコードされた鍵「0x29」を使用して復号します。

「.zip」ファイルには、以下のファイルが含まれています。

  • 「iLua.inf」
  • 「msvcr120.dll」
  • 「msvcp120.dll」
  • セキュリティ企業「Avira」によってデジタル署名されたファイルなどの通常のファイル
  • 「AutoIt」関連のファイル
  • 暗号化されたダイナミック・リンク・ライブラリ(DLL)

以下の図3は実際の「.zip」ファイルの内容を示しています。

図3: 「Microsoft」フォルダに保存された「.zip」ファイルの内容
図3: 「Microsoft」フォルダに保存された「.zip」ファイルの内容

以下の図4のように、この不正なPowerShellのコードは、Windowsの自動操作のために使用される無料のプログラミング言語「AutoIt」のスクリプトをパラメータを使用して実行し、以下の手順を実行します。

  1. 「Jlib.dll」を読み込む(ただし、復号しないため読み込みには失敗)
  2. 「context_snapshot.exe」を実行(Avira製ソフトウェアのコンポーネント「Avira.SystrayStartTrigger.exe」)

図4:不正なPowerShellのコードが「context_snapshot.exe」を実行
図4:不正なPowerShellのコードが「context_snapshot.exe」を実行

ここで、上の図3において「v8_context_snapshot.src」と示されるAutoItスクリプト(「Trojan.AutoIt.AUTINJECT.AA」として検出)はパスワードで保護されています。そのため、トレンドマイクロは、パスワードを推測したり、パス名やその他の情報を生成したりするためのツールである、修正された「myAut2Exe」を実行しました。

ファイルを復号したところ、オンラインで入手可能なAutoItスクリプトを修正して利用していることが確認されました。このオンラインで入手可能なAutoItスクリプトは、DLLをメモリに読み込むために使用されます。さらに、最終的にメモリに読み込むDLLを追加し、Avira製ソフトウェアのコンポーネント「context_snapshot.exe」を実行するための関数をメモリから呼び出します。これにより、ユーザに、Avira製ソフトウェアのMSIファイルを実行していると思い込ませます。以下の図5、6はその様子を示しています。

図5:「v8_context_snapshot.src」のログ出力
図5:「v8_context_snapshot.src」のログ出力

図6: スクリプトに埋め込まれたDLLによって実行される「Avira」実行ファイル
図6: スクリプトに埋め込まれたDLLによって実行される「Avira」実行ファイル

トレンドマイクロはこの解析結果をAviraに共有し、以下のような回答を受けました。

「マルウェアは、不正なコードを通常のインストールプロセスに読み込むために、Aviraの実行ファイルの1つを利用しています。これは、正規プロセスの中で不正なコードを実行しセキュリティソリューションを回避することを可能にするためです。通常のインストールのシナリオにおいて、もしファイルがデジタル署名されていない場合、Aviraのプロセス保護はサイドローディングを行うサードパーティ製コンポーネントを許可しません。Aviraのプロセスが確実に不正使用されないようにするために、Aviraは解析と必要な対策を講じます。」

■ブラジルとポルトガルの銀行ユーザを狙う検体

「Trojan.PS1.MSAIHA.SM」に関連する他の検体では、前述の「.zip」ファイルをダウンロードするために、対象PCを再起動してオンラインストレージサービス「Dropbox」のリンクを利用することが確認されています。ブラジルの銀行に関連した以下のフォルダ名をチェックする検体も確認されています。パスが存在した場合、マルウェアはその機能を続行します。

  • %Application Data%\Local\Aplicativo Itau(ブラジルの銀行に関連)
  • %Program Files%\AppBrad(ブラジルの銀行および金融サービス企業に関連)
  • %Program Files%\Diebold\Warsaw(金融および小売技術企業に関連)

(注:「%Application Data%」は現在ログオンしているユーザのアプリケーションデータフォルダです。「%Program Files%」はプログラムファイルのフォルダです。)

以下の図7では、この検体が利用するMSIファイルは、正規のPDF閲覧ソフトに偽装していました。

図7:正規PDF閲覧ソフトに偽装したファイルのポップアップウィンドウ
図7:正規PDF閲覧ソフトに偽装したファイルのポップアップウィンドウ

このファイルは、MSIファイルが正規のものと思い込ませるために、ユーザを上記PDF閲覧ソフトのポルトガル語版サイトにリダイレクトさせます。

図8:MSIファイルはユーザをポルトガル語のサイトにリダイレクト
図8:MSIファイルはユーザをポルトガル語のサイトにリダイレクト

また、トレンドマイクロは解析の中、「Trojan.PS1.MSAIHA.SM」に関連した図9で示されているスパムメールを確認しました。

図9:「.zip」ファイルが添付されたスパムメール
図9:「.zip」ファイルが添付されたスパムメール

メールにはポルトガル語で簡潔に書かれたテキストが含まれていて、受信者に対して、添付ファイルを指して緊急にそれを処理するよう求めています。このメールには「Fatur432952-532-674.zip」という名前の「.zip」ファイルが添付されています。この「.zip」ファイルには、MSIファイルが含まれており、実行すると図10のスクリプトによってこの活動の一部であることが確認された不正なURLの1つからファイルをダウンロードします。図10に示されているURLの「image2.png」は、実際は「.zip」ファイルです。

図10:「.zip」ファイルをダウンロードするスクリプト
図10:「.zip」ファイルをダウンロードするスクリプト

この「.zip」ファイルには、以下のものが含まれます。

  • 「dump.msi」(「Trojan.JS.MSAIHA.SM」として検出)
  • 「dump.exe」(「TrojanSpy.Win32.CASBANEIRO.XLB」として検出)
  • 「ssleay64.dll」(「TrojanSpy.Win32.CASBANEIRO.XLB」として検出)

図11:スパムメールに添付されていたMSIの不正活動
図11:スパムメールに添付されていたMSIの不正活動

不正なペイロードは、訪問者の位置情報を提供するAPI「hxxps[:]//www[.]localizaip[.]com[.]br/api/iplocation[.]php」にアクセスし、国コードをチェックすることでブラジルとポルトガルを標的にしています。続いて、オンライン銀行サービスや金融情報、さらにはキー入力のような特定のイベントの発生を待機します。

図12:実行された「dump.exe」の処理の流れ
図12:実行された「dump.exe」の処理の流れ

作成されたウィンドウのコールバック関数に含まれる文字列を復号したところ、ブラジルの金融機関の名称と思われる文字列やパスワードを意味するポルトガル語の単語が確認されました。以下は復号された文字列の一覧です。

  • AMARELO_PASS_6
  • AMARELO_PASS_8
  • AMARELO_PASS_CERT
  • AMARELO_QR
  • AMARELO_CERT_SIMPLES
  • AMARELO_PASS_SIMPLES
  • AMARELO_PASS_QR
  • SICREDI_ASS
  • SICREDO_TOKEN_FISICO
  • SICREDO_TOKEN_MOB
  • SICREDO_PASS_QR
  • SANTA_ASSI_ELECTRO
  • SANTA_TOKEN
  • SANTA_N_SERIE
  • SANTA_PASS_QR
  • SANTA_POS_TABELA
  • CEF_ASS_NUMERO
  • CEF_ASS_NUMER0_LETRAS
  • CEF_PASS_QR
  • NORD_POS_CARTAO
  • NORD_PASS_QR
  • BANESTER_CERTIFICADO
  • BANESTES_COD_ACCESSO
  • BANESTES_PASS_QR
  • BANRI_SENHA
  • BANRI_SENHA_TECLADO
  • SAFRA_TOKEN_MOB
  • SAFRA_TOKEN_DISPLAY
  • SAFRA_SENHA_TECLADO
  • SAFRA_PASS_QR
  • DESCO_POS_TABELA
  • DESCO_CERT
  • DESCO_TOKEN_6
  • DESCO_TOKEN_8
  • DESCO_PASS_QR
  • DESCO_CEL_VISOR
  • DESCO_PISCA
  • BRB_CODIGO
  • BRB_SENHA_TECLADO
  • BRB_PASS_QR
  • ITA_DATA
  • ITA_SENH6
  • ITA_TOKAPP
  • ITA_TOKCELL
  • ITA_QR


■MSIのカスタムアクションを悪用する手法

開発者は、インストールの実行のために、標準的に組み込まれたアクション以外のカスタムアクションを作成する必要がある場合があります。Microsoftはカスタムアクションが必要となる場合として以下のシナリオを挙げています

  • ユーザーのマシンにインストールされた、またはアプリケーションと一緒にインストールする実行可能ファイルをインストールプロセス中に起動する必要がある場合。
  • DLLで定義された特別な関数をインストールプロセスの間に呼び出す必要がある場合
  • インストールプロセスの間に、プログラミング言語「Microsoft Visual Basic Scripting Edition」または「Microsoft Jscript」で記述された関数を使用する必要がある場合
  • いくつかのアクションをインストールスクリプトの実行まで延期する必要がある場合
  • 「ProgressBar」や「TimeRemaining Text」を制御することにより時間と進行状況の情報を追加したい場合

しかしながら、これらの状況の結果として、1番目と2番目のシナリオでの悪用も、巧妙なマルウェアでは起こりそうにありません。

下の図13のVBScriptを含む別の検体を解析した結果、マルウェアの作成者はWindowsのインストールパッケージを作成するアプリケーション「Advanced Installer」を使用してサンプルを作成したとトレンドマイクロは推測しています。なぜなら、ログやプロセスを閲覧する目的でPowerShellスクリプトを実行するためには「powershellscriptlauncher.dll 」のようなサードパーティのライブラリが必要であるからです。

図13:CustomActionにVBScriptが含まれる検体(Orca MSI Editorの表示)
図13:CustomActionにVBScriptが含まれる検体(Orca MSI Editorの表示)

トレンドマイクロは、Advanced Installerを使用して、JavaScript、VBS、およびPowerShellスクリプトの実行やライブラリの読み込みなどの、検体のカスタムアクションを追加または変更することができました。これは、通常のMSIパッケージを簡単に修正して不正なプログラムを挿入することができるように、機能を悪用しようとしている攻撃者にとって、都合よく利用される可能性があります。以下の図14~16はその様子を示しています。

図14:「Advanced Installer」のカスタムアクション追加画面
図14:「Advanced Installer」のカスタムアクション追加画面

図15:既存のおよび新規に作成されたPowerShellスクリプトを示すカスタムアクション
図15:既存のおよび新規に作成されたPowerShellスクリプトを示すカスタムアクション

図16: PowerShellスクリプトを実行するための新しいカスタムアクションの追加
図16: PowerShellスクリプトを実行するための新しいカスタムアクションの追加

このマルウェアは、「DLLサイドローディング」によって複数のコンポーネントを利用するマルチコンポーネント(DLLサイドローディング)構造のマルウェアを含む圧縮ファイルをダウンロードします。

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

トレンドマイクロは以前にもMSIを悪用してマルウェアをインストールする攻撃について報告していますが、そのような手口は通常、ユーザが望まないアプリケーション「PUA(Potentially Unwanted Application)」のインストールに利用されており、必ずしもマルウェアの作成が目的というわけではありません。しかし、本記事で解説したような手口と合わせて、注意が必要な仕組みだと言えます。なぜなら従来のMSIパッケージとカスタムアクションを利用したマルウェアのインストールは、注意が必要な仕組みです。従来のインストール方法しか検出しないセキュリティソフトウェアを回避する目的で、攻撃者がMSIパッケージとカスタムアクションを利用する可能性があるためです。

本記事で紹介したマルウェアの作成者は、マルウェアを拡散させるさまざまな手法をテストしていたと考えられます。さらに、スパムメール本文の言語、リダイレクトさせるサイト、存在を確認するフォルダなどからブラジルとポルトガルにいるユーザに狙いを絞っていたと考えられる検体も確認されました。脅威を防ぐための最初のステップとして、以下のベストプラクティスを講じることを推奨します。

  • 未知のファイルをインストールすることを避けること
  • 不正なファイルをダウンロードさせるサイトへとリダイレクトされる可能性のあるURLをクリックしないこと
  • 最新のセキュリティパッチを適用してシステムを更新すること
  • セキュリティ対策製品を採用し脆弱性などを利用する攻撃を防ぐこと

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

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

この脅威に関連する侵入の痕跡(IoC)の一覧は、こちらを参照してください。

参考記事:

調査協力: Henry Alarcon Jr., John Rey Cañon, and Jay Nebre
翻訳: 下舘 紗耶加(Core Technology Marketing, TrendLabs)