掲載日:2023/07/10

Shampoo: 新しいChromeLoaderキャンペーン

※ 本ブログは、2023年6月14日にHP WOLF SECURITY BLOGにポストされた Shampoo: A New ChromeLoader Campaign の日本語訳です。

 

イントロダクション

最近、HP Wolf Securityは、Shampooと呼ばれる悪意のあるChromeLoaderエクステンションを中心に構築された新しいマルウェアキャンペーンを検知しました。私たちはこのマルウェアキャンペーンを、Chromeエクステンションの名前にちなんでShampooと呼んでいます。ChromeLoaderは、セキュリティ研究者によって2022年初頭に初めて分析されたGoogle Chromeブラウザエクステンションマルウェアのファミリーです。その目的は、広告に使用される悪意のあるエクステンションをGoogle Chromeにインストールすることです。旧バージョンのChromeLoaderはとりわけ複雑な感染経路を持ち、被害者が違法コンテンツをホストするWebサイトから悪意のあるISOファイルをダウンロードすることから始まります。

Shampooキャンペーンで使用されたChromeLoaderは非常によく似ており、被害者を騙してWebサイトから悪意のあるVBScriptファイルをダウンロード、実行させ最終的に悪意のあるChromeブラウザエクステンションをインストールさせます。このエクステンションは、検索クエリなどの機密性の高い個人情報を収集し、検索をリダイレクトしたり、被害者のブラウジングセッションに広告を挿入したりします。このマルウェアには複数の永続化メカニズムがあるため、被害者はこのマルウェアを駆除するのに苦労しています。

ChromeLoader Shampooの感染チェーン概要 図1 - ChromeLoader Shampooの感染チェーン概要

 

 

感染チェーンの概要

感染チェーンの概要は以下の通りです。まず被害者は、多くの場合違法なコンテンツをホストしているWebサイトから、無料の映画やビデオゲーム、コンテンツのダウンロードを装った悪意のあるVBScriptをダウンロードします。このスクリプトはPowerShellスクリプトを実行し、感染を持続させるスケジュールタスクを設定します。このタスクは50分ごとにループするスクリプトを実行し、別のPowerShellスクリプトをダウンロードして実行します。このスクリプトは悪意のあるエクステンションをダウンロードしインストールします。Chrome セッションに接続されると、ChromeLoader Shampoo はコマンド&コントロール(C2)サーバーに機密情報を送信し始めます。

 

初期アクセス

このキャンペーンは、私たちが市中で確認したサンプルに基づくと、おそらく2023年3月初旬に開始されました。ユーザーは主に、映画(Cocaine Bear.vbs)、ビデオゲームやその他(Your download is ready.vbs)の違法コンテンツをダウンロードすることでこのマルウェアに遭遇します。これらのWebサイトは、被害者を騙してPC上で悪意のあるVBScriptを実行させ、感染チェーンのトリガーを引きます。

HP Sure Clickによって検知されたChromeLoader の VBScriptダウンロード 図2 - HP Sure Clickによって検知されたChromeLoader の VBScriptダウンロード
 ChromeLoader Shampoo の VBScriptを配布するWebサイト 図3 - ChromeLoader Shampoo の VBScriptを配布するWebサイト

 

 

ダウンロードしたVBSCRIPT

このダウンロードされたVBScriptをよく見ると、署名されてbase64エンコードされた2つのPowerShellスクリプトが含まれていることがわかります。各ファイルには、"pr "という名前のbase64エンコードされた文字列に一意の識別子が含まれています。このVBScriptは、base64エンコードされたPowerShellをデコードし、一意の識別子をスクリプトに追加しそれを利用して実行します。

 

Set so = CreateObject("WScript.shell")
Set ex = so.Exec("cmd.exe /c powershell -WindowStyle Hidden -")

 

このPowerShellスクリプトは、スケジュールされたタスクのセットアップを担います。最後に、VBScriptは自分自身を削除します。

 "Cocaine Bear.vbs" 図4 -図4 - "Cocaine Bear.vbs"

 

 

スケジュールタスク

ChromeLoader Shampooが実行する最初のPowerShellスクリプトは、50分ごとに起動する "chrome center" という名前のスケジュールタスクを設定します。この永続化メカニズムにより、再起動やセキュリティツールやユーザーによるスクリプトの強制終了にもかかわらず、マルウェアがアクティブな状態を維持できるようになります。また、タスクリストの登録も解除されます。これらのタスクには 例えば "chrome engine"、"chrome policy"、"chrome about "などのように、 "chrome_"というプレフィックスが付けられます。これは、おそらく同じマルウェアの以前のバージョンや競合バージョンを削除するためでしょう。

