コンパイルされたコードは、もはやJSCealを守る難攻不落の殻としては機能しません。Check Pointの専門家チームは最近、完全に静的な難読化解除手法を開発しました。この革新的な手法は、隠されたマルウェアを読解可能な疑似コードへと効果的に変換します。重要な点は、動的実行を一切必要とせずにこれを実現していることです。研究チームは数か月にわたって収集した23種類のサンプルに対してこの手法を厳密にテストし、すべてのケースで高い可読性を持つ結果を得ることに成功しました。
JSCealの脅威
WEEVILPROXYやMeadowLocustとしても知られるJSCealは、仮想通貨サービスの利用者を執拗に狙っています。この巧妙な悪意あるキャンペーンは、少なくとも2024年3月以降、非常に活発な状態が続いています。攻撃者は主に、偽の広告ネットワークを通じて偽装アプリケーションを配布してきました。その後、組み込まれたNode.js環境を利用して最終的な悪意あるペイロードを実行します。Check Pointの研究者は2025年初頭から、このマルウェアファミリーを綿密に追跡してきました。
二重の難読化を克服する
従来の解析ツールは、JSCealの解析において大きな困難に直面してきました。これは、堅牢な二重マスキング技術に直接起因するものです。開発者はまず、元となるJavaScriptコードを複雑に絡み合わせます。その後、それを内部のV8バイトコードへと直接コンパイルします。生成されたコンパイル済みキャッシュは、使用される特定のエンジンバージョンに完全に依存する上、元のソースコード要素の多くを欠いています。標準的な難読化解除ツールは本質的に、これらの欠落した要素に依存して正しく機能する仕組みになっています。
新たな難読化解除パイプライン
新たに開発された解析チェーンは、体系的に動作します。まず、開発者がBrotliアルゴリズムを用いて圧縮した元のファイルを慎重に展開します。次に、抽出したキャッシュを、互換性のあるView8ディスアセンブラおよびデコンパイラへとシームレスに転送します。続く一連の処理モジュールが、RC4によって厳重に保護された隠し値や暗号化文字列を体系的に復元します。さらに、意図的に絡ませられた実行順序を丹念に整理し、最後に冗長な中間関数を除去します。研究者たちは、このツールセット一式を惜しみなくGitHub上に公開しました。
隠された機能の解明
こうして得られた整然とした疑似コードは、最終的にJSCealの包括的な機能群を明らかにしました。これらの機能の多くは、単一の動的テスト実行だけでは表面化しない可能性があります。このマルウェアはキーストロークを執拗に傍受し、詳細なスクリーンショットを取得していました。また、パスワード、セッションクッキー、ブラウザデータ、さらにはTelegramの機密情報をひそかに窃取していました。ローカルに設置されたプロキシサーバーが、偽造した制御下の証明書を利用してHTTPSトラフィックを傍受・改ざんしていました。さらに、専用のハンドラーが25種類もの仮想通貨プラットフォームにまたがってユーザー残高を体系的に収集していました。
進化するマルウェアの手口
JSCealの開発者は、その後の解析作業を一貫して困難にし続けています。最近の亜種では、まったく異なるバージョンの基盤となるV8エンジンが導入されました。加えて、AES-256-CBCによる追加の暗号化も組み込まれています。この暗号化には、前段の感染ステージから直接導出される特定の鍵が使用されます。さらに、このマルウェアは現在、macOS環境も積極的にサポートしています。現時点でリリースされている解析ツールのバージョンは、旧来のV8ビルドを対象としたものです。しかし、Check Pointは新しいバージョンへの対応も今後追加する予定であるとしています。人工知能は、不可解な関数に理解しやすい名前を付与できる可能性を秘めています。とはいえ、そうしたAIによる提案についても、コアとなるコードやデータフローと照らし合わせた綿密な手動検証が依然として欠かせません。
翻訳元: https://meterpreter.org/static-deobfuscation-defeats-jsceal-cryptocurrency-malware/