Go、D言語、Nim、Rust製マルウェアが増えている怖いワケ:マイナーなプログラミング言語がなぜ選ばれるのか
Go、D言語、Nim、Rustで書かれたマルウェアが増加傾向にあるという。わざわざ(現時点では)マイナーなプログラミング言語を使うのには理由がある。攻撃者にとってのメリット、標的にとってのデメリットとは何か。
攻撃者は、新種のマルウェアの作成に「風変わりな」プログラミング言語を使うことが増えている。これには、新しくてあまり一般的ではない言語を使うと攻撃の検出を回避し、分析を妨げる効果があるという前提がある。
関連記事
- Go言語に注力するDynatrace
- JavaやPHPからの移行も簡単、改めてGo言語がオススメな理由
- 関数型言語「Erlang」のススメ──なぜCやJavaではダメなのか?
- Microsoftがプログラミング言語「Rust」への支援を強化
- 「Rust」はなぜクラウドネイティブ開発者の間で大人気なのか?
BlackBerryのリサーチおよびインテリジェンスチームは、一般的ではない言語のサイバー犯罪分野での利用に注目している。
「マルウェアの作成者は、新しい技術を活用するためにスキルと行動を適応させ、変化する能力で知られている」と話すのは、BlackBerryのエリック・ミラム氏(脅威リサーチ部門バイスプレジデント)だ。
「新しい技術は保護ソリューションの対象範囲から外れている可能性がある。業界や顧客はこれを理解し、監視することが重要だ」
BlackBerryの研究員はGo、D言語、Nim、Rustの4つを一般的ではない言語としている。この4言語は悪意のある目的に使われる例が増えている。ミラム氏によると、この4言語は進化しており、正当な開発者コミュニティーの強い支持があることが研究員チームの興味をそそったという。
新しいプログラミング言語が採用される理由は、構文がシンプルなこと、パフォーマンスが向上していること、メモリ利用効率が高いこと、特定の環境に適していることなどだ。新しいプログラミング言語は開発者の作業を大幅に軽減する可能性もある。
だが、悪意を持った開発者がそうした言語にメリットを感じている点は他にある。マルウェア分析ツールは一般的ではない言語を適切にサポートしているとは限らない。そのためリバースエンジニアリングが妨げられる恐れがある。BlackBerryが一般的ではないとした言語で作成されたバイナリは、C/C++、C#で作成されたバイナリよりもリバースエンジニアリングの結果が「複雑に入り組んでいて面倒なもの」に見えるものがある。
一般的ではない言語は、シグネチャベースの検知ツールを回避する可能性もある。シグネチャベースの検知ツールはファイル内に存在するハッシュなどの静的特性に左右される。マルウェアが一般的ではない言語で作成されている場合(最近Nimで書き直されて「NimzaLoader」になった「BazarLoader」など)、従来バージョンを検知するために生成されたシグネチャは機能しないだろう。
他のマルウェアも、一般的ではない言語で作成されたローダーを追加することで再び勢いを取り戻している。この手口は、マルウェア全体をコーディングし直す必要がなくローダーだけを作り直せばよいので悪意を持った開発者には魅力的だ。
悪意を持った開発者が一般的ではない言語を利用する他のメリットには、そうした言語は比較的新しくなじみがないため難読化層として機能する点や、「Windows」環境と「macOS」環境を同時にターゲットにするマルウェアをクロスコンパイルできる点がある。
BlackBerryが分析した4言語の中ではGoが現時点では成熟しており、悪意を持った攻撃者が活用しているという。
前出のホワイトペーパーは、複数の攻撃活動の中で著名なOS全てを標的とするGoベースの新たなサンプルが定期的に見つかっていると報告している。NimやGoは「Cobalt Strike」のコンパイルに使われることが増えている。D言語の利用はあまり増えていないが、2021年は増加傾向にある。
Copyright © ITmedia, Inc. All Rights Reserved.