æ
å ±ã»ãã¥ãªãã£ã®å°é家David WellsãWindows 10ã§UACãŠãŒã¶ãŒã¢ã«ãŠã³ãå¶åŸ¡ããã€ãã¹ããæ¹æ³ãå
Ž
ã¿ãªããããã«ã¡ã¯ïŒ
ãŠãŒã¶ãŒã¢ã«ãŠã³ãå¶åŸ¡ïŒUACïŒã®ããã€ãã®æ°ããåé¿çã調æ»ããŠãããšãã«ããã®èšäºã®å·çæç¹ã§UACã®ãŸã£ããæ°ããåé¿çãçºèŠããŸããã ãã€ã¯ããœããã¯UACãã»ãã¥ãªãã£ã®å¢çãšã¯èŠãªããŠããªãããšã«æ³šæãã䟡å€ããããŸããããã€ã¯ããœããã§ã¯ããŸããŸãªãã°ãå ±åããŠããŸãã®ã§ãããã§èŠã€ããè匱æ§ã®è©³çŽ°ãå
±æããããšæããŸãã ãã®æ¹æ³ã¯ãWindows 10 Build 17134ã§æ£åžžã«ãã¹ããããŠããŸããæ€çŽ¢çµæã®è©³çŽ°ã説æããåã«ããŸãUACãµãŒãã¹ã®ä»çµã¿ã«ã€ããŠç°¡åã«èª¬æããŸãã
UACãã©ã€ããŒAdministratorsã°ã«ãŒãã®ã¡ã³ããŒã§ãããŠãŒã¶ãŒãææ Œããç¹æš©ãå¿
èŠãšããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããå ŽåãUACã¯å¯Ÿå¿ããèŠæ±ã衚瀺ããAdministratorsã°ã«ãŒãã®ã¡ã³ããŒã§ãããŠãŒã¶ãŒã¯ã¢ã¯ã·ã§ã³ã確èªããå¿
èŠããããŸããããã®UACèŠæ±ã¯Windowsäžã®ãã¹ãŠã®ç®¡çäžå®è¡å¯èœãªãã¡ã€ã«ã«å¯ŸããŠã¯çºçããŸããã UACããã€ãã¹ããUACããã€ãã¹ããã«å®è¡å¯èœãã¡ã€ã«ã®ç¹æš©ããèªåçã«ãææ Œãããããã€ãã®äŸå€ããããŸãïŒé©ããããšã«ïŒïŒã éžæããããã®ä¿¡é Œã§ããå®è¡å¯èœãã¡ã€ã«ã®ç¹å®ã®ã°ã«ãŒãã¯ããããã®ãã¡ã€ã«ãå®éã«ä¿¡é Œã§ããããšã確èªããããã«ãã·ã¹ãã ã«ããè¿œå ã®ã»ãã¥ãªãã£ãã§ãã¯ãåããŸãã ãã®ã¢ãããŒãã¯ã以åã®UACãã€ãã¹æ¹æ³ã§äœ¿çšãããŠãããç§ã®æ°ãããã€ãã¹æ¹æ³ã®åºç€ãšãªããŸãã ãã ããæ»æãæåãããããã«åãå¿
èŠã®ããæãç©Žãããã€ããããŸãã å®è¡å¯èœãã¡ã€ã«ããç¹æš©ã«èªåçã«ææ Œããããå Žåã«æºããå¿
èŠãããèŠä»¶ãèŠãŠã¿ãŸãããã ãããè¡ãããã«ãéã¢ã»ã³ãã«ãããappinfo.dllã©ã€ãã©ãªã®åçãããã€ã瀺ããŸãïŒç¹æš©ãšã¹ã«ã¬ãŒã·ã§ã³èŠæ±ãåŠçããAISãµãŒãã¹ã¯ãUACã®äž»èŠã³ã³ããŒãã³ãã®1ã€ã§ãïŒã
èŠä»¶1ïŒç¹æš©ãèªåçã«ææ Œããããã«æ§æããããã¡ã€ã«
ããã°ã©ã ã®ç¹æš©ææ Œã®èŠæ±ãçºçãããšãAISãµãŒãã¹ïŒappinfo.dllïŒã¯ãåŒæ°ãšããŠæž¡ãããã¿ãŒã²ããå®è¡å¯èœãã¹ã䜿çšããŠRPCåŒã³åºããè¡ããŸãã ãã®ãµãŒãã¹ã¯ãèªã¿åã察象ã®ãã¡ã€ã«ã®ã¿ãŒã²ããå®è¡å¯èœã³ã³ãã³ãããããããŸãã å®è¡å¯èœãã¡ã€ã«ã®ãããã§ã¹ãã§ã¯ãå€ãèªã¿åã£ãŠãautoElevateãããŒïŒååšããå ŽåïŒãååŸããããšããŸãã
å³1-ããŒå€ãautoElevateããååŸããããã®å®è¡å¯èœãã¡ã€ã«ã®ãããã§ã¹ãã®èªã¿åã
å€ããTrueãã§ããå Žåããã¡ã€ã«ã¯ãèªåãææ Œç¹æš©å®è¡å¯èœãã¡ã€ã«ãšèŠãªãããææ Œããç¹æš©ã§å®è¡ãããUACãµãŒãã¹ãã€ã¢ãã°ããã¯ã¹ãåŒã³åºããŸããïŒä»¥äžã®èŠä»¶ãæºãããŠããå ŽåïŒã
å³2-ãbsearchããåŒã³åºããŠããèªåææ Œãå®è¡å¯èœãã¡ã€ã«ã®ãªã¹ãã§å®è¡å¯èœãã¡ã€ã«ã®ååã確èªãã
ãã¯ã€ããªã¹ãã«ãããããã®ããŒãããã°ã©ã ããããã¡ã€ã«ã®äžéšã¯æ¬¡ã®ãšããã§ãã
ãcttunesvr.exeãããinetmgr.exeãããmigsetup.exeãããmmââc.exeãããoobe.exeãããpkgmgr.exeãããprovisionshare.exeãããprovisionstorage.exeãããspinstallã .exe 'ã' winsat.exe '
èŠä»¶2ïŒé©åã«çœ²åãããŠãã
UACã«èŠæ±ãéä¿¡ããåŸã«ç¹æš©ããèªåçã«ãå¢ããããã®2çªç®ã®æ¡ä»¶ã¯ããwintrustïŒ WTGetSignatureInfoãã
ããã¯ãæ»æè
ã®ãã€ããªãã¡ã€ã«ã誀ã£ãŠçœ²åãããå¯èœæ§ãé«ããæåŸã®èŠä»¶ã§ããå®è¡ã倱æãããããæ»æè
ã¯ãèªåãç¹æš©ãšã¹ã«ã¬ãŒã·ã§ã³ã«å¿
èŠãªç¬èªã®ãããã§ã¹ããŸãã¯å®è¡å¯èœãã¡ã€ã«ãåã«äœæã§ããªãããšãæå³ããŸããä¿¡é Œã§ãããã£ã¬ã¯ããªããã
èŠä»¶3ïŒä¿¡é Œã§ãããã£ã¬ã¯ããªããã®å®è¡
ãèªåçãªãç¹æš©ã®ææ ŒãååŸããããã®æåŸã®èŠä»¶ã¯ãã¿ãŒã²ããå®è¡å¯èœãã¡ã€ã«ããä¿¡é Œã§ãããã£ã¬ã¯ããªãïŒãCïŒ\ Windows \ System32ããªã©ïŒã«ããããšã§ãã å³3ã¯ãAISãã¢ããã°ã¬ãŒãèŠæ±ã§ãã¹ã®ãã®ãã§ãã¯ãå®è¡ããããšã瀺ããŠããŸãããã®å Žåããä¿¡é Œã§ããããšèŠãªããããã¹ã®1ã€ã¯ãCïŒ\ Windows \ System32ãã§ãã
å³3
ãã®èšäºã®ã¿ã€ãã«ã¯ãä¿¡é Œã§ãããã£ã¬ã¯ããªãæš¡å£ããããšã«ãããŠãŒã¶ãŒã¢ã«ãŠã³ãå¶åŸ¡ïŒUACïŒããã€ãã¹ãããã§ãããããã£ãŠããããã次ã«äœãèµ·ãããç°¡åã«æšæž¬ã§ããŸãã
UACãã€ãã¹UACå
¥éã»ã¯ã·ã§ã³ã§åè¿°ããããã«ã次ã®å®è¡å¯èœãã¡ã€ã«ã«å¯ŸããŠèªåç¹æš©ïŒUACãã€ãã¹ïŒãå®è¡ãããŸãã
- ãèªåãç¹æš©ãšã¹ã«ã¬ãŒã·ã§ã³ãåä¿¡ããããã«æ§æ
- æ£ãã眲å
- ä¿¡é Œã§ãããã£ã¬ã¯ããªããå®è¡ããŸãïŒ "CïŒ\ Windows \ System32"ïŒ
Appinfo.dllïŒAISïŒã¯ãRtlPrefixUnicodeString APIã䜿çšããŠãå®è¡å¯èœãã¡ã€ã«ã®ãã¹ããCïŒ\ Windows \ System32 \ããšäžèŽãããã©ããã確èªããä¿¡é Œã§ãããã£ã¬ã¯ããªã®1ã€ã確èªããŸãã ããã¯ãæ£èŠãã¡ã€ã«ã®å Žæãšã®æ¯èŒãèãããšãããªã匷åãããã³ã³ã¯ãªãŒãã®ãã¹ãã§ãã
ãããã£ãŠããã®ãã§ãã¯ã®ãã€ãã¹ãæŽçããããã«ããCïŒ\ Windows \ããšãããã£ã¬ã¯ããªãäœæããŸãïŒãWindowsãã®åŸã®ã¹ããŒã¹ã«æ³šæïŒã ãã¡ããããã®ã¢ã¯ã·ã§ã³ã䜿çšããŠããRtlPrefixUnicodeStringãã§ãã¯ãæž¡ãããšã¯ã§ããŸããããŸããWindowsã¯ãã£ã¬ã¯ããªãäœæãããšãã«ååã®æ«å°Ÿã«ã¹ããŒã¹ãè¿œå ã§ããªããããããã¯å€å°ç¡å¹ãªïŒãŸãã¯å°ãªããšããå奜çã§ãªããïŒãã£ã¬ã¯ããªåã§ããããšã«ãèšåããŸãïŒè©ŠããŠã¿ãŠãã ããïŒ ïŒ
ãã ããCreateDirectory APIã䜿çšããŠã\\ïŒ \ "äœæãããã£ã¬ã¯ããªåã«å¯ŸããŠããããã®ååãã£ã«ã¿ãªã³ã°ã«ãŒã«ã®äžéšããã€ãã¹ãããã¡ã€ã«ã·ã¹ãã ã«çŽæ¥ãã£ã¬ã¯ããªãäœæããèŠæ±ãéä¿¡ã§ããŸãã
ããã«ãããå®éã®ãCïŒ\ Windows \ããšäžç·ã«ãã¡ã€ã«ã·ã¹ãã ã«åé¡ãªãå
±åã§ããäžäŸ¿ãªãã£ã¬ã¯ããªãäœæãããŸãïŒWindows Explorerã§äœããããããšããå Žåãé€ãïŒã
ãCïŒ\ Windows \ããã£ã¬ã¯ããªãã§ããã®ã§ããã®äžã«ãSystem32ããã£ã¬ã¯ããªãäœæãã眲åæžã¿ã®å®è¡å¯èœãã¡ã€ã«ã®1ã€ïŒã·ã¹ãã ããèªåçã«ãæš©éãææ Œããããšãèš±å¯ããïŒãå®éã®ãã£ã¬ã¯ããªãCïŒ \ Windows \ System32 "ã
ãããè¡ãããã«ããwinSAT.exeãïŒWindowså®è¡å¯èœãã¡ã€ã«ã®ãã¯ã€ããªã¹ãã«ããããèªåãç¹æš©ææ Œã·ã¹ãã ãæå¹ã«ãªã£ãŠãããã¡ã€ã«ã®1ã€ïŒãã³ããŒããŸããã
æ°ãããã£ã¬ã¯ããªãCïŒ\ Windows \ System32 \ winSAT.exeããããã®ãã¡ã€ã«ãå®è¡ããããšãããšãä¿¡é Œã§ãããã£ã¬ã¯ããªãã§ãã¯ãå®è¡ããåã«ãappinfo.dllã®æ¬¡ã®APIïŒå³6ãåç
§ïŒãééããŸãã ããã¯éèŠã§ããããã®åé¿çãæ©èœããçç±ã®åºç€ã§ãã
å³6
ã¹ããŒã¹ãå«ããã®äžäŸ¿ãªãã¹ãAISã«éä¿¡ãããç¹æš©ã®ææ ŒãèŠæ±ãããšããã¹ã¯GetLongPathNameWã«æž¡ããããCïŒ\ Windows \ System32 \ winSAT.exeãã«å€æãããŸãïŒã¹ããŒã¹ã¯åé€ãããŸããïŒã
ãããïŒ
ããã¯ãæ®ãã®ãã§ãã¯ã§ïŒRtlPrefixUnicodeStringã䜿çšããŠïŒæå¹ãªãã£ã¬ã¯ããªãã§ãã¯ã«åæ Œããè¡ã§ãã
ç§ã®ãœãªã¥ãŒã·ã§ã³ã®çŽ æŽãããç¹ã¯ãä¿¡é Œã§ãããã£ã¬ã¯ããªããã§ãã¯ããåŸããã®å€æããããã¹ãå®è¡ãããããã解æŸãããæ®ãã®ãã§ãã¯ïŒããã³ç¹æš©ãšã¹ã«ã¬ãŒã·ã§ã³ã®æçµãªã¯ãšã¹ãïŒãå®è¡å¯èœãã£ã¬ã¯ããªã®å
ã®ååïŒäœåãªã¹ããŒã¹ïŒã§å®è¡ãããããšã§ãã
ããã«ãããä»ã®ãã¹ãŠã®ãã§ãã¯ãééã§ããappinfo.dllãwinSAT.exeã®ã³ããŒããèªåãç¹æš©ã®ææ Œãšåæ§ã«åãå
¥ããããã«ããŸãïŒããã¯æ£ãã眲åããããèªåãç¹æš©ã®ææ Œã®ãã¯ã€ããªã¹ãã«è¿œå ãããããïŒã
å®éã«æªæã®ããã³ãŒãã䜿çšããã«ã¯ãçŸåšã®ãã£ã¬ã¯ããªãCïŒ\ Windows \ System32 \ãã«ããåœã®WINMM.dllïŒwinSAT.exeãã€ã³ããŒãïŒãã³ããŒããŠãããŒã«ã«dllãåœè£
ããŸããã å®å
šãªæŠå¿µã¯ã以äžã®å³ã«èŠãããšãã§ããŸãã
å³7
â
Githubãžã®ãªã³ã¯