2013年8月7日
ブートセクターの怪人
おまえを支配する私の力は
まだまだ強くなっていく
アンドリュー・ロイド・ウェッバー – オペラ座の怪人
今も続くマルウェアとアンチマルウェア技術の戦いにおいて、何度も繰り返されている興味深いゲームがある。お城の王様ごっこというゲームだ。
ルールは至ってシンプル。勝った方が先に自分をコンピューターメモリにロードさせて、その「レベル」の支配権を握り、他のアプリケーションから身を守ることができる。そして、城の上から辺りを静かにくまなく見渡して、システム内の秩序を守るのだ(一方、悪意のある方が勝てば、人知れず、罰を受けることなく混沌を引き起こすことができる)。
要するに、勝者がすべてを手に入れるゲームだ。コンピューターを支配するわけだ。
起動プロセスにおいて主導権を握るためのアプリケーションのリストの最初にあるのは、ブートセクターだ。ブートセクターはディスク上の特別なセクションであり、何を、いつ、どこにロードするかという指示命令のすべてが格納されている。何より恐ろしいのは、オペレーティングシステムでさえそのリストに固執するということ。サイバー犯罪者が長い間、ブートセクターに不健全な興味を抱いてきたのにも頷ける。コンピューターが感染しているという事実を完全に隠しつつ先手を取るには、ブートセクターを悪用するのが一番だからだ。サイバー犯罪者がこのために使う特別なマルウェア、それがブートキットだ。
コンピューターのロードの仕組み
この記事では、ブートキットとは何なのか、我々がどのようにブートキットからユーザーを守るのかを紹介する。
実際のところ、ブートキットはかなり昔から存在する。
古くは80年代半ばから、ブートキットは最もまん延していたウイルスの一種だった。最初のDOSウイルスであるBrainもブートキットだ。しかし、ウイルス研究者がいち早く対処法を見つけたため、ウイルス作成者もすぐに興味を失い、MS Office向けのマクロウイルスやインターネットワームなど、(彼らにとって)もっと効果的な他のウイルスに移っていった。
ブートキットが勢いを取り戻したのは2007年末のことだ。このとき登場したスパイウェア型トロイの木馬Sinowalの新種は、ブートセクターへの感染能力を持つものだった。ブートキットは(90年代末に消えた)過去のものと考えていた一部のアンチウイルス企業は大きなショックを受ける。あまりにも古い技術だったために、一部の製品にはブートセクターを保護する機能がまったくなかったのだ。
ブートキットが世界的に大流行したことはないが、カスペルスキーのレポートは、ブートキットが常に目立たないところで(それでも気づけるレベルの)害になっていることを示している。コンピューターのアンダーグラウンドでは常に新しい手口が考えられているのだ。
でも、ブートキットがそこまで巧妙で検知が難しいのなら、なぜもっとまん延していないのか、不思議に思う人もいるかもしれない。大変な労力をかける価値が本当にあるのだろうか?そもそも、ブートキット対策技術を開発せねば、と気をもむ必要などあるのだろうか?
まず、我々は、各種ブートキットに感染しているコンピューターは世界に約1,000万台あると見積もっている。大した数ではないから防御を講じるほどの問題ではない、とはとても言えない。
次に、この感染手法は、国家が支援する高度な標的型攻撃(有名なFinSpyなど)で積極的に使用されている。サイバー戦争や特殊作戦部隊の犠牲になるという将来に魅力を感じない、ということには同意してもらえると思う。
また、ブートキットを作成するには、システムプログラミングに関する非常に深い知識が必要になる。平凡なサイバー犯罪者の能力をはるかに超える知識だ。確かにブートキットは巧妙で検知が難しいのだが、無敵ではない。こうした攻撃を防ぐのも決して単純ではないが、それでも我々は、何とかやり遂げた。うまくいった、と言えるくらい。では、その方法を説明しよう。
2013年のブートキット感染状況
(カスペルスキー製品ユーザーのデータに基づく感染ユーザー数分布)
まずはブートキットのライフサイクルについて少しお話しする。
通常、ブートキットの攻撃は、オペレーティングシステムか、コンピューターにインストールされたソフトウェアのぜい弱性から始まる。ユーザーがWebサイトを訪れただけで、ブートキットはそのコンピューターの内部を調べ、弱点を見つけると攻撃する。具体的に言うと、ファイルがひそかにコンピューターにロードされ、このファイルから感染が始まる。
感染すると、ブートキットは自分自身をブートセクターに書き込んで、元々ブートセクターにあったコンテンツを、ハードディスク内の強力に保護された場所に移し、それを暗号化する。その後は、コンピューターの電源が入るたびに、ブートキットのモジュールがメモリにロードされる。モジュールにはさまざまな悪質ペイロード(銀行を狙うトロイの木馬など)と、それらを隠す手段であるルートキットが含まれている。ルートキットは感染を隠すために必要なもので、後からオペレーティングシステムや他のアプリケーション(アンチウイルスを含む)がブートセクターのコンテンツをチェックしようとするのを認識し、元のコンテンツを居心地の良いシェルターからブートセクターに戻す。なんとこれで、何も問題がないように見えてしまうのだ。
このようにシステムを独裁支配されてしまうと、感染を除去するには、別のディスクから起動して、ウイルスのないオペレーティングシステムと、優れたアンチウイルス技術を使うしかないと思えるかもしれない。確かにそれも1つの選択肢ではあるが、我々は活動中のブートキット(未知のものも含め)との戦いに役立つ技術を開発した。このような「外科手術」を行うことなく、コンピューターを自動的に治療できる技術だ。
カスペルスキーの法人向け製品にも個人向け製品にもブートエミュレーターが搭載されている。ブートエミュレーターは、オペレーティングシステム用のエミュレーターやブラウザー用エミュレーターのように、コンピューターの起動プロセスを再現する人工環境を作り出す。次に、捕捉したすべてのディスク機能に高度なチェックをかけて、必要なセクターをすべて収集し、特殊なブート可能コンテナを作成して、この環境に展開する。ブートキットは行動を起こすときが来たと考え、お決まりの手順を開始するが、このタイミングでカスペルスキー製品がブートキットに襲いかかる。疑わしいオブジェクトがクラウドベースのアンチマルウェアサービス「Kaspersky Security Network(KSN)」から当社のウイルスアナリストへ送られ、適切なプロテクション手段が開発され、データベースがアップデートされる。この技術が本領を発揮するのはここからだ。我々のアンチウイルス製品は、元のブートセクターの暗号化を解き、ブートキットとそのすべてのモジュールを削除し、システムを復元する。それまで待てないなら、無料のユーティリティKaspersky Virus Removal Tool(KVRT)でコンピューターを修復することもできる。
この技術の本当にすごいところは、未知のブートキットからの保護にも役立つ点だ。
最初に、ローカルのヒューリスティック分析でブートエミュレーション中の怪しい活動を検知する。次に、統計的手法を使用するKSNクラウドを使ってブートキットの異常を検知する。
他のエミュレーターと同じように、コンピューターを仮想的に起動するには膨大なリソースが必要になる。だが、ブートセクターの詳細な分析を頻繁に実行することはない。つまり、いいとこ取りをすることにした。ブートセクターのスキャンは必要なときに実行するし、定期的に(夜間などに)実行することも、コンピューターがアイドル状態のときに実行することもできる。やることをやって、みんなハッピーというわけだ(笑)
では、今後はどうなるのだろうか。
間違いなく、ブートキットは進化を続けて、より高度になっていくだろう。その最たる例が、多様な形態を持つマルウェアXPAJだ。このマルウェアは、最近導入されたWindowsの防御機能さえも簡単にすり抜けて、ブートキットモジュールを隠す。システムレベルのさらに深いところにまで侵入するBIOSキットも今後の課題だ。
また明らかに、このクラスのマルウェアを好んで武器として使うのは少数のサイバー犯罪組織だけにとどまるだろう。ブートキットは、陰に隠れて自分たちがあまり注目されないようにするための論理的な手段なのだ。
彼らが隠れる陰は他にも出てくるだろう。それをもたらすのは、ブートキットに対するプロテクションを忘れてしまった、多くの人気アンチウイルス製品だ。ここにその証拠がある。下の表は最近実施された比較テストの結果で、各種アンチウイルスが一般的なブートキットによるアクティブな感染を除去する能力を調べたものだ。悲観的な状況の中にも、楽観的な光が見えるはずだ。
物事はやはり、どんどんおもしろくなっている。その間、我々も遊んでいるわけではない。考えて、働いて、発明し、導入し、検知して、直し・・・そして世界を救っているのだ!