
カーネルモードのWindowsドライバーで、プロセス生成をインターセプトし、eqnedt32.exeによって生成された悪意のある子プロセスを拒否することで、CVE-2017-11882の悪用をブロックします。
CVE-2017-11882 を無効化する Windows ドライバー : )
このプロジェクトは、カスタムデバイス上で 逆呼び出しモデル を使用して通信する、カーネルドライバーとユーザーモード通知コンポーネントに分かれています。
DriverEntry は PsSetCreateProcessNotifyRoutineEx コールバックを登録し、新しいプロセスの実行が開始される前に、システム全体でプロセスが作成されるたびにドライバーが同期的に呼び出されるようにします。ZwOpenProcess を使用して親プロセスを開き、ProcessImageFileName を照会して完全な NT パスを取得します。末尾サフィックスの RtlCompareUnicodeString を eqnedt32.exe に対して実行し、これが悪用の試みであるかどうかを判断します。CreateInfo->CreationStatus = STATUS_ACCESS_DENIED を設定します。これは、コールバックからプロセスの起動を中止するための文書化された方法です。エージェントは2つのスレッドを使用します。WaitForSingleObject + GetOverlappedResult を使用して逆呼び出しループを実行する I/O ディスパッチャーと、アラートをポップアップして MessageBoxW でレンダリングする UI ワーカーです。ハンドルは、小さな RAII の AutoHandle ラッパーによって管理されます。
検出全体は、カーネルが報告する親 PID に依存しています。攻撃者は PROC_THREAD_ATTRIBUTE_PARENT_PROCESS を指定して NtCreateUserProcess を呼び出すことで、ペイロードの親を explorer.exe に変更し、検出を回避できます : )
このソリューションは、プロセスインジェクションやインメモリコード実行を行う高度なエクスプロイトを検出しません。この CVE の一般的なエクスプロイト(新しい(悪意のある)プロセスを生成するもの)のみを検出します。