voidmap
CVE-2021-40449 を悪用して、指定されたアドレスで単一の引数を持つ任意の関数を実行させる、非常にシンプルなドライバー手動マッパーです。CallbackHell エクスプロイト PoC に基づいています。Windows 10 Pro For Workstations 1809 17763.379(64ビット)でテスト済みですが、現実的にはその頃のバージョンであればほぼ対応可能です。
以下の処理を行います:
- cr4 レジスタ値を書き換えて SMEP(および場合によっては SMAP)を無効化
- 目的のドライバーを手動マップするユーザーモードコードへジャンプ
- SMEP(および場合によっては SMAP)を再度有効化
このアプローチには主に2つの問題があります:
- 手動マップされたドライバーは ExAllocatePool によって割り当てられたプール内に配置されます。より本格的な用途に使用する場合は、簡単にダンプされないように、より良いメモリ割り当て方法を検討すべきです。
- 元の cr4 値を簡単に読み取る方法がないため、自分のシステムにあった値をハードコードする必要がありました。最近のほとんどの CPU では同じ値であるはずですが、値が正しいかどうかは必ず再確認してください。
動画:
