システムサービス記述子テーブル

システムサービス記述子テーブル( SSDT ) は、 Microsoft Windows内の内部ディスパッチ テーブルです。

関数

SSDTはシステムコールをカーネル関数のアドレスにマッピングします。ユーザー空間アプリケーションによってシステムコールが発行されると、どのシステムコールが呼び出されたかを示すパラメータとしてサービスインデックスが含まれます。その後、SSDTはntoskrnl.exe内の対応する関数のアドレスを解決するために使用されます。

最新のWindowsカーネルでは、2つのSSDTが使用されます。1つは汎用ルーチン用(KeServiceDescriptorTable)で、もう1つはグラフィカルルーチン用(KeServiceDescriptorTableShadow)です。どちらのSSDTを使用するかは、呼び出し元のユーザー空間アプリケーションから渡されるパラメータによって決定されます。

フッキング

SSDTを改変することで、システムコールをカーネル外のルーチンにリダイレクトすることが可能になります。これらのルーチンは、ソフトウェアの存在を隠蔽するためにも、攻撃者がカーネル権限で永続的にコードを実行できるようにするバックドアとしても利用できます。これらの理由から、 SSDT呼び出しのフックは、Windowsカーネルモードルートキットウイルス対策ソフトウェアの両方でよく使用される手法です。[ 1 ] [ 2 ]

2010年には、SSDT呼び出しをフックすることに依存していた多くのコンピュータセキュリティ製品が、競合状態を利用して製品のセキュリティチェックを攻撃する脆弱性があることが判明しました。 [ 2 ]

参照

参考文献