1、explorer是一个比较特殊的进程,虽然运行在普通用户权限下,但是微软为了减少UAC对用户的打扰,有些情况下不会出现UAC提醒。CoGetObject("3ad05575-8857-4850-9277-11b85bdb8e09");如果用别的普通用户权限去打开,会有UAC提醒,但是如果用explorer去打开,默认情况下是没有提醒的。
2、使用CoGetObject("3ad05575-8857-4850-9277-11b85bdb8e09")得到一个COM对象IFileOperation,IFileOperation是一个功能很强大的文件操作接口。往system32里面copy东西。pFileOp->SetOperationFlags(FOF_NOCONFIRMATION|FOF_SILENT|FOFX_SHOWELEVATIONPROMPT|FOFX_NOCOPYHOOKS|FOFX_REQUIREELEVATION)一定要静默的copy,目标文件c:\windows\system32\sysprep\cryptbase.dll
3、ShellExecuteEx运行c:\windows\system32\sysprep\sysprep.exe,可以带起CRYPTBASE.dll,这个DLL有足够高的权限了。
要点:1、对explorer网开一面,explorer是个特殊的进程,一方面它长期和一群低权限的,另一方面,它又掌握着通向高权限的钥匙,许多情况下可以无声出入高权限进程的起居地(system文件夹和COM);2、对CRYPTBASE.dll网开一面,sysprep.exe启动加dll时辰会遵循一个法则:如果被加的dll在系统"Known DLLs"列表中那么就直接从system32目录加,而这个CRYPTBASE.dll虽然位于System32目录,但它恰恰不在"Known DLLs"中,于是CRYPTBASE.dll被优先从sysprep.exe目录启动了。第一点儿是要害,只要能往system目录里无声的copy东西,总会有办法提权的。3、如果把HKEY_CLASSES_ROOT\CLSID\{3ad05575-8857-4850-9277-11b85bdb8e09}\Elevation的Enable改为0,这个工具就不灵了~不过也会带来副作用:不能通过explorer直接在关键目录右键新建、删除文件夹了。
浙公网安备 33010602011771号