悪意のある "chrome_center "タスクを示すタスクスケジューラー 図5 - 悪意のある "chrome_center "タスクを示すタスクスケジューラー

 

正規の Google Chrome スケジュールタスクには通常、"Google "というプレフィックスが付くことを指摘しておきます。

 

インストールスクリプト

スケジュールされたタスクによって実行されるインストール スクリプトには、被害者固有の識別子が含まれています。このマルウェアは、この識別子を使用してPowerShellペイロードサーバーから別のbase64エンコードされたPowerShellスクリプトをダウンロードし、 "HKCU:\Software\Mirage Utilities\" という名前のレジストリキーに "Licence Protector" という値で格納します。インストール スクリプトは、ダウンロードしたスクリプトを読み込んで実行し、悪意のあるChromeエクステンションをロードします。インストールスクリプトはwhileループに含まれ、自身を35~75分ごとに繰り返します。

レジストリ値が既に存在し、ChromeLoader Shampooがダウンロードを実行できない場合、インストールスクリプトは "HKCU:\Software\Mirage Utilities\Licence Protector" にあるエクステンションローダースクリプトの実行を試みます。

エクステンションローダースクリプトを含むレジストリキー 図6 - エクステンションローダースクリプトを含むレジストリキー

 

PowerShellペイロードサーバーは、一意の識別子とインストールスクリプトからのネットワークリクエストの "User-Agent" ヘッダーをチェックします。

 

エクステンションローダースクリプト

エクステンションローダーは長いPowerShellスクリプトで、Chromeセッションでエクステンションをダウンロードしてセットアップします。  そのために、リモートWebサーバーからエクステンションを"%USERPROFILE%temp.zip "にダウンロードします。エクステンションは"%LOCALAPPDATA%"に解凍されます。このフォルダへの解凍に失敗すると、マルウェアは自身を"chrome_test"、さらに失敗すると"chrome_performance"に解凍しようとします。 ファイルを解凍した後、エクステンションローダースクリプトはtemp.zipを削除します。

悪意のあるブラウザエクステンションファイル 図7 - 悪意のあるブラウザエクステンションファイル

 

次に、スクリプトは既存のすべてのChromeウィンドウを閉じてから、このコマンドを使用してエクステンションをロードしたウィンドウを再度開きます:

 

Start-Process -FilePath <path to Chrome executable> -ArgumentList
--load-extension=<path to malicious extension>,
--restore-last-session, --noerrdialogs, --disable-session-crashed-bubble;

 

このコマンドはエクステンションを一時的にChromeにアタッチするだけです。このコマンドで起動したブラウザを閉じて、通常の Chrome セッションを開くと、エクステンションは存在しなくなります。この動作は、エクステンションの削除に成功したと被害者を欺くために使用できます。

 

エクステンション

このエクステンションは"Shampoo"と名付けられ、現在バージョン"18.0"とされています。これはChromeLoaderキャンペーンの名前の理由でもあります。

Shampooエクステンションのmanifest.json 図8 - Shampooエクステンションのmanifest.json

 

このエクステンションは高度に難読化されており、多くのアンチデバッグやアンチ解析のトラップを含んでいます。 作者は無料のオンラインJavaScript難読化ツールを使っているようです。

高度に難読化されたJavaScript(background.js) 図9 - 高度に難読化されたJavaScript(background.js)

 

機能

このエクステンションは以下の機能を持ちます:

 

  • アドレスバーの検索候補を無効にする。
  • 閲覧データやエクステンションデータを含むデータを定期的に C2 に送り返す。
  • Google、Yahoo、Bing の検索結果を C2 にリダイレクトする。(このエクステンションは、被害者を元の検索にリダイレクトすることが多い)
  • Chrome のローカルストレージに最後の検索クエリを記録する。
  • 被害者を chrome://settings にリダイレクトすることで、chrome://extensions にアクセスできないようにする。(被害者がエクステンションを削除できないようにするため)
被害者がchrome://extensionsにアクセスするのを妨げる難読化された関数(background.js) 図10 - 被害者がchrome://extensionsにアクセスするのを妨げる難読化された関数(background.js)

 

コマンド&コントロール

