ウクライナ警察を装うフィッシング、SVGファイル悪用で感染広がる

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「SVGフィッシングでウクライナを攻撃:Amatera StealerとPureMiner利用」を再編集したものです。

影響を受けるプラットフォーム:Microsoft Windows
影響を受けるユーザー:あらゆる組織
影響:被害者のデバイスをリモート制御し、機密情報の収集、コンピュータリソースの乗っ取り、追加のマルウェア配信を実施
深刻度:高

 FortiGuard Labsは最近、ウクライナの政府機関になりすまし、標的のシステムに追加のマルウェアを配信するよう設計されたフィッシングキャンペーンを確認しました。このフィッシングメールには悪意のあるSVG(Scalable Vector Graphics)ファイルが含まれており、受信者を騙して有害な添付ファイルを開かせるよう設計されています。

 このSVGファイルを開くと、パスワード保護されたアーカイブのダウンロードが開始され、中にCHM(Compiled HTML Help)ファイルが含まれています。このCHMファイルは、HTA(HTML Application)のCountLoaderを通じて悪意あるアクションチェーンをトリガーし、最終的に、被害者のマシンに複数タイプのマルウェアをインストールします。

 このキャンペーンでは、Amatera StealerとPureMinerがファイルレス脅威として展開されます。これらの脅威は、.NETのAOT(Ahead-of-Time)コンパイルを使用して実行され、プロセスホローイングを利用するか、PythonMemoryModuleを使用してメモリに直接読み込まれ、最終的なペイロードが配信されます。

図1:攻撃チェーン

 本ブログでは、本マルウェアの配信方法について詳しく説明し、キャンペーンで使用されるAmatera StealerとPureMinerの分析を行います。

初期アクセス

 このフィッシングキャンペーンは、ウクライナの国家警察からの通知を装った偽のEメールから始まります。Eメールには、悪意のあるSVGの添付ファイルが含まれています(図2)。メッセージには、審査の申し立てが提出されたと記載されており、通知を無視した場合、さらなる法的措置を行う可能性があると警告しています。テキストは一般的ですが、正式で法的に聞こえる文言が使用されており、受信者に圧力をかけて添付ファイルを開かせます。

図2:フィッシングメール

 添付ファイル名は「elektronni_zapit_NPU.svg」で、外部SVGリソースを参照するHTML<iframe>要素が埋め込まれています(図3)。

Figure 3: Malicious SVG file

 2番目のSVGが読み込まれると、Adobe Readerになりすましたインタフェースが開き、メッセージ「お待ち下さい。ドキュメントを読み込んでいます...」 とウクライナ語で表示されます。次に、被害者はダウンロードページに自動的にリダイレクトされ、パスワード保護されたアーカイブを取得し、それを抽出するためのパスワードが表示されます(図4)。

図4:Adobe Readerになりすましたインタフェース

 ダウンロードされたアーカイブには、CHM(Compiled HTML Help)ファイルが含まれています。調査員はこのCHMの中に、ショートカットオブジェクトを含む悪意のあるHTMLファイルを発見しました(図5)。このオブジェクトのClickメソッドを使用すると、HTA(HTML Application)のリモートリソースを実行するコマンドが非表示モードで実行されます。

図5:CHMから抽出された悪意のあるHTMファイル

CountLoader

 HTAファイルの関数は標準的なWebページと非常に似ていますが、ActiveXコントロールにアクセスする機能も備えています。このケースでは、コードは、その目的を隠蔽するために、文字列エンコーディングと配列シャッフルを使用して意図的に難読化されます(図6)。

図6:コードの難読化解除前と難読化解除後のバージョン

 スクリプトの主な役割は、リモートサーバーとの接続を確立し、ペイロードの次の段階を待つことです。接続が確立されると、マルウェアは被害者のシステムから情報を収集し、XorBase64エンコーディングを使用して難読化した後、HTTP POSTリクエストで送信します。その後、ローダーは、エンコードされたgetUpdatesメッセージを送信し、サーバーから追加のコマンドを取得します(図7)。

図7:CountLoaderのコアルーチン

 デコードされたレスポンスメッセージは、以下に示す形式に従います。

