Rust製情報窃取マルウェア「Luca Stealer」が出現:クロスプラットフォーム攻撃の新たな波

サイバー犯罪におけるプログラミング言語の進化

近年、サイバー犯罪者の間でマルウェア開発に用いるプログラミング言語の選択に大きな変化が見られます。従来のCやC++といった言語から、Rust、Golang、Nimといったモダンな代替言語への移行が加速しています。この戦略的な転換は、一度コードを記述すれば最小限の変更でWindowsとLinuxの両方に対応できるという、クロスプラットフォーム開発の利点を享受するためです。

このトレンドの最前線にいるのが、新たに確認された情報窃取マルウェア「Luca Stealer」です。このマルウェアは完全にRustで構築されており、オープンソースコードとして一般に公開されました。

Rustベースの脅威の台頭とその影響

Golangで書かれたマルウェアはすでに広く普及していますが、Rustの採用はまだ初期段階にありながらも急速に増加しています。「Luca Stealer」の登場は、BlackCatランサムウェアなどの他の著名なRustベースの脅威に続き、この進化における重要な節目となります。Luca Stealerのソースコードが公開されたことで、経験の浅いサイバー犯罪者でもRustを武器として利用する方法を学ぶための青写真が提供されました。

このオープンソースモデルは、新たなマルウェア亜種の開発を加速させ、セキュリティ防御側はこれらのクロスプラットフォーム脅威を迅速に検出するための分析技術の適応を余儀なくされています。

Rustマルウェア分析における独自の課題

Rustマルウェアの分析は、セキュリティ研究者にとって独自の課題を提示します。一般的なプログラムとは異なり、Rustバイナリはテキスト文字列を異なる方法で処理し、コンピューターコードにおける文の終わりを示す「null終端文字」を欠くことが多いため、分析ツールがデータを誤って解釈し、テキストの重複や判読不能な出力を生じさせることがあります。さらに、Rustコンパイラはコードを複雑に編成するため、マルウェアの主要なエントリポイントを特定することが困難です。

研究者たちは、マルウェアのコアな挙動を成功裏に分析するためには、`std::rt::lang_start_internal`のような特定の内部関数を識別することが不可欠であると指摘しています。

デジタル指紋から読み解くマルウェアの痕跡

これらの防御上のハードルにもかかわらず、Rustマルウェアは研究者が活用できる明確なデジタル指紋を残します。Rustのビルドシステムである「Cargo」は、「クレート」と呼ばれる外部ソフトウェアライブラリを管理しています。マルウェアがコンパイルされると、これらのクレートの証拠が最終ファイルに埋め込まれることがよくあります。「RustDependencyStrings.py」スクリプトをバイナリに対して実行することで、使用されているクレートを明らかにすることができます。

例えば、`reqwest`クレートの存在は、マルウェアがデータを窃取するためにHTTPリクエストを行う能力を持つことを示唆しています。さらに、不注意な開発者は、ビルドプロセス中にマルウェアに保存される「PDBパス」(開発マシンのファイル位置情報)を残してしまうことがあります。これらのパスは、攻撃者のユーザー名や開発環境のディレクトリ構造を明らかにする可能性があります。

侵害の痕跡(Indicators of Compromise: IoC)

  • SHA256ハッシュ: 8f47d1e39242ee4b528fcb6eb1a89983c27854bac57bc4a15597b37b7edf34a6 (Rustベースのマルウェアサンプルハッシュ)
  • クレート依存関係: reqwest (HTTPネットワークリクエストに使用されるライブラリ)
  • クレート依存関係: base64 (データエンコードに使用されるライブラリ)
  • ファイルパス: library\std\src\sys\windows\stdio.rs (分析で観測された内部Rustライブラリパス)

元記事: https://gbhackers.com/luca-stealer-targeting-linux-and-windows/