URI HTTPメソッド 目的
/redsync GET 認証
/sync?ext=Shampoo&ver=18.0&dd={id}&info={result from redsync} POST 認証
/cfg POST 代替ドメインを取得;暗号化された本体が必要
/int_params?ext=Shampoo&ver=18.0&dd=<id> GET パラメーターを取得
/int?ext=Shampoo&ver=18.0&dd=<id> POST パラメーターを送信
/hb?ext=Shampoo&ver=18.0&dd=<id> POST おそらくハートビート
/install?ext=Shampoo&ver=18.0&dd=<id> POST おそらくインストール成功のシグナル
/ad?ext=Shampoo&ver=18.0&dd=<id> GET このURLのタブを作成、おそらく広告を表示するために使用
/search?ext=Shampoo&ver=18.0&is=0&dd={id}&q={query} GET 検索をリダイレクトする際に使用
/ext?ext=Shampoo&ver=18.0&is=0&dd={id}&q={query} POST インストールされたエクステンションに関するデータをC2に送信

C2とのインタラクションはすべて保護され、認証cookie(csuという名前)を必要とします。その上、代替ドメインにアクセスするためのやり取りは、RC4だけでなくカスタムアルゴリズムを使って暗号化されています。C2とインタラクションする際、ChromeLoader Shampooは"/cfg "によって提供され更新されるリストからランダムにドメインを選びます。

本稿執筆時点で、このリクエストによって返された利用可能なドメインは以下の通りです:

 

  • wedonhissw[.]com
  • edrubyglowe[.]com
  • entxviewsinterf[.]com
  • oftheappyri[.]com

 

すべてのコマンドは、これらのドメインとIOCセクションに記載されている他のドメイ ンの多くで実行することができます。URLに"/int_params "から受け取ったパラメーターのいずれかが含まれている場合、タブの内容は"/int "を使用してC2に送り返されます。この記事を書いている時点では、以下がそれに該当します:

 

  • js?id=
  • shu=
  • survey
  • zoneid=
"/int_params "から受け取ったパラメーター 図11 - "/int_params "から受け取ったパラメーター

 

リダイレクト

以下の文字列を含むタブは、クエリがローカルに保存され、タブはC2にリダイレクトされます:

 

  • “google” and “search” and “q=” and not “complete”
  • “yahoo” and “p=” and not “sugg”
  • “bing” and “search” and “q=” and not “suggestions”

 

私たちの調査では、検索エンジンの種類に関係なくBingにリダイレクトされることが多くありました。

 

暗号化

C2に送信されるデータやローカルに保存されるデータのいくつかは、RC4とカスタム暗号化スキームを使って暗号化されます。カスタムスキームは、ランダムなバイトからなる20~30個の長い鍵を生成し、それとメッセージをXORすることで構成されます。 暗号化されたメッセージは以下のようにフォーマットされます:

 

  • {key length}{key}{xored output}

カスタム暗号化関数(background.js) 図12 - カスタム暗号化関数(background.js)

 

以下のRC4鍵が使用されます:

ローカルに保存されるデータ atob("TJMdlkerr3DXCZvo8iTuefuXc6zEoNCTZR9U7vFQu1Q=");
C2に送られるデータ(具体的には /cfg) atob("Pnm+erhger+QrmNR21uZ2zdzTuKErEyqHOoJAwW12Wc=");
 RC4鍵と個人識別子(background.js) 図13 - RC4鍵と個人識別子(background.js)

 

ローカルストレージ

"/ad "と"/int_params "の結果は、それぞれ "ad "と "par "という名前でローカルに保存されます。さらに、最後のクエリは”lastQuery”という名前で保存されます。ローカルに保存されるデータは、Chromeのローカルストレージに”qw11gi2cx1as68etu”という鍵で暗号化されて保存されます。

background.js 図14 - background.js
 Chrome DevToolsに表示されるShampooのローカルストレージ 図15 - Chrome DevToolsに表示されるShampooのローカルストレージ

 

 

CHROMELOADERとの類似性

このキャンペーンは、その感染チェーン、分布、そして目的の点で、ChromeLoaderと非常によく似ています。私たちがこのキャンペーンで分析したShampooエクステンションと一般に分析情報が公開されているChromeLoaderのバージョンとの間には、数多くのコードの類似点があります。 

興味深いことに、私たちはShampooのタイプミスが、古いバージョンのChromeLoaderのタイプミスと似ていることにも気づきました。これらの類似点から、私たちはShampooがこのキャンペーンで使用されたChromeLoaderの亜種であると確信を持っています。この亜種の収益化の手法は、公に報告されている他のChromeLoaderの亜種と一致しています。 すなわちそれは、リダイレクトによる広告です。

 Shampoo 図16 - Shampoo
G DATAが分析したChromeLoaderサンプル 図17 - G DATAが分析したChromeLoaderサンプル
難読化解除されたChromeLoader Shampooコードのタイプミス 図18 - 難読化解除されたChromeLoader Shampooコードのタイプミス

 

