任意の64ビットバイナリにHigh Entropy ASLRを適用する設定を見つけるまでの備忘録
- 0xbadfca11
- 5671
- 0
- 0
- 0
High Entropy ASLR有効時のエントロピー増加量
https://media.blackhat.com/bh-us-12/Briefings/M_Miller/BH_US_12_Miller_Exploit_Mitigation_Slides.pdf#page=20
もしかして MitigationOptions に指定可能な値って PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY に指定する値なんじゃないか?
2012-08-03 22:39:59(0x00000003 << 8) == 0x300 ティン! http://t.co/rdh6BfRU http://t.co/dNc7ToTh
2012-08-03 22:44:03ということは High Entoropy ASLR を Image File Execution Options で指定するには MitigationOptions=QWORD:0x100000 (0x00000001 << 20) ということか!ついに見つけたり
2012-08-03 22:53:10"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 を使わない
8上のEMETでDEP、SEHOP、ASLRを全部AlwaysOnにした時の0x555ってなんだ?DEP_ENABLEとSEHOP_ENABLEとFORCE_RELOCATE_IMAGES_ALWAYS_ONを合わせても0x105にしかならない
2012-08-03 23:18:57VB/VC#2012と違いx64ターゲットのVC++2012では規定で有効の為 /HIGHENTROPYVA:NO を指定しています。
MitigationOptions=QWORD:0x100000 によって /HIGHENTROPYVA:NO を指定したバイナリで High Entoropy ASLR が有効になるのを GetProcessMitigationPolicy() で確認
2012-08-03 23:44:390x00111111 はLSBからDEP、SEHOP、Image ASLR、HEAP Terminate、bottom-up ASLR、high-entropy bottom-up ASLR
2012-08-07 20:35:15HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel!MitigationOptions=qword:0x100000 にしたら HEASLR が Opt-out になった 要再起動
2012-08-04 04:34:31EMET_GUI.exe が死ぬ 個別のIFEOキーに MitigationOptions=qword:0x200000 ( PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF ) で解決
2012-08-04 04:36:49kernelキーでは、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