eSecurity Planet content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More
不審なファイルをサンドボックスで実行しても、ほとんど何も起こらないことがあります。従来であれば、こうした挙動の乏しさはリスクの低さを示唆すると考えられてきました。
しかし、より重要なのは「なぜ静かなままだったのか」という点です。ファイルが実行に失敗しただけなのか、それともサンドボックスであることを見抜いたうえで、本来の能力を明かさないことを選んだのか——見極める必要があります。
現代のマルウェアは、いつ実行に移るかについてますます選別的になっています。仮想化の痕跡を探したり、システムのタイミングを計測したり、ユーザーの活動を検知したり、ホストが実環境のエンドポイントに見えるかどうかを確認したりすることができます。
中には、マウスの動きが人間によるものか自動化されたものかを三角関数を用いて判定する種類のマルウェアも存在します。動きが不自然だと判断すれば、マルウェアは休眠状態を維持したり、実行を遅延させたり、本来の機能を隠したりします。
ATT&CK技術T1497にマッピングされる仮想化・サンドボックス回避は、現在観測されている脅威活動の中でも特に頻出する回避技術の一つとなっています。分析中は大人しくしていたサンプルが、実際のエンドポイントに到達した途端まったく異なる挙動を見せることも少なくありません。
「沈黙するマルウェア」がなお危険な理由
セキュリティチームの間では、長らく「観測可能な挙動」こそが信頼できる情報源とされてきました。検体を実行した結果、ネットワーク通信や認証情報へのアクセス、永続化の変更、メモリインジェクションといった痕跡が生じれば、アナリストはそれを手がかりに調査を進められます。
しかし、目に見える活動がほとんど、あるいはまったく確認できない場合、そのサンプルを「リスクが低い」「価値が乏しい」と判断してしまいがちです。この直感は、今や危険なものになっています。多くの場合、「何もしないこと」自体が攻撃者の手口の一部だからです。
ユーザー活動のチェックは、マルウェアが実行環境が本物かどうかを見極める手段の一つです。しかし、自動化された環境では、人間の行動に見られる細かな不規則さを再現するのは容易ではありません。
実際のエンドポイントには、閲覧履歴や最近開いたファイル、不規則なマウスの動き、長さがまちまちな間(ま)、そして日常業務に伴う様々な「ノイズ」が存在します。
一方、サンドボックスにはこうした要素が概して欠けています。マルウェアの作成者はこの点を熟知しており、多くの亜種は、人間による直接的な操作の証拠が現れるまで動作を待機します。つまり、挙動が見られないことは、安全であることの証ではなく、回避行動の兆候である可能性があるのです。
例としてLummaC2マルウェアを見てみましょう。このマルウェアは、単にマウスが動いているかどうかを確認するだけではありません。どのように動いているかまで分析するのです。カーソルの位置をサンプリングし、各点間のユークリッド距離や角度を測定することで、実際の人間の動きと、スクリプトが生成する滑らかで直線的な動きとを区別します。人間によるマウスの動きには微細な曲線や躊躇、細かな方向転換が伴いますが、スクリプトによる動きにはそれがありません。計算の結果、動きが偽物だと判断されれば、マルウェアは活動を停止したままになります。
マルウェアがサンドボックス検知を回避する仕組み
マルウェアはサンドボックスを回避するために、タイミングチェックも利用します。
中には、単に待機するだけにとどまらない種類もあります。例えばBlitzは、2つのスレッドを並行して実行し、それぞれの処理性能を比較します。一方のスレッドはCPUID命令を実行し、もう一方は浮動小数点演算を行います。物理ハードウェア上では、その結果が通常は一定の値を上回り、システムが実機であることを示します。一方、仮想マシン上では余計なオーバーヘッドによって結果が低下し、サンドボックスであることが露呈してしまいます。
ユーザー活動のチェックは、これとは異なる働き方をします。人間が存在するかどうかを判断するために用いる亜種もあり、その中には現実味のある操作を待ち受けるものや、LummaC2のように三角関数を使ってマウスの動きが人間らしいか合成的かを判定するものがあります。こうしたチェックの後に不審なファイルが沈黙を続ける場合、それは能力の欠如ではなく、意図的な回避行動である可能性があります。
攻撃者は現在、身を隠すこと、活動を長く持続させること、検知を回避することに、これまで以上に力を注いでいます。
そのため、防御側は「ファイルが静かに見える」ことの意味を改めて捉え直す必要があります。スムーズに実行を終えたファイルであっても、重要な手がかりを残している可能性があります。実行前に周辺環境をチェックしていなかったか。分析されている兆候を探していなかったか。実際のマウス操作を待っていなかったか。実行時間を計測し、テストの制限時間をやり過ごそうとしていなかったか——これらの挙動は、明白な攻撃行動以上に多くを物語ることがあります。
防御側が変えるべき対応
セキュリティチームは、「静かな結果=安全」という前提を捨てるべきです。不審なファイルが実行され、経過時間やユーザー活動の有無を確認したうえで何もしなかった場合、それはより詳しい調査を要する対象だと言えます。
チームは、サンドボックスが何も検知しなかったからといって安心するのではなく、検知回避を試みるマルウェアを想定した防御テストを実施すべきです。また、ログの送信が止まったデバイスや、セキュリティツールが無効化・改変されたシステムなど、「静かな異常」にも目を配る必要があります。
分析環境そのものも、より欺きにくいものにする必要があります。ハードウェア支援型やベアメタル型の検体実行環境は、マルウェアによるフィンガープリンティングが難しくなります。時間ベースの対抗策も有効で、時間を現実味のある形で早送りすることで、観測ウィンドウをやり過ごそうとするマルウェアに、より早い段階での正体露見を強いることができます。
ファイルが沈黙を続ける場合、防御側はそのファイル自体を見るだけにとどまるべきではありません。侵害・攻撃シミュレーションを活用し、行動を遅延させたり、環境をチェックしたり、状況が「本物」らしく見えるまで動作を待ったりするマルウェアを、自社のシステムが依然として検知し対応できるかどうかを確認すべきです。
かつて、サンドボックスはファイルが危険かどうかを容易に判別する手段でした。しかし現在では、監視されていると察知したマルウェアが沈黙を保つケースがあるため、その信頼性は以前ほど高くありません。テスト中は無反応に見えるものが、実は周辺環境をチェックしながら、本物のシステムに出会うのを待っている可能性があるのです。
チームは、「沈黙」が意味するところを見直す必要があります。何もしないファイルが常に安全とは限りません——それは単に、テストされていることをマルウェアが察知していたというだけかもしれないのです。