APIの処理を横取りしてプログラムを隠す
まずルートキットの仕組みを解説しよう。初期のルートキットは,攻撃対象となるコア・システムのプログラム・ファイルを置き換えて,マルウエアのファイルやプロセスを隠す——といった比較的洗練されていないアプローチを採用していた。例えば,実行中のプロセスを表示するための「ps」というUNIXユーティリティのルートキット版があり,それはマルウエアのプロセスをカーネルから取得したプロセス・リストから削除していた。「ls」というUNIXのディレクトリ一覧表示プログラムのルートキット版も同様の処理を行っていた。
システム・プログラムがより洗練され,サード・パーティ製ユーティリティやウイルス対策ソリューションが浸透するにつれて,単純にシステム・ファイルを不正なものに置き換えるというルートキットの手法は廃れていった。Windowsでいうと,タスク・マネージャやtasklistコマンドなど,一般的に使用されるプロセス表示ツールを置き換えることは,ルートキット作成者に大変な量の作業を強いる。そして,もしユーザーがウイルス対策ソフトや別途用意されたプロセス表示ツールといった強力なユーティリティを走らせると,その苦労はすべて無に帰す。
△ 図をクリックすると拡大されます |
図1●ルートキット・ツール「Hacker Defender」が動作しているところ |
図1は有名なルートキット・ツール「Hacker Defender」を実際に動作させたところである。Hacker Defenderは設定ファイルと実行ファイルから構成される。ユーザーがhxdef.exeを実行すると,設定ファイルの記述に従って,ファイル,ディレクトリ,ドライバ,サービス,プロセス,そしてTCP/IPポートを隠す。デフォルト設定では,これらのうちhxdefという文字列を名前に含むものを見えなくする。一度実行した後は,その条件に該当するファイルやディレクトリが表示されなくなる。