- OSリソースへのアプリケーションアクセス権の差別化( ユーザーアカウント制御 、 整合性レベル )。 Vista +
- DEPおよびASLRメモリを使用する場合の特別な緩和要素。 XP SP2 / Vista +。 DEPはシステム設定によって設定され、Windows 8以降ではすべてのアプリケーションに対してアクティブです(プロセッササポート)。 ASLRは、サポート付きでコンパイルされたアプリケーションで機能します。
- カーネルモードで動作するコンポーネント用のカーネルASLR / DEP。 Vista SP1 +。 ASLR / DEPは、カーネルモードモジュールではデフォルトでアクティブです;プール内のデータの実行からのDEPは、 NonPagedPoolNx (Windows 8以降)からの割り当てが必要です。
- OSレベル(SEHOP)でのSEHの関数ポインターの書き換えに対する保護。 Vista SP1 +。 デフォルトでは、サーバーエディションでのみアクティブです。
- エクスプロイトのアクションからシステムの耐性を高める無料のEMETツール(v 4.1最終更新)。 Windows XP +の場合。
- AppContainerプロセスの分離の拡張(サンドボックス化、整合性レベルの拡張)。 Windows 8以降。 Internet Explorer 10以降およびすべてのモダンUI(Metroアプリケーション)に使用されます。
- 信頼できないアプリケーションのカーネルオブジェクトのアドレスに関する情報へのアクセスをブロックします( KASLRバイパス軽減 )。 Windows 8.1
最後の点は、Windows 8.1のMSによってAppContainerモードまたは整合性レベルの拡張として追加されたため、特別な注意に値します。 比較的言えば、信頼されていない別名制限付き呼び出し元アプリケーション(整合性レベル< 中 )は、カーネルモードでさまざまなオブジェクトのアドレスに関する情報を取得する権利を持ちません。 そのような情報を開示する主な機能は、もちろん、さまざまなクラスを持つNtQuerySystemInformationと、 NtQueryProcessInformationです。 これらの機能に対して、それぞれのアプリケーションへのアクセスが制限されています。
NtQuerySystemInformationの場合、次のクラスの情報を要求すると、整合性レベルが低いアプリケーションがSTATUS_ACCESS_DENIEDを返します。
- SystemModuleInformation / SystemModuleInformationEx-ロードされたドライバーのアドレス
- SystemLocksInformation-カーネルオブジェクトのアドレス(ERESOURCE)
- SystemStackTraceInformation-カーネルモードスタックアドレス
- SystemHandleInformation / SystemExtendedHandleInformation-カーネルオブジェクトのアドレス
- SystemObjectInformation-カーネルオブジェクトのアドレス
- SystemBigPoolInformation / SystemSessionBigPoolInformation-割り当てられたシステムメモリのアドレス
- SystemProcessInformation / SystemExtendedProcessinformation / SystemFullProcessInformation-プロセス、スレッド、およびそれらのスタックのカーネルのオブジェクトのアドレス。
図 ntoskrnl!NtQuerySystemInformationにアクセスしようとしているアプリケーションのアクセストークン内の整合性レベルチェック機能のコールポイント。 ntoskrnl!ExpQuerySystemInformationは、対応するクラスの情報を収集し、検証自体を実行するntoskrnl!ExIsRestrictedCaller関数を呼び出します。
NtQuerySystemInformationに加えて、 NtQueryInformationProcess関数へのアクセスがブロックされます。これにより、アプリケーションはさまざまなオブジェクトのアドレスにアクセスできます。 ProcessHandleTracing 、 ProcessWorkingSetWatch / ProcessWorkingSetWatchExクラスの場合、対応するエラーステータスも返されます。
www.alex-ionescu.com/?p=82