疑わしいファイルをサンドボックスで実行しても、ほとんど何も起こらない。従来、このように活動が見られない場合、そのファイルがもたらすリスクは小さいと考えられたかもしれない。
しかし、より重要なのは、なぜ静かなままなのかという点だ。ファイルの実行に失敗したのか、それともサンドボックスを認識し、何ができるのかを明らかにしないと判断したのか。
現代のマルウェアは、実行するタイミングをますます選ぶようになっている。仮想化の痕跡を探し、システムのタイミングを測定し、ユーザーの活動を検知し、ホストが実際のエンドポイントに似ているかどうかを確認できる。
中には、マウスの動きが人間によるものか自動化されたものかを判定するために、三角法まで使う亜種がある。何かが人工的に見えると、マルウェアは休眠状態を保ったり、実行を遅らせたり、主要機能を隠したりする可能性がある。
仮想化とサンドボックス回避は、ATT&CKテクニックT1497にマッピングされ、現在の脅威活動で確認される、より一般的な回避テクニックの一つとなっている。分析中に静かなサンプルも、実際のエンドポイントに到達するとまったく異なる挙動を示す可能性がある。
静かなマルウェアが依然として危険な理由
観測可能な挙動は、セキュリティチームにとって長らく真実を知る手がかりとされてきた。ネットワークトラフィック、認証情報へのアクセス、永続化の変更、メモリーインジェクションなどを伴う実行であれば、アナリストは調査対象を得られる。
しかし、目に見える活動がほとんど、あるいはまったくない場合、サンプルのリスクは低い、または価値が低下したと考えがちだ。今や、その考え方は危険である。多くの場合、活動しないこと自体が攻撃の手口の一部だからだ。
ユーザー活動のチェックは、環境が実在するかどうかをマルウェアが確認する方法の一つだ。ただし自動化された環境では、人間の行動に見られる小さな不規則性を再現するのは難しい。
実際のエンドポイントには、閲覧履歴、最近使ったファイル、不規則なマウスの動き、長さの異なる間、一連の通常業務から生じるさまざまなノイズが存在する。
サンドボックスには通常、こうしたものがない。マルウェアの作成者はそれを理解しており、多くの亜種は直接的な人間の操作の証拠が現れるまで待ってから先に進む。そのため、挙動が見られないことは安全の指標ではなく、回避行動の可能性を示すサインとなる。
例としてLummaC2マルウェアを挙げよう。単にマウスが動いているかを確認するのではなく、どのように動いているかを調べる。カーソルの位置をサンプリングし、その間のユークリッド距離と角度を測定して、人間の実際の動きとスクリプトが生成する滑らかで直線的な動きを区別する。実際のマウス操作には、スクリプトにはない微細な曲線やためらい、方向の小さな変化がある。計算によって動きが偽物だと判断されると、マルウェアは活動を停止したままになる。
マルウェアがサンドボックス検知を回避する方法
マルウェアは、サンドボックスを回避するためにタイミングチェックも利用する。
中には、単に待つだけではないものもある。例えばBlitzは2つのスレッドを並行して実行し、その性能を比較する。一方のスレッドではCPUID命令を実行し、もう一方では浮動小数点演算を行う。物理ハードウェアでは通常、結果は一定の値を上回り、システムが実在することを示す。仮想マシンでは余分なオーバーヘッドによって結果が低下し、サンドボックスであることが明らかになる可能性がある。
ユーザー活動のチェックは異なる仕組みで機能する。人間が存在するかどうかを判断するために使う亜種もあり、現実的な操作を待つ場合もあれば、LummaC2のように三角法を使ってマウスの動きが人間によるものか合成されたものかを判定する場合もある。疑わしいファイルがこうしたチェックの後も静かなままであれば、能力がないのではなく、意図的な回避行動である可能性がある。
攻撃者は現在、身を隠し、より長く存続し、検知を回避することに、より多くの労力を費やしている。
そのため、防御側はファイルが静かに見えるときの意味を見直す必要がある。滑らかに実行されるファイルでも、重要な手がかりを残している可能性がある。停止する前に周囲の環境を確認したのか。分析されている兆候を探したのか。実際のマウス操作を待ったのか。実行時間を追跡したのか、それともテストを乗り切ろうとしたのか。こうした行動は、明確な攻撃より多くの情報を伝えることがある。
防御側が変えるべきこと
セキュリティチームは、静かな結果が出たからといって、すべて安全だと考えるのをやめるべきだ。疑わしいファイルが実行され、実行時間やユーザー活動を確認した後で何もしない場合は、より詳しく調べる必要がある。
チームは、サンドボックスが何も検知しなかったからといって問題ないと考えるのではなく、検知を回避しようとするマルウェアに対して防御をテストすべきだ。また、ログの送信を停止したデバイスや、セキュリティツールが無効化・変更されたシステムなど、静かな問題にも注意を払う必要がある。
分析環境も、よりだまされにくいものにする必要がある。ハードウェア支援型やベアメタルの実行環境は、マルウェアによるフィンガープリント取得がより困難だ。時間ベースの対策では、信頼できる形で時間を早送りすることで、観測ウィンドウが終わるまで待とうとするマルウェアに、より早く正体を現させることができる。
ファイルが静かなままの場合、防御側はファイルそのものを見るだけにとどまらず、侵害および攻撃のシミュレーションを活用して、自らのシステムが、行動を遅らせたり、環境を確認したり、状況が現実のものに見えるまで行動を待ったりするマルウェアを、なお検知して対応できるかどうかを確認すべきだ。
かつてサンドボックスを使えば、ファイルが危険かどうかを簡単に見分けられた。今では、その信頼性は低下している。監視されていると考えたマルウェアの中には、静かなままでいるものがあるからだ。テスト中に活動していないように見えても、実際には周囲の環境を確認し、実在するシステムを待っている可能性がある。
チームは、沈黙が何を意味するのかを見直す必要がある。何もしないファイルが常に安全とは限らない。マルウェアがテストされていることを認識していた、というだけかもしれない。