[{"id":{ID},"url":“{URL}","taskType":{COMMAND ID}}]

 このローダーは6つのコマンドをサポートしており、複数の形式でペイロードをダウンロードして実行し、ドメインの偵察を実施し、活動の痕跡を削除することができます。

表1:サポートされるコマンド

 このキャンペーンでは、Amatera StealerとPureMinerの両方を配信するためにローダーが使用されます。関連する最近のキャンペーンではAmatera Stealerのみ配信されましたが、配信段階では、より強力な難読化技術が使用されていました。

 次のセクションでは、ダウンロードした2つのZIPアーカイブとそのペイロードを調べます。

ergosystem.zipがPureMinerを展開

 ダウンロードされたZIPアーカイブのergosystem.zipには、1つの実行可能ファイルと複数のDLLライブラリが含まれています(図8)。この段階でDLLサイドローディングが使用され、信頼できる実行可能ファイルを通じて悪意のあるDLLがロードされます。ペイロードが.NETに実装され、AOT(Ahead-of-Time)コンパイルが使用されます。

図8:ergosystem.zipアーカイブのファイル

 ペイロードは、最初は暗号化された形式で.rdataセクション内に格納されます。復号化後、ペイロードはプロセスホローイングを使用して、新しく作成された.NET Frameworkツールプロセスに注入されます。これにより、ペイロードは正規のプロセスに偽装して実行することができます。

 復号化されたペイロードは、ステルス型の暗号通貨マイナーであるPureMinerだと識別されました。PureMinerは、ビデオアダプタの仕様やユーザー詳細を中心としたシステム情報を収集し、攻撃者の構成に応じてCPUベースまたはGPUベースのマイニングモジュールを展開できます。

図9:PureCoderのWebサイトにある最新のPureMiner製品画像

 Pureマルウェアファミリーの他のメンバーと同様、実行可能ファイルが実行されると、埋め込まれたデータを復号化し解凍した後、メモリにロードされます。最初に解析される要素は、Protobufのシリアル化構成で、ハードウェアチェック、プロセス注入、コマンド&コントロール(C2)情報の取得などの機能を実現します(図10)。

図10:Main関数と構成

 PureMinerはハードウェア仕様を収集するために、AMD Display Library(atiadlxx.dll / atiadlxy.dll)とNVIDIAライブラリ(nvapi.dll / nvapi64.dll)のAPIを使用します。これらのAPIは、合計メモリ、利用可能なメモリ、および現在使用中のメモリに関する詳細を返します(図11)。また、システムレジストリから直接、ビデオアダプタ情報をクエリします(図12)。マイニングを開始する前に、同マルウェアは、対象システムのメモリが少なくとも4 GBあることを確認します。

図11:AMD / NVIDIAライブラリから取得したアダプタライブラリ

図12:レジストリから取得したアダプタの詳細

 初期化が完了し、プロセス名が検証されたら、同マルウェアはC2サーバーに接続し、被害者の情報をシリアル形式で送信し、さらなるシリアルコマンドを待機します。すべての通信は3DESで暗号化されます(図13)。

図13:C2サーバーに送信される情報

 受信した命令に応じて、PureMinerは以下を実行できます。

・ダウンロードしたペイロードの保存および実行
・永続性の削除
・分析ツール(Task Manager、SystemInformer、Process Hacker、Process Explorer、Perfmonなど)が実行中かどうかを監視する
・アクティブウィンドウのチェック
・システムがアイドル状態かどうかを検知する

smtpB.zipからStealerを取得

 別のZIPアーカイブのsmtpB.zipには、Pythonインタープリター、サポートモジュール、および悪意のあるPythonスクリプトが含まれています(図14)。このスクリプトはダウンローダーの役割を担い、ペイロードをディスクに書き込むことなく、メモリに直接ロードします。これを実現するために、GitHubのPythonMemoryModuleプロジェクトが利用されています。

図14:悪意のあるPythonファイル

Amatera Stealer

 Amatera Stealerとして識別されるペイロードが実行されると、ハードコードされた値でミューテックスが作成されます。次に、リモートサーバーに接続し、GETリクエストを/core/createSessionエンドポイントに送信して、構成ファイルを取得します。この構成はBase64でデコードされ、RC4アルゴリズムで復号化された後、データハーベストプロセスを制御する解析ルーチンに渡されます(図15)。

図15:構成の取得および解析を行うコード

 この解析ルーチンはまず、収集するデータタイプを識別した後、適切な解析フローにプロセスをルーティングします(図16)。

図16:解析フロー

 このマルウェアは、カテゴリーベースの解析に加え、データを収集し直ちに送信するモードでも動作します。このモードでは、各データカテゴリーが、個々のHTTP POSTリクエストを介して/core/sendPart endpointに送信されます(図17)。これにより、感染フェーズ時、複数のPOSTリクエストが発生します。

図17:「system_info」カテゴリーにビルドID「smtp_spam_2」が含まれる

 リサーチャーは、同様のキャンペーンを監視時、異なるビルドID「smtp_test_4」を使用する同じマルウェアを発見しました。以下の分析は、その亜種から取得した構成に基づいています(図18)。

図18:復号化された構成データ

システム情報

 Amatera Stealerはまず、以下を含むシステムの基本情報を収集します。

・コンピュータ名
・ユーザー名
・オペレーティングシステム名
・ユーザーのログイン設定
・タイムゾーンの詳細
・マシンのGUID
・OSのインストール日

 また、ハードウェアの詳細情報であるビデオカード名、プロセッサモデル、および物理メモリの合計なども収集します。

 システムの基本データ以外にも、同マルウェアは以下の追加情報も対象にします。

・プログラム実行パス
・アクティブなプロセス
・インストールされているソフトウェア

 被害者のシステムをさらに可視化するために、スクリーンショットをキャプチャしたり、クリップボードのコンテンツを取得します。

Geckoベースのアプリケーション

 このモジュールでは、Amatera Stealerは、構成データのgecko_pathsとgecko_filesを使用して、Geckoベースのアプリケーションに関連するディレクトリとファイルを検索します。次に、/Profilesパスを付加して、以下を含む機密ファイルにアクセスします。

・key4.db
・logins.json
・cookies.sqlite
・formhistory.sqlite

 ターゲットのアプリケーションを以下に示します。

・ブラウザ:Firefox、Waterfox、LibreWolf、Pale Moon、Basilisk、IceDragon、Centaury、Wyzo、Cliqz、Cyberfox、BlackHawk Browser、GNU IceCat、Netscape Navigator
・ブラウザスイート(ブラウザ、Eメール、IRC、エディタ):SeaMonkey
・チャットクライアント:Instantbird
・Eメールクライアント:Thunderbird
・Webメディアプレーヤー:Songbird

Chromiumベースのアプリケーション

 Chromiumベースのアプリケーションの場合、このマルウェアは構成パラメータのchromium_browsers、chromium_files、chromium_extensions、およびchromium_appsを利用します。これらの値を使用して、ターゲットのブラウザやアプリケーションを指定し、ディレクトリパスを識別し、ブラウザ拡張機能データを検索し、収集するファイルを定義します。

 この情報窃取ツールは次の2つの手法を利用して機密データを抽出します。

1.レガシーCookieの復号化
 ・Local Stateファイルからencrypted_keyを抽出します。
 ・Base64からデコードし、DPAPIで始まることを確認します。
 ・CryptUnprotectData関数を使用してキーを復号化します。
 ・復号化されたキーを使用して保護ファイルにアクセスします。

2.アプリケーションバウンド暗号化(ABE)データの復号化
 ・Local Stateファイルのapp_bound_encrypted_keyを検索します。
 ・シェルコードをブラウザプロセスに注入します。
 ・CLSIDとIIDを指定してCOM APIを利用し、ブラウザのElevation Service(昇格サービス)に関連するCOMオブジェクトをインスタンス化します。
 ・オブジェクトのDecryptDataメソッドを呼び出し、復号化されたアプリバインドキーを取得します(図19)。

図19:DecryptDataメソッドの呼び出し

 Chromeの構成例で構造を示します(簡易):

 受信した構成に基づいて以下のターゲットが定義されます。

・ブラウザ:Chrome、Edge、Brave
・対象ファイル:Login Data、Web Data、およびNetwork\Cookies
・拡張機能
 ・Station Wallet aiifbnbfobpmeekipheeijimdpnlpgpp
 ・Trust Wallet egjidjbpglichdcondbcbdnbeeppgdph
 ・MathWallet afbcbjpbpfadlkmhmclhkeeodmamcflc
 ・Coin98 Wallet aeachknmefphepccionboohckonoeemg
 ・MetaMask nkbihfbeogaeaoehlefnkodbefgpgknn
 ・Coinbase Wallet hnfanknocfeofbddgcijnmhnfnkdnaad
 ・BNB Chain Wallet fhbohimaelbohpjbbldcngcnapndodjp
 ・Phantom Wallet bfnaelmomeimhlpmgjnjophhpkkoljpa
 ・Ronin Wallet fnjhmkhhmkbjkkabndcnnogagogbneec
 ・TronLink ibnejdfjmmkpcnlpebklmnkoeoihofec
 ・Keplr dmkamcknogkgcdfhhbddcghachkejeap
・アプリケーション:Binance、Discord

アプリケーション

 Amatera Stealerは、構成ファイルにリストされているアプリケーションに加えて、ハードコードされた2つのルーチンが含まれており、SteamおよびTelegramからデータを抽出します(図20)。

図20:アプリケーション収集モジュール

・Steam
 本マルウェアは、以下のレジストリでSteamのインストールパスを検索します。
 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Valve\Steam
 次に、インストールディレクトリ内の*.vdfファイルを検索し、保存されている情報を抽出します。
・Telegram:
 本マルウェアは、%appdata%\Telegram Desktop\tdataを検索し、以下のファイルを収集します:
 ・Dump
 ・Webview
 ・Emoji
 ・Tdummy
 ・Temp
 ・user_data

 また、構成で、データ窃盗を行う追加のアプリケーション(以下を含む)も指定します。

・FileZilla: %appdata%\FileZillaのrecentservers.xmlから接続設定を収集します。
・AnyDesk: 構成ファイル(*.conf)を%appdata%AnyDeskから収集します。

デスクトップウォレット

 このモジュールは、デスクトップ暗号通貨ウォレットからデータを窃取するよう設計されています。構成で、対象パス、対象ファイル名、およびBooleanフラグを指定します。

・このフラグがtrueの場合、同マルウェアは、最大5のディレクトリレベルの深さまでファイル検索を再帰的に実行します。
・このフラグがfalseの場合、対象パスと対象ファイル名を組み合わせて、ファイルパスを直接構成します。

対象のデスクトップウォレットには以下が含まれます:Sparrow、BitcoinCore、DashCore、LitecoinCore、DogecoinCore、Coinomi、Electrum、Qtum、Exodus、Armory、ElectrumLTC、Atomic、WasabiWallet、ElectronCash

ファイルグラバー

 ファイルグラバーモジュールは、構成で定義されているgrabber_rulesに従ってファイルを収集します。各ルールは以下の4つの要素で構成されています。

デスクトップから以下の拡張子を持つファイルが取得されます:*.txt、*.pdf、*.doc、*.docx、*.xls、*.xlsx、*.html、*.hta、*.png、*.jpg、*.jpeg、*.bmp、*.svg

図21:Amatera StealerのC2サインインページ

結論

 このフィッシングキャンペーンでは、感染チェーンを開始するために、悪意のあるSVGファイルがHTMLの代替として利用されていることが明らかになりました。このケースでは、攻撃者はウクライナ政府機関を標的として、SVG添付ファイルを含むEメールが使用されています。SVGが埋め込まれたHTMLコードにより、被害者はダウンロードサイトにリダイレクトされます。

 ダウンロードされたCHMファイルには、リモートHTAファイルを実行するショートカットオブジェクトが含まれています。次に、このローダーを使用して、被害者のシステムにマルウェアペイロードが配信されます。

 2つのZIPアーカイブがダウンロードされ、それぞれで最終的にペイロードがファイルレス形式で配信されます。このキャンペーンの分析を通じて、Amatera StealerPureMinerが展開されていることが確認されました。

・Amatera Stealerは、感染システムから幅広い情報をハーベストするために使用され、これには認証情報、システムデータ、アプリケーションデータ、ブラウザファイル、および暗号通貨ウォレットなどが含まれます。
・PureMinerは、アダプタ固有のハードウェア情報の収集、およびシステムアクティビティの監視に使用され、攻撃者は、CPUまたはGPUマイニングモジュールを展開して効率を最大化することができます。

 これらのペイロードを組み合わせることで、対象環境のデータ窃取およびリソースの乗っ取りを実現します。

フォーティネットのソリューション

 本レポートで説明されているマルウェアは、FortiGuardアンチウイルスで次の名称で検知されブロックされます。

HTML/Phish.09F5!tr
HTML/Phish.7F92!tr
HLP/Agent.G2!tr
HTA/Agent.38f7!tr
W64/GenKryptik.HFPH!tr
MSIL/Agent.6751!tr
Python/Agent.3F5C!tr.dldr
W64/Agent_AGen.DOB!tr

 FortiGate、FortiMail、FortiClient、およびFortiEDRはすべて、FortiGuardアンチウイルスサービスが統合されており、最新の保護機能を利用するお客様は、これらの脅威から保護されます。

 FortiMailは、このフィッシングメールを「ウイルスの検知」として認識します。また、フォーティネットのFortiMail、Webフィルタリング、およびウイルス対策ソリューションに組み込まれているFortiSandboxは、リアルタイムフィッシング対策を備えており、既知および未知のフィッシング攻撃に対して高度な保護を提供します。

さらに、

FortiGuard CDR(コンテンツ無害化)サービスにより、ドキュメント内に埋め込まれている悪意のあるマクロを無力化することができます。
・各組織は、今日の脅威の状況、およびコアのセキュリティ概念を紹介する無償のFortinet Certified Fundamentals(FCF)サイバーセキュリティトレーニングを受講することをお勧めします。
FortiGuard IPレピュテーションおよびアンチボットネットセキュリティサービスは、フォーティネットのグローバルネットワークから取得したインテリジェンスを活用して、攻撃をブロックします。このグローバルネットワークは、センサー、CERT、MITRE、業界パートナー、およびその他の共同情報源で構成されています。

 お客様の組織が、本件の脅威またはその他のサイバーセキュリティ脅威の影響を受けていると思われる場合は、FortiGuardグローバルインシデントレスポンスチームまでお問い合わせください。

IOC(Indicators of Compromise:侵害指標)

ドメイン / IP:

npulvivgov[.]cfd
ms-team-ping{1 to 10}[.]com
azure-expresscontainer{1 to 10}[.]com
acqua-tecnica[.]it
phuyufact[.]com
109[.]176[.]207[.]110
amaprox[.]click
ama0899[.]shop

ファイル(SHA-256ハッシュ):

bcce8115784909942d0eb7a84065ae2cd5803dc9c45372a461133f9844340436
9cbb497f0878a073504d3699cfbd86a816c7941234729631722d010f6ecd09f5
7deb9e6398c92cf01502f32a78c16f55354dcf3d2b062918f6651852742bc7cd
c25e4bd9e8d49f3beef37377414028b07986dacce5551f96038b930faf887acc
9d2a88f7f4d6925e654ee3edcd334eb9496a279ee0c40f7b14405b35500ebf99
bf9e6bee654831b91e891473123bbd9bc7ff3450471e653c7045f5bd8477d7a1
b8fb772d92a74dcd910ac125ead1c50ce5834b76f58e7f107bb1e16b8c16adbb
61fee7e2012919fafc3b47b37753ff934f7a0ca2a567dca5f15d45ab55ae2211
c62fe8d6c39142c7d8575bd50e6f2fcd9f92c4f0a1a01411d0f3756a09fd78a7
2bd4df59071409af58d0253202b058a6b1f1206663236dea5163e7c30a055f21
27c9c4e200815a9f474126afa05d4266bc55aafa9df0681a333267e4bbd101de
7f505f8a947715ae954e5eb93e9e1911843dc2c16462a146e5658e4101cedc0e
d71148d7e64f2a3464488d696ac2312987eb4e8008c9a62956388d39905c865f

■関連サイト