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

IE10 が利用するという High Entropy ASLR について Image File Execution Options で 指定する方法がいつまで経っても公開されないので。 ※High Entropy ASLR は Windows 8 の新機能です。 (ノ∀`) Entoropy 続きを読む
1

↑間違いあり↓訂正

鈴木友紀 @0xbadfca11

0=継承(他のレジストリやBCDストアの設定値を引き継ぐ、PEヘッダによる暗黙有効有)、2=OptIn(process creation attr listとIFEOキーのみ有効、PEヘッダ&API無効)、3=OptOut(DEP=ATLサンクエミュ有効)、6=AlwaysOff

2013-04-19 22:21:31
鈴木友紀 @0xbadfca11

IFEOキーでは、0=継承、1=On、2=Off、3=On(ASLRのみ、再配置不可を拒否)。定義の _ALWAYS_ というのが余計。ASLRでkernelとIFEOで矛盾する値を指定するとERROR_INVALID_ADDRESSなどが出るのでやめよう。

2013-02-23 23:24:16
鈴木友紀 @0xbadfca11

Windows 8でEMETのシステム設定からSEHOPをOptOutまたはAlwaysOnに設定するとIMAGE_DLLCHARACTERISTICS_NX_COMPATを問わずATLサンクエミュレーション有効のDEPが有効になるという斬新な挙動を見つけてしまい途方に暮れる。

2013-04-21 16:08:42
鈴木友紀 @0xbadfca11

Windows8でMitigationOptionsでDEPをOptOutに設定する(EMET3.5TP経由含む)とATLサンク救済処置が行われない。BCDストアでnxがOptOutになっているとき(システムのプロパティ経由含む)は従来通り行われる。

2013-03-15 19:39:10
鈴木友紀 @0xbadfca11

PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE という定義があったことを思い出してDEPの桁を1から3に変更したらATL thunk emulationが働くようになった。

2013-03-18 20:49:31
鈴木友紀 @0xbadfca11

Windows 8でMitigationOptionsを使ってDEPの挙動をVista/7と一致させることはできないという結論。 1にする⇒/NXCOMPAT:NOに対してATLサンクエミュが有効にならない 3にする⇒/NXCOMPATに対してATLサンクエミュが有効になる

2013-04-21 17:15:24
鈴木友紀 @0xbadfca11

今更ながらEMETでDEPをOptOutにしたときシステムのプロパティの「次に選択するものを除く~」が機能してない(そこ確認してなかったのかよ)。つまりOptOutでありながらOptOutするUIが無い(EMETのConfigure AppsではWindowsの機能は切れない)。

2013-05-12 21:47:55
鈴木友紀 @0xbadfca11

他に今まで確かめてなかった事としては、エントリポイントが実行可能セクション内を指していない時など自動的にDEPから除外されるプロセスも除外されない。もうね…。

2013-05-12 21:48:04
鈴木友紀 @0xbadfca11

BCDストアとMitigationOptionsで違う値を設定するとシステム情報の取得はBCDストアを実挙動はMitigationOptionsを返す。

2013-05-12 21:48:17
鈴木友紀 @0xbadfca11

GetSystemDEPPolicy()==AlwaysOffでGetProcessDEPPolicy()==PROCESS_DEP_ENABLE,TRUEが同時に観測可能なのは流石にふざけてる。

2013-05-12 21:48:25
鈴木友紀 @0xbadfca11

DisableExceptionChainValidationを1にするのと値自体が存在しないのは挙動が違う。 Disable SEHOP « Convert Windows Server 2012 to a Workstation! http://t.co/TlRyVco9cc

2013-05-22 21:38:35
鈴木友紀 @0xbadfca11

未設定だと本来発動する場面で殺されないだけで、イベントログには残るし、クラッシュダンプも採られてるし、SUBSYSTEM=6.2の暗黙有効も効く。1に設定すると全部Offる。7/Vistaには無い挙動。

2013-05-22 21:38:51
鈴木友紀 @0xbadfca11

Windows 8ではWindows 7で起きていたMoveImages=0 && MitigationOptions=0x100にするとERROR_INVALID_ADDRESSで起動できない問題が解決してる。が、代わりにMoveImages=0でASLRが無効化できない。

2013-05-25 23:58:43
鈴木友紀 @0xbadfca11

WindowsのASLR実装は実行ファイルがランダマイズされないとスタックもランダマイズされないと以前知ったけど、これはMoveImages=0xffffffffやMitigationOptions=0x100を行っても実行ファイルが再配置出来なければ事情は一緒。

2013-05-26 23:35:49
鈴木友紀 @0xbadfca11

8では有効な値でも7ではKB2639308に載っている以外の値を設定するとForceASLRまで無効になる。

2013-05-27 00:03:41
鈴木友紀 @0xbadfca11

PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ONを無効化できると思ったのに出来ない。0x200って何のために存在してるの?

2013-05-27 00:32:40
鈴木友紀 @0xbadfca11

表にしてわかるWindows 8のMitigationOptions値の謎挙動。 https://t.co/icxjoPzAJN

2013-05-27 21:30:58
鈴木友紀 @0xbadfca11

IFEOキーにおけるDisableExceptionChainValidationとMitigationOptionsは無効にする方が優先、なんじゃそりゃ。

2013-05-27 21:46:22
鈴木友紀 @0xbadfca11

EMET on Win8でASLR=Disabledにしたときに効果を発揮するもの見つけた。IFEOキーで0x100/0x300のForceASLRが働かなくなる。(/DYNAMICBASEなイメージに対して無効にできないのは変わらない)

2013-05-31 21:20:56
鈴木友紀 @0xbadfca11

EMETでSEHOPをOptIn又はOptOutにしたとき(kernelキーでMitigationOptions=0x10又は0x20)にIFEOキー側で0x30又は0x70に設定すると未設定時の挙動になるという挙動を見つけて首をかしげる。

2013-05-31 05:11:42
鈴木友紀 @0xbadfca11

はまりどころはMitigationOptionsをREG_QWORDで作らなきゃいけないのをREG_DWORDで作ってしまう 絶対一度やるよ

2012-03-17 05:21:40