McAfee Avert Labs Blog
「WFP hack redefined!!!」より
July 5, 2007 Posted by Prashanth PR

 7月5日(米国時間),McAfee Anti-Virus Emergency Response Team(AVERT:米マカフィーのウイルス対策技術研究機関)において,Windows File Protection(WFP)の文書化されていない機能を利用した興味深いマルウエアW32/Crimeaに遭遇した。

 WFPは同OSの一機能であり,重要なWindows用システム・ファイルを外部プログラムから変更/置換/削除されることを防ぐことができる(このプロセスによって保護されているファイルが削除,または上書きされると,WFPは自動的にそのファイルを元のバージョンに戻すようになっている)。WFP機能を実現するファイルはSFC.dllおよびSFC_OS.dllで,システム・ファイル監視用の関数を含んでいる。以前のマルウエアは,これらのdllでパッチを偽装,あるいはレジストリを変更して,WFP機能を無効化する手口を使っていた。Windowsのファイルを攻撃対象としたマルウエアが利用する手口の一部は,過去のブログ記事でも取り上げている。

 SFC.dllとSFC_OS.dllのパッチ偽装により,数多くあるWindowsの防御機能の一部が役に立たなくなった。その後,ウイルス対策ソフトのベンダーは,これらの偽装パッチが当てられたdllを特定する方法を発見し,利用者のコンピュータから排除する対策を提供した。そして今回,マルウエア作成者は,SFC_OS.dllそのものの文書化されていない関数を悪用するという,別の方法を再び見出したのだ。

 ハッカーが探りを入れてみたら大当たりした,といったところだろうか。ここで触れておくべき重要な関数は以下の二つだ。

1. Ordinal 2:SfcTerminateWatcherThread
2. Ordinal 5:SetSfcFileException

 Ordinal 2関数は,システム・ファイル監視スレッドを終了させる役割を持つ。この関数を実行するとシステムは無防備な状態になり,次にシステムが再起動されるまでの間,マルウエアは自由にディレクトリ/ファイルを変更できるようになる。ただ,Windowsはディレクトリ/ファイル変更からシステムを守るために,winlogonプロセスでSFC_OS.dllを使っている。このため,この手口を使うには,マルウエアはOrdinal 2関数を呼び出すためのコードをwinlogon.exeに注入しなければならない。

 もう一つのOrdinal 5関数は,特定ファイルに対するWFP機能を1分間無効にする。しばらくするとシステムは正常な状態に戻るが,その時にはマルウエアに感染しているという状況を作り出せる。これらのテクニックは1年以上前に明らかになっていたが,マルウエアでの使用を見かけるようになったのは最近である。2番目の手口は,W32/Crimeaがシステム・ファイルimm32.dllに感染する際に用いる。

 米マイクロソフトはなぜ,複数のマルウエアから攻撃を受けるようなAPIをWindowsで提供するのか,と考える人がいるかもしれない。理由の一つは,おそらくシステム・ファイルの更新とパッチのインストールにあるだろう。とはいえ,Windowsにたやすくマルウエアを感染させられる方法があるのは確かだ。

 マイクロソフトは独自のAPIでWFPを無効にする方法を提供している。ただそうなると,WFPは機能の一つということなのか,あるいは不具合なのか疑問に思えてくる。



Copyrights (C) 2007 McAfee, Inc. All rights reserved.

本記事の内容執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,マカフィーの許可を得て,米国のセキュリティ・ラボであるMcAfee Avert Labsの研究員が執筆するブログMcAfee Avert Labs Blogの記事を抜粋して日本語化したものです。
オリジナルの記事は,「WFP hack redefined!!!」でお読みいただけます。