ウイルスを根絶する「試験管」

まずはちょっとおさらいを。

100%保証されたプロテクションというものは存在しない。このことはもう十分おわかりだと思う。確かに、最も信頼性の高いアンチウイルス製品でさえ、高度な攻撃では迂回されることがある。この手の悪いニュースにはもううんざりだが、さらに悪いことに、二流のアンチウイルス製品は迂回されることがはるかに多いのだ。

高度な専門技術を持つ犯罪者は、その気になれば何でもハッキングできる。幸いなことに、そのような天才サイバー犯罪者はごくわずかで、サイバー攻撃の大半は、凡人レベルのプログラマーによって実行されている。彼らは欲に駆られて判断力を失ったのか、罪を犯しても逃げ切れると思っているようだ(笑ってしまうが)。このような無謀な犯罪者らは、最先端の強力なセキュリティを破れるだけのサイバー犯罪スキルを持っているわけではないが、まったく保護されていないコンピューターや、ザルのようなプロテクション製品がインストールされたコンピューターには難なく侵入できる。残念なことに、世界はそのようなコンピューターで溢れているのだ。

基本的な論理はとても単純だ。

当然ながら、プロテクションが強力であるほど、防御も強力になる。裏を返せば、高度な攻撃であるほど、強固な防御を破れるということだ。

今や25億人のインターネットユーザー標的がいるため、この論理を以下のように展開できる。

犯罪者は、わざわざ超強力な合い鍵を作って巨大な鉄壁の金庫を破る必要はない(そのような巨大金庫に保管されているのは、本当にゾッとするようなものや、変なもの、知らない方がいいような危険なものが多い・・・)。そんなものより、もっと現実的なところに侵入する方がずっと簡単で安上がりだ。たとえば近所のネットワークなんかは、守りがずっと手薄で、隠してあるものも簡単にわかる。

話が見えてきただろうか?一般的なハッカーには、わざわざ準備して高度な大規模攻撃を実行する理由はないのだ。また、攻撃の主な対象をWindowsからMacに切り替える意味もあまりない。面倒で頭を使うピンポイント攻撃ではなく、できるだけ多くの標的を攻撃する「じゅうたん爆撃」の方がはるかに効果的というわけだ。

プロテクションが強力であるほど、犯罪者の関心は薄れる。わざわざ強力なセキュリティを破ろうという気にはならず、他のもっと脆弱な標的を探すだけだ。

さてここで、サイバー犯罪者の攻撃から特に皆さんのコンピューターを遠ざける機能について説明する。犯罪者を、その機能が搭載されていない別のコンピューターを狙おうという気にさせるものだ。カスペルスキーのアンチウイルス製品の内部にある目を見張るような機能を紹介し、タスクバーに表示される「K」の文字がサイバー攻撃を撃退する仕組みについてもっと詳しく話すことにする。そう、将来の脅威からコンピューターを保護するエミュレーションだ。

emulator_alert_en

もっと詳しく」と書いたのは、以前こちらのページでエミュレーションを取り上げたからだ。読んでいない人は、ざっと目を通してほしいが、忙しい人のために、以下に概要をまとめてみた。

簡単に言うと、エミュレーションは新しいマルウェアを自動的に検知する仕組みだ。怪しいプログラムのふるまいを、実際にはプログラムを実行せずに分析することで、コンピューターに害を与えないようにすることができる。プログラムを起動せずに分析するなんて無理だと思うかもしれないが、それこそがエミュレーションなのだ。実際には実行せずにプログラムの動作を模倣する。エミュレーターは、プログラムが動作するための特別な仮想環境を作り出す。いわゆるウイルス(インフルエンザの一種など)を試験管の中で調べるようなものだ、インフルエンザでダウンした気の毒な人の血管の中で調べるのではない。このアプローチの方が、はるかに害を抑えられる。一般的に病気にかかった人についても言えることだし、コンピューター全般、つまりホストの環境についても言えることだ。

エミュレーションによって、マルウェアが隠れる場所がどこにもなくなるのだ!・・・いや、ほとんど、と言っておくか。というのは、「でも」と言わざるを得ないからだ。

