macOSマルウェア「PamStealer」に新版、サーバー連携によるペイロード復号やGitフックを悪用した多層的な永続化を実装
要点
-
macOSを標的とする情報窃取マルウェア「PamStealer」に、解析妨害や多層的な永続化機能を備えた最新バージョンが確認された。
-
偽の暗号資産ウォレットサイトをおとりに配布され、C2サーバーとの間でリアルタイムに暗号鍵を交換しなければ本体ペイロードを復号できない仕組みを導入した。
-
LaunchAgentやシェル設定に加え、Gitのフック機能を悪用することで、削除されても自動的に復旧する4重の永続化メカニズムを構築している。
-
最終段階で実行される情報窃取プログラムはRustからSwiftへ書き直されており、偽のクラッシュ画面を用いたOSパスワード詐取や各種ブラウザの保存情報収集を行う。
-
セキュリティ企業Jamfの脅威研究組織であるJamf Threat Labsにより、macOSを標的とするインフォスティーラー(情報窃取型マルウェア)「PamStealer」の最新亜種が確認されたことが明らかになった。2026年9月25日に公開された分析レポートによると、今回の新バージョンでは感染経路となるおとりが刷新されたほか、C2(指令サーバー)と連携したペイロード復号機能や、Gitの設定を悪用した高度な永続化手口が導入されているという。
偽の暗号資産ウォレットを装う感染手口
PamStealerは2026年7月から8月にかけて観測された過去の攻撃において、Maccy、Scoppr、Nancy Clipboardといったクリップボード管理ツールなどを装う偽サイトを配布経路としていた。しかし、今回の新版では手口が変更され、「wavel[.]app」という偽のWebサイトを通じて実在しない暗号資産ウォレットサービス「Wavel」を宣伝している。
被害者が同サイト上の「Download for macOS」ボタンをクリックすると、「Wavel.dmg」というディスクイメージファイルがダウンロードされる。このファイル内にはコンパイル済みのAppleScriptが含まれており、ファイルを開くとmacOS標準のScript Editorが起動して、JXA(JavaScript for Automation:JavaScriptを用いてmacOSの操作を自動化する仕組み)で記述されたドロッパーを実行する。
過去の亜種ではJXAスクリプト自身がペイロードの復号やダウンロード処理を担っていたが、今回のバージョンではJXAは単なる運搬役に特化している。Script EditorによってBase64形式の文字列がデコードされ、標準入力経由で /bin/zsh -s に渡されると、以降の処理はバックグラウンドのzshスクリプトへと引き継がれ、JXAプロセス自体は即座に終了する構造になっている。
C2サーバーとの鍵交換による解析妨害
実行されたzshスクリプトは、「wavel.apple03cloudstore[.]com」から「pkgunpack」と呼ばれる専用の復号ユーティリティを取得し、感染活動を進行させる。
今回の改修における最大の技術的特徴は、ペイロードの復号プロセスにある。以前のバージョンでは暗号鍵の情報がJXAのソースコード内に直接埋め込まれており、RC4暗号を用いて復号されていたが、新版ではC2サーバーとの間でX25519アルゴリズムを用いた鍵交換を行わなければ、暗号化されたペイロードを展開できない。
復号に必要なデータ暗号化鍵(DEK)を完成させるための秘密鍵はサーバー側のみが保持しており、実行ごとに使い捨ての一時的な鍵ペアが生成される。そのため、過去に取得されたDEKを再利用してペイロードを取り出すことはできない。この設計により、稼働中のC2サーバーと通信できない環境では、ファイルを直接解析する静的解析(プログラムを実行せずに構造を調べる手法)によってマルウェア本体を復元することが極めて困難になっている。
Gitフックやシェル設定を悪用した4重の永続化
マルウェアはシステム内に留まり続けるため、多層的かつ冗長な永続化メカニズムを構築する。まず、macOSで新しいバックグラウンドログイン項目が追加された際に表示されるシステム通知を抑制した上で、以下の4段階に及ぶ定着・復旧策を施す。
- LaunchAgentの登録: macOSの自動起動の仕組みであるLaunchAgentを用いて常駐化を図る。
- 修復スクリプトの配置: ペイロードやLaunchAgentが削除された場合にそれらを自動再生成するzshスクリプトを設置する。
- シェル設定へのフック追加: ユーザーの
~/.zshrcファイルにコードを追記し、対話型のzshセッションが新しく開かれるたびに修復スクリプトを呼び出す。 - Gitフックの悪用: 修復スクリプトを
~/Library/Application Support/System/.githooks/ディレクトリ内のpost-checkoutおよびpre-commitとして配置し、Gitのグローバル設定であるcore.hooksPathに同ディレクトリを指定する。
GitフックはGitの特定操作時に自動でスクリプトを実行する機能であり、このグローバル設定により、感染端末上のあらゆるGitリポジトリでブランチの切り替え(git checkout)やコミット(git commit)が行われるたびに、マルウェアの修復スクリプトが密かに実行される。
Swiftで再実装された情報窃取機能
最終段階で実行される情報窃取コンポーネントは、以前のバージョンで採用されていたRust言語からSwift言語へと書き直されている。プログラミング言語の変更後も目的は共通しており、以下のような広範な情報収集を実行する。
- 管理者パスワードの詐取: 偽のクラッシュダイアログを表示してユーザーにシステムパスワードを入力させ、PAM(Pluggable Authentication Modules:認証機能を一元管理するフレームワーク)を用いた検証方式で入力内容の正当性を照合した上で取得する。
- キーチェーン情報の収集: macOSのパスワード管理領域であるキーチェーン内の登録項目を探索して抜き取る。
- Webブラウザからの認証情報窃取: Google Chrome、Microsoft Edge、Mozilla Firefox、Brave、Vivaldi、Opera、Opera GX、Arc、Zen、Waterfox、LibreWolf、Yandex Browser、Cốc Cốcなど、Chromium系およびFirefox系の主要ブラウザから保存された認証情報を収集する。
- 環境情報と個人ファイルの窃取: 端末のフィンガープリント採取や詳細なメタデータ、ユーザーのプロフィール画像の収集に加え、コマンド履歴が記録された
.zsh_historyなどのファイルを回収する。
窃取されたデータはステージング用ディレクトリにまとめられた後、ZIPアーカイブ形式に圧縮されてC2サーバーへと定期的に送信される。