CHROMELOADERの評価

Shampooと以前のバージョンのChromeLoaderとの間には、いくつかの細かな違いがあります。それらは:

 

  • 新しい"/int" と "/int_params" 
  • 新しい暗号。
  • このキャンペーンでの配信ファイルタイプは、ISOアーカイブの代わりにVBScript。

 

このような些細な違いはあるものの、ほとんどのエンドポイントは旧バージョンと同じ名前を共有しています。

 

侵害の痕跡(IoC)

URL

mysitesext[.]com エクステンションC2
worldtimesext[.]com エクステンションC2
cesprincipledecli[.]com エクステンションC2
dogsfanext[.]com エクステンションC2
raconianstarvard[.]com エクステンションC2
ghtsustachedstimaar[.]com エクステンションC2
entxviewsinterf[.]com エクステンションC2
disguishedbriting[.]com エクステンションC2
gingleagainedame[.]com エクステンションC2
ebruisiaculturerp[.]com エクステンションC2
dprivatedqualizebr[.]com エクステンションC2
alfelixstownrus[.]com エクステンションC2
ticalsdebaticalfelixs[.]com エクステンションC2
edeisasbeautif[.]com エクステンションC2
dmiredindee[.]com エクステンションC2
sverymuchad[.]com エクステンションC2
swordhiltewa[.]com エクステンションC2
wedonhissw[.]com エクステンションC2
ndalargere[.]com エクステンションC2
wobrightsa[.]com エクステンションC2
yeshehadtwo[.]com エクステンションC2
sapphiresan[.]com エクステンションC2
oldforeyes[.]com エクステンションC2
vesoffinegold[.]com エクステンションC2
rwiththinlea[.]com エクステンションC2
ildedalloverw[.]com エクステンションC2
rincelewasgi[.]com エクステンションC2
oftheappyri[.]com エクステンションC2
dthestatueof[.]com エクステンションC2
ighabovethe[.]com エクステンションC2
cityonatall[.]com エクステンションC2
olumnstoo[.]com エクステンションC2
tropicalhorizonext[.]com エクステンションC2
edrubyglowe[.]com エクステンションC2
herofherlittl[.]com エクステンションペイロードサーバー
andhthrewdo[.]xyz PowerShellペイロードサーバー

 

レジストリ

  • HKCU:\Software\Mirage Utilities\Licence Protector

 

フォルダー

  • %LOCALAPPDATA%\chrome_display\
  • %LOCALAPPDATA%\chrome_test\
  • %LOCALAPPDATA%\chrome_performance\

 

ハッシュ

ほとんどのスクリプトには、被害者ごとに変わる一意の識別子が含まれているため、ハッシュによるChromeLoaderの検知は効果がありません。

Cocaine Bear.vbs eaf8a42542aa5b50c557010b00e00533561bac8a8520f94e718d9c20db7d52ef
Background.js cdb89fa263f512d396020efee1396dc1ac2eda17f4d5a2f7c0177d4a1d8b9744

 

 

MITRE ATT&CK テクニック

  • User Execution: Malicious Link (T1204.001): Shampooは被害者が最初に悪意のあるリンクをクリックすることを要求します。
  • User Execution: Malicious File (T1204.002): Shampooは被害者が悪意のあるダウンロードしたファイルを実行することを要求します。
  • Obfuscated Files or Information: Embedded Payloads (T1027.009): Shampoo VBScriptにはPowerShellスクリプトが埋め込まれています。
  • Command and Scripting Interpreter: Visual Basic (T1059.005): ShampooはVBScriptを使ってコードを実行します。
  • Command and Scripting Interpreter: PowerShell (T1059.001): ShampooはPowerShellを使ってコードを実行します。
  • Scheduled Task/Job: Scheduled Task (T1053.005): Shampooは永続化のためにスケジュールされたタスクを設定します。
  • Browser Extensions (T1176): Shampoo は Chrome に悪意のあるエクステンションをアタッチします。
  • Debugger Evasion (T1622): Shampooのエクステンションには複数のアンチデバッグトラップが含まれます。
  • Application Layer Protocol: Web Protocols (T1071.001): Shampooが送受信するデータやファイルは標準的な方法でHTTPSを使用します。
  • Data Encoding: Non-Standard Encoding (T1132.002): Shampooは送信データと保存データを保護するために独自のxorスキームを使用します。
  • Data Encoding: Standard Encoding (T1132.001): ShampooはRC4を使って送信および保存データを保護します。

 

Author : Jack Royer

監訳:日本HP