
By Jason Yuan (Engineer, Automotive)
現代のフィッシングは、必ずしも不審なメールやリンクから始まるわけではありません。ますます、正当なソフトウェアインストーラーの中に隠れて目立たない形で拡散しています。このブログでは、攻撃者が署名付きWindowsパッケージを使用して、従来の検出方法を複数回避することでRedLine Stealerマルウェアを展開した手法を分析します。
このような攻撃がどのように展開されるか、自動車メーカー (OEM) にとってなぜこれが独特の脅威となるのか、コードが自動車に到達するずっと前に始まる侵害からどのような教訓を引き出すことができるのかについて、順を追って説明します。
フィッシングはメールの枠を超えた
「フィッシング」という言葉を聞くと、多くの人が偽のログインページやメール内の怪しいリンクを想像するでしょう。しかし、現代の攻撃者はその範囲を超えています。フィッシングは、悪意のあるコードを組み込んだ一見正当なインストーラーの形で現れるようになりました。この手法は「インストーラーフィッシング」と呼ばれています。
自動車業界では、この手法が特に深刻なリスクを伴います。例えば、キャリブレーションエンジニアが信頼できるサプライヤーのポータルから、ベンダー提供のCANビューアー3.4のセットアップ.exeをダウンロードする場面を想像してください。これは開発サイクル中に何度も繰り返される日常的な作業です。エンジニアは、ファイルが上流で密かに改ざんされ、悪意のあるバージョンに置き換えられていることに気付かないまま、通常どおりツールをインストールします。数分以内に、Redline Stealerなどのマルウェアが、マシンに保存されている機密の認証情報、Gitトークン、さらにはコード署名キーさえも盗み出す可能性があります。そこから、攻撃者は OTA (Over-The-Air) 署名システムやファームウェアのビルド環境にアクセスし、サプライチェーンを広く侵害する準備を整えることができます。
このような侵害は仮定の話ではありません。2018年のASUS ShadowHammer攻撃では、攻撃者はASUSの信頼されたソフトウェア更新ツールを改変し、ASUS自身の証明書を使用して署名まで施しました。その結果、ほぼ100万台のシステムがトロイの木馬化されたインストーラーを受け取ることになりました。最近では2023年、脅威アクターは偽装されたZoomとMSIXインストーラーを使用して、完全に正当なソフトウェアのように見えるマルウェアを配信しました。これらの巧妙な攻撃は従来の検出を回避し、攻撃者に企業環境へのステルス的な侵入経路を提供しました。
インストーラーフィッシングが特に危険なのは、その日常的な外観にあります。これらは通常の業務フローに溶け込み、セキュリティチームにとって防御が困難です。特に急ピッチの作業が求められる開発やサポートの現場では、ユーザーがためらうことなくダブルクリックしてしまうため、攻撃者に足場を与えてしまうのです。
RedLine StealerがInno Setupパッケージに埋め込まれた方法
CANバスビューア、電子制御ユニット (ECU) フラッシャー、インビークルネットワーク用の設定ツールなど、Windowsに小さなエンジニアリングユーティリティをインストールしたことがある方は、そのユーティリティがInno Setupを使用してバンドルされていた可能性が高いといえます。1997年に初めてリリースされたこのインストーラシステムは、そのシンプルさ、スクリプト作成機能、およびすべてを一つの実行ファイルにバンドルできる機能により、今でも広く人気があります。
Splunkが最近発見したマルウェア攻撃では、攻撃者はInno Setupの柔軟性を悪用して、多層的で検出困難なマルウェアチェーンを配信しました。表面上、インストーラーは正当な署名付き実行ファイルで、悪意のある動作は確認されませんでした。しかし、ユーザーが実行すると、インターフェースの下で静かに多段階の展開が開始されます。
攻撃チェーンは、インストーラーに埋め込まれたPascalスクリプトから始まります。このスクリプトは、単にアプリケーションファイルを抽出するだけでなく、ユーザーのシステム内の隠しディレクトリに追加コンポーネントを静かに書き込んでいます。そのひとつは、再起動ごとにトリガーされるスケジュールタスクで、永続性を確保するためのものです。もうひとつは、正当なQtアプリケーションの改変・改名版である実行可能ファイルtaskshostw.exeです。そのファイル名は、ネイティブのWindowsバイナリtaskhostw.exeと1文字のみ異なるものです。
この実行ファイル自体は、単独では明らかに悪意のあるものではありません。しかし、実行されると、ローカルにバンドルされた DLL「QtGuid4.dll」を自動的に読み込みます。このDLLは、サイドカーファイル「periphyton.ics」に格納された暗号化されたブロブを復号化し、メモリ内にシェルコードを直接送信するように改変された武器化されたバージョンに置き換えます。そのシェルコードは、最終的なペイロード「RedLine Stealer」を解凍して注入するステージングコンポーネント「HijackLoader」を起動するのです。
RedLineは直接実行されません。代わりに、エンジニアリングマシンに一般的に存在する信頼されたMicrosoft開発ツールであるMSBuild.exeに注入されます。そこから、真の任務である、侵害されたマシンからブラウザのクッキー、VPNプロファイル、その他の機密データを静かに窃取し始めます。
図1. 武器化されたインストーラーの実行パス
インストーラーは署名されているように見えますし、ドロップされたファイルは、通常の開発者ツールに似ています。明らかなエクスプロイトや目立つ危険信号はありません。攻撃チェーンの各段階は、それ自体では正当なものとして認識されるほど巧妙です。シグネチャの一致や静的ヒューリスティクスに依存する従来のアンチウイルススキャナーは、悪意のある活動を検出できませんでした。これは、最終的なペイロード(実際のデータ窃取マルウェア)が暗号化されており、メモリ内でしか復号化されないため、静的解析の範囲外だったからです。
さらに、マルウェアが監視されている場合の挙動について確認しました。マルウェアは、コアロジックを実行する前に、ホスト環境をスキャンしてサンドボックスや自動分析ツールの兆候を探します。異常なハードウェア構成があったり、システムリソースの制限、偽のユーザープロファイル、または一般的なAVサンドボックスのアートファクトを検出したりした場合には、実行を保留し、無害なインストーラーのように振る舞うようにできていました。これにより、静的検出と動的検出の両方を回避し、実際のユーザーが実際のマシン上で操作するまで、攻撃の次の段階を待機する仕組みになっていることが判りました。
自動車環境では、インストーラーが侵害されると、1台のマシンだけが影響を受けるわけではありません。車両、生産ライン、ソフトウェアサプライチェーン全体に波及し、自動車サイバーセキュリティにとって重大な問題となります。
マルウェアが混入したユーティリティは開発者のワークステーション上で、Git認証情報やコード署名証明書を盗み出し、組織の名義で署名された不正なファームウェアの侵入を可能にしてしまいます。これらの信頼されたシステムはOTAインフラストラクチャに不可欠であるため、上流で侵害が発生すると、生産ビルドに静かに拡散し、走行中の車両にまで到達する可能性があります。
診断やファームウェアのアップデートによく使用されるディーラーやワークショップのノートパソコンは、現場にある車両と直接接触するタッチポイントです。これらが侵害されると、定期メンテナンス中に不正な変更が注入され、感染が車両から車両へと拡大する可能性があります。
製造現場も脆弱です。キャリブレーションツールやMES端末は、多くの場合、標準的なWindows PCで動作しています。この領域でツールが感染すると、生産が停止したり、ECUプログラミングが破損したり、機密性の高い工場データが漏洩したりする可能性があります。これらがすべて、一見正当に見えるひとつのインストーラーによって引き起こされるのです。
信頼が前提とするもの – それが望ましくない理由
この攻撃は、車両内で始まったわけではありません。開発者がツールをダウンロードし、それを信頼したことから始まります。これが、現代のサプライチェーンの脅威の背後にある静かな真実です。つまり、脅威は最終製品を悪用するのではなく、それを構築するシステムやツールを侵害するのです。一度侵入すると、脅威は抵抗を受けることなく移動します。それは、脅威が見えないからではなく、すでに信頼されているものすべてに溶け込んでいるからです。
ここで、外部接続か内部接続かに関係なく、暗黙の信頼を一切認めないセキュリティ概念である「ゼロトラスト」が定着しなければなりません。まず、その信頼が与えられる前に、リスクの軽減策を講じる必要があります。すべてのインストーラー、サポートユーティリティ、診断パッケージは、安全であると仮定するのではなく、継続的に検証されるべき納品物として扱われるべきです。手動での一時的なレビューではなく、自動化され、再現可能で検証可能なチェックを通じて行われるべきです。パッケージに含めてはならないコンポーネントが含まれていたり、ビルドシステムで宣言された内容から逸脱している場合、開発や本番環境に到達する前にフラグが立てられ、ブロックされるべきです。
これが、希望や反応時間に依存せずに侵害を防止する方法です。信頼は決して前提だと安心してはいけません。信頼は獲得されるべきものです。