セキュリティ対策ソフトは、OSが提供する機能を活用して、セキュリティ対策を行っています。
しかし、このような強い機能は、システムが独占する方向に進んでいます。
システム標準のセキュリティが「正規軍」なら、サードパーティ製のセキュリティ対策ソフトは「傭兵部隊」なんだね。
1. カーネルモードドライバー
セキュリティ対策ソフトは、プログラムの不審な動作を監視できるっていうけど、どうしてそんなことができるの?
ほかのプログラムの動作がわかるって、考えたら怖いし、セキュリティ上どうなの?
セキュリティ対策ソフトは、Windowsの「カーネルモードドライバー」として動作することで、プログラムの動作を監視する WindowsAPIを使っています。
一般のアプリケーションは「ユーザーモード」で動作します。
一方、セキュリティ対策ソフトは、システムを保護するためにほかのソフトを監視する上位の権限が必要です。
そこで、「カーネルモードドライバー」を使います。
カーネルモードドライバーは、OSの中核的な部分(カーネル)で実行される特別なソフトウェアです。
- 最高の権限レベルで動作し、ハードウェアやシステムリソースに直接アクセスできる
- システムの重要な機能を制御・監視できる
- プロセスの作成と終了
- ファイルの作成・変更・削除
- レジストリの変更
- ネットワーク通信
- システムの安定性に大きく影響するため、開発には高度な技術と注意が必要
この監視機能は、Windowsが正規のセキュリティソフトにのみ許可した特別な権限です。
一般のアプリケーションには与えられていません。
1-1. カーネルAPIの例
プロセス監視関連:
- PsLookupProcessByProcessId:
プロセスIDからPEPROCESSオブジェクトを取得 - SeLocateProcessImageName:
プロセスの実行ファイルパスを取得 - ObDereferenceObject:
オブジェクトの参照を解放
ファイルシステム監視関連:
- FltGetFileNameInformation:
ファイル名情報を取得 - FltReleaseFileNameInformation:
ファイル名情報を解放 - IRP_MJ_CREATE: ファイル作成操作の識別子
レジストリ監視関連:
- REG_NOTIFY_CLASS:
レジストリ操作の種類を判別 - RegNtPreCreateKey:
レジストリキー作成前の通知
これらのAPIは、Windows Driver Kitに含まれるカーネルモードドライバー開発用のものです。
2. OSはカーネルAPIの使用を制限していく
なお、Windows 11ではセキュリティ強化のため、一部のカーネルAPIの使用に制限が加えられています。
- ドライバー署名の厳格化
Microsoft認証されたデジタル署名が必須 - カーネルメモリへのアクセス制限
Direct Memory Accessの制限 - APIアクセスの制限
特権操作の実行には追加の認証が必要
Windows 11ではセキュリティが強化され、Microsoftによって認証されたセキュリティソフトのみがこれらの機能を使えるようになっています。
不正なプログラムが監視機能を悪用できないようになっています。