機転が利いて悪知恵の働く(そして極めて危険な)悪質プログラムは、自身が人工的な「試験管」環境にいることを認識できるようになってきており、防御に弱点がないことを悟ると、自動的に攻撃のベクトルを変えるのだ。

では、エミュレーターに対抗するための特別な手口とは?

例を挙げるとこんな感じだ:ドキュメント化されていない機能を立ち上げる、プロセッサのレジスタへの変更を追跡することで環境の信ぴょう性をチェックする、エラーコードを分析する、メモリ内で指定のコードを探す、「論理爆弾」によってエミュレーターを無限ループにおとしいれる、などなど。

手口が成功すると、マルウェアは自分が試験管の中にいることを認識し、猫をかぶったように一見無害なプログラムのふりをするか、単に自身をシャットダウンする。その後、バックグラウンドでこっそりと別のロジックで攻撃をしかけて、気づかれないうちにエミュレーターをすり抜けようとする。

長年にわたるこの戦線での戦いは、一進一退の攻防だった。一方が優勢に立てばすぐにもう一方が逆転し、巧妙な手口を思いついてはその対策が考え出されるという、いたちごっこが延々と続き、一般のユーザーにはほとんど恩恵がなかった。この戦いがあまりにも長く続き疲労困憊したため、また、大量のリソースを消費する戦いだったため、一部のエキスパートは、エミュレーターが有用なアンチマルウェア技術だった時代はもう終わりだと考えた。しかしカスペルスキーは、この戦いで最後に勝つ方法を見つけ出したのだ!

プロテクションが強力であるほど、犯罪者の関心は薄れる。わざわざ強力なセキュリティを破ろうという気にはならず、他のもっと脆弱な標的を探すだけだ。

エミュレーションで勝利するために必要だったものは明らかだった。人体(実際のコンピューター環境)と同一の試験管(テスト環境)を作り出す能力だ。

クローン時代における生物学上のウイルスについては詳しくないが、コンピューターウイルスに関しては、理論的に可能だ。とはいえ、それにはとんでもない金額が必要で、実用化が非常に難しいのだ。なぜかというと、まったく新しいオペレーティングシステムを開発しなければならないからだ。それも、元のOSに完全に対応するものだ。しかも、そのようなOSを怪しいファイルを1つ見つけるごとに起動しなければならない。一体どのくらいのシステムリソースが必要になるのだろう?

そこで、別のルートを行くことにした。普段はあまり通らない道、すなわち迂回だ。

現在、悪質プログラムの大半はOSのユーザーレベルで動作する。しかし、システムコール(ファイルの読み書きなど)はシステムのカーネルシステムレベルでやりとりする。この2つのレベルには大きな違いがある。ユーザーレベルでは、プログラムは環境に加えられた変更を認識できるが(そのためエミュレーターを欺く手口を使うことが可能)、システムレベルでは認識できない。

そこで我々は高度なアンチマルウェアエミュレーション技術のすべてをシステムレベルに集中し、ユーザーレベルでは、可能な限り元の環境と同じ環境を再現することに注力した。その結果、「試験管」を見えなくするほぼ完ぺきなソリューションができたのだ。

具体的には、すべてのAPI関数呼び出しの実行を正確にエミュレートし、さらにシステムレベルに移って詳細なアンチマルウェア分析を行う。ユーザーレベルにあるマルウェアは「おとがめなし」と勘違いして気をよくするが、最終的には、その悪らつな本質と意図をさらけ出すことになるのだ!

ただ残念なことに、どんな技術にも言えることだが、カスペルスキーの超強力(ついでに言うと非常に安定した)エミュレーターは、コンピューターのパフォーマンスを大幅に低下させてしまう。そこで、インテリジェントなハードウェアアクセラレーターを追加した。これは必要に応じてソフトウェアベースのエミュレーションを迂回し、プログラムの一部を本物のプロセッサ上で実行する。ここでは詳しく話さないが(出願した特許がまだ審査中なのだ)、我々が考え出したものは、従来のエミュレーションよりもはるかに高速な技術が組み合わされている、とだけ言っておこう…!

コメントを読む 0
コメントを書く