暗号資産を標的とする高度な情報窃取型マルウェアが、コンパイル済みのV8 JavaScriptバイトコードの中に悪意のあるロジックを隠していることが分かりました。
一部のベンダーからはWEEVILPROXYやMeadowLocustとも呼ばれるJSCealは、可読なJavaScriptとしては配布されません。代わりに攻撃者は、バンドルされたNode.jsランタイムで実行されるV8バイトコードにコンパイルされた.jscファイルとして最終ペイロードをパッケージ化します。
この手法により、元のソースコードが存在しないため従来のJavaScript解析が困難になるうえ、多くのネイティブなリバースエンジニアリングツールはマルウェアの高レベルなロジックを可視化できません。
従来JSCealに関連付けられていた感染チェーンは、マルバタイジング(不正広告)と一連のPowerShellステージから始まります。
最終段階では、隠しコンソールコンポーネント、Brotli圧縮されたapp.jscペイロード、解凍スクリプトのpreflight.js、そしてネイティブのNode.jsモジュールを含むZIPアーカイブがダウンロードされます。
その後PowerShellコマンドがプリロードスクリプトとともにNode.jsを起動し、コンパイル済みペイロードを実行します: node.exe -r preflight.js app.jsc。
V8バイトコード層は、JSCealの防御回避戦略を構成する一要素にすぎません。コンパイル前の段階で、マルウェアのJavaScriptはjavascript-obfuscatorによって厳重に保護されています。
研究者たちは、RC4暗号化とBase64エンコードによる文字列断片、算術的なインデックス変換、制御フローの平坦化、プロキシ関数呼び出し、そして操作のラッパー化を確認しました。
これらの多層構造により、重要な文字列やAPI呼び出し、ブラウザのパス、コマンド実行ルーチン、標的となるサービスが解析者の目から隠されています。
この保護を突破するため、Check Pointの研究者たちはオープンソースのV8バイトコードデコンパイラ「View8」を拡張し、専用の静的な難読化解除パイプラインを開発しました。
このワークフローは、暗号化された文字列を再構築し、スコープや辞書経由で渡される値を解決し、制御フローの平坦化を除去し、プロキシ呼び出しを特定したうえで、難読化されたラッパー関数をその背後にある実際の処理に置き換えます。
CheckPointの研究者らによれば、このマルウェアはブラウザの認証情報窃取、セッションハイジャック、暗号資産ウォレットの標的化、キーロギング、画面キャプチャ、そしてローカルでのHTTPS傍受を組み合わせており、金融サービス利用者にとって広範なリスクをもたらすとしています。
JSCealクリプトスティーラー
研究者たちの報告によると、このパイプラインは数か月にわたって調査した23件のJSCealペイロードすべてで解析可能な出力を生成しました。
「greedy(貪欲)」モードでは、コールバックやハンドラー、オブジェクトに割り当てられた関数を含め、可視状態にあるすべての関数参照を辿ります。そのためgreedyモードはプログラムのより広い範囲をカバーできますが、その分はるかに大きなグラフを生成することになります。
デコードが完了すると、JSCealのブラウザ窃取機能は特に懸念すべきものであることが明らかになります。
このマルウェアはインストール済みのブラウザを列挙し、保存されたパスワード、Cookie、自動入力データ、ブラウザプロファイル情報、そしてOAuth関連のトークンを抽出します。
DownloadReference Apps
そのコードには、Cookie抽出、ブラウザ起動、プロファイルディレクトリへのアクセス、Googleアカウントとの照合、そして保存済みパスワードの収集に関連する関数や文字列が含まれています。
これにより攻撃者は、単なる静的な認証情報以上に、再利用可能なセッション情報そのものにアクセスできてしまいます。
その運用上の影響は深刻です。窃取されたCookieはセッションの再生(リプレイ)を可能にする一方、収集されたパスワードや取得済みのGoogle関連データは、攻撃者がアカウントアクセスのワークフローを自動化し、新たなOAuthトークンを取得する手助けとなり得ます。
暗号資産の利用者に対しては、このマルウェアはBinanceやPhantomといったサービスに関連するウォレット関連の痕跡やプラットフォームデータも探索しており、アカウントの偵察や金銭的窃取につながる恐れがあります。
JSCealにはローカルでのHTTPS傍受機能も備わっています。復元された文字列からは、このマルウェアが127.0.0.1にバインドされたサーバーを作成し、RSA鍵ペアと証明書を生成したうえで、ローカルプロキシを展開する様子が確認できます。
攻撃者が管理する証明書をインストールすることで、このマルウェアは本来暗号化されているはずのWebトラフィックを検査、あるいは改ざんできる立場を得ます。これにより、アクティブなセッション中に入力される認証情報や取引情報を含め、保存済みのブラウザデータにとどまらない広範な露出が生じます。
このマルウェアが備えるより広範な監視ツール群には、Telegramセッションの収集、ホストおよびインストール済みアプリケーションの検出、キーロギング、スクリーンショットの取得、さらに追加プロセスを起動する機能が含まれます。
これらの機能を組み合わせることで、JSCealは従来型のブラウザパスワード窃取ツールというよりも、モジュール式のアカウント乗っ取り・金融監視フレームワークに近い存在となっています。
防御側にとってJSCealは、.jscファイルとバンドルされたNode.jsのアーティファクトが、エンドポイントのテレメトリやマルウェアのトリアージにおいてより厳重な精査を必要とすることを示しています。
セキュリティチームは、PowerShellからNode.jsへの不審な実行チェーン、Brotli圧縮されたバイトコードペイロード、想定外のローカルプロキシリスナー、証明書ストアの変更、そしてブラウザの認証情報データベースへのアクセスを調査すべきです。
Check Pointは、このJSCealの難読化解除ツールキットを公開しており、増加するV8バイトコード形式のマルウェア悪用を調査する解析者にとって実践的な手段を提供しています。
IOC(侵害指標)
| md5 (JSCオリジナル) | md5 (展開後) | sha256 (展開後) |
|---|---|---|
| (unknown) | 91038aebe528a065c3e995a418db6826 | c288e79ed9d1fb654a341b92d878a3165a09fb21dfa826f3559b46738fdbbdeb |
| 03f4e47b9c2283c32bb8f8f042ce6e41 | 13823095b8d31013ba41a5c98ce69b59 | 8b3ed808822479eb62d78d819db35362e4e79138ac82310d30e0c351a17992b6 |
| 0b8015cbb1ffdc6efe6a306ff5b1115f | 454fb012cdd0736e4ed41fabf0916f46 | 2cf2d22d1317df6c49171be61ef35c4f6c3da17785fa73e68aa95109075f79bd |
| 1026743185dfa10e9ddc21b5a4c578d5 | 975319142460fc43e3dc5e495d2313c9 | 94191824bb5062622663e2434d2b749a8c936eb573aaac23594dee8dda304731 |
| 201f28b5e62e52e269757930f941c774 | 09dbfac09f9cafdbc7d225eb144f0e69 | 742ad2dd3d2444bd3758b6e46dd76f9c43dfaae03bdffc3598ce7d8ab3cd3ac5 |
注: IPアドレスおよびドメインは、誤った名前解決やハイパーリンク化を防ぐため意図的にディフェンス(無害化)処理されています(例: [.])。再度有効な形式に戻す作業は、MISP、VirusTotal、あるいは自組織のSIEMなど、管理された脅威インテリジェンスプラットフォーム内でのみ行ってください。
★ どのセキュリティツールを削減すべきか?1ページでスコア化 – 「継承されたセキュリティスタック」ガイドをダウンロード
CompareSecurity Systems
翻訳元: https://gbhackers.com/jsceal-crypto-stealer/