任意の64ビットバイナリにHigh Entropy ASLRを適用する設定を見つけるまでの備忘録

IE10 が利用するという High Entropy ASLR について Image File Execution Options で 指定する方法がいつまで経っても公開されないので。 ※High Entropy ASLR は Windows 8 の新機能です。 (ノ∀`) Entoropy 続きを読む
1
リンク www.blackhat.com Black Hat USA 2012 | Briefings
鈴木友紀 @0xbadfca11

怖いもの見たさに"is not supported until Windows 8"で検索してみる

2012-08-03 22:31:45
鈴木友紀 @0xbadfca11

もしかして MitigationOptions に指定可能な値って PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY に指定する値なんじゃないか?

2012-08-03 22:39:59
鈴木友紀 @0xbadfca11

ということは High Entoropy ASLR を Image File Execution Options で指定するには MitigationOptions=QWORD:0x100000 (0x00000001 << 20) ということか!ついに見つけたり

2012-08-03 22:53:10
鈴木友紀 @0xbadfca11

"Note that high-entropy bottom-up randomization is effective if and only if bottom-up ASLR is also enabled;" ちょっと何言ってるか分かりませんね

2012-08-03 22:57:55

ここで言っている値は
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel!MitigationOptions
の事
Windows 8で動かす EMET は System Configuration に DisableExceptionChainValidation と MoveImages を使わない

鈴木友紀 @0xbadfca11

8上のEMETでDEP、SEHOP、ASLRを全部AlwaysOnにした時の0x555ってなんだ?DEP_ENABLEとSEHOP_ENABLEとFORCE_RELOCATE_IMAGES_ALWAYS_ONを合わせても0x105にしかならない

2012-08-03 23:18:57
鈴木友紀 @0xbadfca11

該当する 0x00000004 << 8 とかが無い

2012-08-03 23:20:17

VB/VC#2012と違いx64ターゲットのVC++2012では規定で有効の為 /HIGHENTROPYVA:NO を指定しています。

リンク msdn.microsoft.com Breaking Changes in Visual C++
鈴木友紀 @0xbadfca11

MitigationOptions=QWORD:0x100000 によって /HIGHENTROPYVA:NO を指定したバイナリで High Entoropy ASLR が有効になるのを GetProcessMitigationPolicy() で確認

2012-08-03 23:44:39
鈴木友紀 @0xbadfca11

/DYNAMICBASE は必須か /FIXED:NO では有効にならぬ

2012-08-03 23:54:52
鈴木友紀 @0xbadfca11

ああそこでさっきの Note が来るのか 0x110000 で /DYNAMICBASE:NO でもOKになった

2012-08-04 00:01:29
鈴木友紀 @0xbadfca11

8の規定で設定されてる 0x100000000 や 0x111111、EMETが設定する0x555の謎だけが残った

2012-08-04 00:09:13
鈴木友紀 @0xbadfca11

0x00111111 はLSBからDEP、SEHOP、Image ASLR、HEAP Terminate、bottom-up ASLR、high-entropy bottom-up ASLR

2012-08-07 20:35:15
鈴木友紀 @0xbadfca11

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel!MitigationOptions=qword:0x100000 にしたら HEASLR が Opt-out になった 要再起動

2012-08-04 04:34:31
鈴木友紀 @0xbadfca11

EMET_GUI.exe が死ぬ 個別のIFEOキーに MitigationOptions=qword:0x200000 ( PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF ) で解決

2012-08-04 04:36:49
鈴木友紀 @0xbadfca11

全世界で一人しか影響してないと思うけど4.0bになって EMET_GUI.exe が HEASLR で落ちなくなった。

2013-04-19 20:26:31
鈴木友紀 @0xbadfca11

kernelキーでは、0=OptIn(PEヘッダ、API、IFEOキーで有効なもの以外無効)、1=OptOut(0の逆)、2=AlwaysOff(有効化不可)、3=OptOut(ASLRのみ、再配置不可を拒否)、5=AlwaysOn(無効化不可)、7=AlwaysOn(5+3)

2013-02-23 23:24:12