悪用するAPIのレベルによってルートキットは分類可能


△ 図をクリックすると拡大されます
図2●Windows APIのレイヤー
 図2で示すように,WindowsのAPIはいくつかのレイヤー(階層)に分かれている。ルートキットは種類に応じて,異なるレイヤーを攻撃する。高レベルのAPIには十分な資料があるため,ルートキットがその処理を横取りするのは簡単だが,影響も小さい。例えば,Windows APIの高レベルのレイヤーを使うルートキットは,より低レベルなネイティブAPIから情報を直接入手するアプリケーションに対しては効果がない。しかし,比較的低レベルのAPIの処理を横取りするには,より高度な隠ぺい機能が必要になる。

 ユーザー・モードのルートキットは,マルウエアを起動したユーザー・アカウントのプロセスをすべて隠せる。しかし,最も効果があるのは,「プログラムのデバッグ」という特権を持つアカウントで起動したときだ。管理者グループはこの特権をデフォルトで持っており,そのためシステム上のプロセスのすべてにルートキットの影響が及ぶ。この影響は,ウイルス対策やスパイウエア対策プロセスといった,ローカル・システム・アカウントで動作するものにまで及ぶ。つまりルートキットからシステムを守る最良の方法としては,できる限り特権を持たないユーザー・アカウントを使用することが挙げられる。

 最も凶悪なルートキットは,カーネル・モード・レベルのAPIを横取りするタイプだ。しかし,カーネル・モードのルートキットは,デバイス・ドライバをインストールできる権限を持つユーザー・アカウントでマルウエアが実行される必要がある。つまり,その権限がないユーザーのアカウントで動く限りは,ユーザー・モードのルートキットと同じような効果になる。また,カーネル・モードのルートキットの開発には膨大な知識が必要で注意深く作成しなければならない。バグがあればOSがクラッシュしてしまうからで,これはルートキット作成者にとって最も避けたい事態である。プログラムやコンピュータがクラッシュすると,ルートキットの存在に気づかれるからだ。