
これはCVE-2015-2426(MS-078)のエクスプロイトです。Hacking Teamアーカイブから得られたWindowsカーネルのローカル特権昇格0dayです(メールはここ)。Eugene Ching / Qavar securityによって開発されました。以下が元の内容です:
Windowsカーネルのメモリ破壊により特権昇格をもたらすエクスプロイト。
Windows 8.1(2015年1月28日時点で完全にパッチ適用済み)でテスト済み。
以下に対しても動作確認済み:
Chromeに適切なRCEが存在することを前提としています(スレッドを Chromeに注入することでシミュレート)
メインのエクスプロイトは PIC.c に実装されており、これは
Visual Studio 2013 Express ソリューションの一部として提供されています。
ソリューションをビルドすると PIC.exe が生成されます。
最終的には、エクスプロイトをターゲットのメモリに注入し、直接 実行したいと考えています。そのためには、関連する命令 (オペコード)と必要なデータのみを注入する必要があります。
そこで、PIC.exe からコードセグメント(オペコード)を抽出し、必要なデータ
(不正なフォント、font-data.bin)を一連のバイト列に追加します。
これにより、ターゲットに直接注入して
CreateRemoteThread() を呼び出せる「raw bytes」が生成されます。
この処理は、make-raw-bytes.py という名前のPythonスクリプトによって自動化されています。
出力は raw-bytes.bin です。
「raw bytes」を、実際に「raw bytes」をターゲットへ注入する.exeに変換するには、
WriteProcessMemory() と CreateRemoteThread() を呼び出す必要があります。
この処理は make-injector-cpp.py によって行われます。出力は
injector.cpp です。これは、コンパイルすると対象のPIDを受け取り、
エクスプロイトを実行するコードです。
便宜上、make.bat は上記の手順を実行して
injector.exe を直接生成します。
言い換えると、make.bat は次のことを行います: