研究・分析 / RESEARCH / MALWARE ANALYSIS / JSCeAL
V8バイトコード化されたスティーラー「JSCeal」を静的解析 — Check Pointが難読化解除パイプラインと検体解析を公開
Check Point Researchは2026年8月31日、コンパイル済みV8バイトコード(.jsc)で配布される暗号資産狙いのスティーラーJSCealについて、実行せずに難読化を解除する静的解析パイプラインを公開した。View8を拡張してRC4文字列や制御フロー平坦化などを復元し、キーロギングやブラウザ窃取、HTTPS中間者プロキシの実装を再現可能にした。解析ツール一式はGitHubで公開されている。
Check Point Researchは2026年8月31日、コンパイル済みV8バイトコードとして配布されるスティーラー(情報を盗み取るマルウェア)JSCealの解析手法を公開した。報告書を執筆したのは同社のhasherezade氏で、通常のJavaScript解析では扱えないバイトコード化された検体を、実行せずに読み解ける形まで戻す静的パイプラインを開発した。成果はBlack Hat USA 2026で発表済みで、ツール一式はGitHubで公開されている。
何が起きたか — バイトコード化と多層難読化
JSCealは2024年3月ごろから活動が確認され、Check Point Researchが2025年初頭から追跡してきた暗号資産(仮想通貨)関連を主に狙うスティーラーだ。他社ではWEEVILPROXYやMeadowLocustとも呼ばれる。研究チームが2025年7月に公開した前回報告では、 campaigns(拡散活動)と配信経路、標的を中心に分析していた。今回の報告は最終ペイロードそのものに焦点を当てたものだ。
攻撃者はまずJavaScriptをjavascript-obfuscatorなどの公開ツールで難読化し、その後V8エンジンのバイトコードへコンパイルしてキャッシュデータ(.jsc)として配布する。Check Pointによると、難読化にはRC4で保護された文字列、制御フロー平坦化、プロキシ関数、演算ラッパーなどが組み合わされる。V8バイトコードはバージョン依存で解析ツールの支援が乏しく、通常のJavaScript難読化解除フローでは対応できない。
研究チームは2024年に同僚のMoshe Marelus氏が公開したV8バイトコード逆コンパイラView8を基盤に、出力を再現可能かつ自動後処理しやすい形へ拡張した。View8の出力を静的に変換することで、値の伝播、文字列再構築、制御フローの平坦化解除、プロキシ関数と演算ラッパーの解決、クリーンアップを順に適用するパイプラインを構築した。Check Pointは「完全なソース復元が目的ではなく、ロジックを追跡し検体間比較や機能分岐の特定が可能なレベルまで可読性を回復すること」が目標だったと説明している。
感染連鎖 — PowerShellからNode.js同梱ペイロードへ
Check Pointが示した最終段階の感染フローは、マルバタイジング(広告を悪用した誘導)を起点に複数のPowerShellスクリプトを経由する。最終段階では2つのZIPがPowerShellによって取得される。
- node.zip — 同梱用のNode.jsランタイム一式
- build.zip — 最終ペイロードと支援コンポーネント。内容は
winpty-agent.exe(非表示コンソール用エージェント、オープンソース)、winpty.dll、app.jsc(JSCeal本体)、preflight.js(解凍用スクリプト)、ネイティブの.nodeモジュール(PE形式)
app.jscはBrotli圧縮された状態で配布され、preflight.jsが解凍して読み込む。実行は同梱のNode.jsが行うため、標的環境にNode.jsが事前にインストールされている必要はない。Node.jsの豊富なパッケージ資産を悪用することで、攻撃者は高度な機能を低コストで実装できるとCheck Pointは指摘している。
パイプラインはこのapp.jscをView8で疑似コード化した後に適用される。オプションとして、大規模な復元コードを読みやすくするLLM支援のリネーム段階も用意されている。復元結果は文字列、API呼び出し、パス、データフローといった具体的な手がかりと照合して検証された。
何ができるマルウェアか — 復元コードが示した機能
難読化を解除したコードの解析から、JSCealが備える主な機能が具体的に確認された。Check Pointは1検体を事例に、復元コードの一部を挙げながら実装を説明している。
- キーロギングとスクリーンショット取得 — キー入力の記録と画面 capture により、入力内容や操作を盗み取る
- ブラウザと認証情報の窃取 — 保存された認証情報や暗号資産ウォレット関連データを標的とする
- HTTPSトラフィックの傍受 — ローカルに中間者(MITM)プロキシを立て、HTTPS通信を復号して窃取する
- トラフィック横取りと監視 — 上記プロキシを介した通信の収集と転送
Check Pointは、復元したコードが比較・追跡を可能にした点を強調している。難読化を外したことで、検体間の差分や機能追加の経緯、特定 API の使用パターンを静的に追えるようになった。
公開されたツールと最新動向
研究チームは静的難読化解除の完全なツールキットをjsc_deobfuscatorとしてGitHubで公開した。View8の拡張(出力の再現性確保と自動後処理対応)を含む。
報告書の末尾では、JSCealの最近の変化にも触れている。
- 新しいNode.js / V8バージョン向けのV8コードキャッシュが生成されている
- 追加のペイロード暗号化層が確認された
- macOSを標的とする展開が観測された
これらは、攻撃者が実行環境の多様化と検出回避の強化を進めていることを示すとCheck Pointは分析している。
Check Pointが示した位置づけ — 実行せずに読む解析
Check Pointは、V8コンパイルが不可逆で逆コンパイル結果は疑似コードにとどまるため、完全なソース復元は目指さなかったと明言している。代わりに「マルウェアをコードとして再び読めるようにする」ことを目標に、静的変換だけで十分な構造と意味を回復するアプローチを採用した。動的実行によるサンドボックス回避や環境依存のリスクを避けつつ、大量検体を再現可能に処理できる点が利点だという。
同社は、Node.jsと公開難読化ツールの組み合わせが攻撃者にとって「安価で効果的」な隠蔽手段になっていると指摘し、防御側もバイトコードや同梱ランタイムといった配布形態自体に注目する必要があると示唆している。対策は一次情報に具体的な推奨として記載されていないため、本稿では事実の整理にとどめる。
出典: Check Point Research, “Breaking the Seal: Static Deobfuscation of JSCeal’s Compiled V8 Bytecode”, Research by hasherezade, 2026年8月31日. https://research.checkpoint.com/2026/breaking-the-seal-static-deobfuscation-of-jsceals-compiled-v8-bytecode/
この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。