FlyCode 发表于 2016-7-14 16:22:39

在Windows7 以上的操作系统中如何提升User的访问权限

问题描述:
1. 在Windows 2012 操作系统上,使用标准User用户登录,使用API CreateFile去打开USB的驱动句柄时,返回-1。原因就是User权限不足
2. 测试在Windows 2008操作系统上执行同样的操作,结果一样是权限不足
3. 尝试降低了UAC没用
4. 尝试使用进程中提权的办法,使用API AdjustTokenPrivileges“提升”权限(其实就是打开Debug权限),报错,令牌没有该权限。
    原因:Windows 7 以后的系统中,普通用户下并没有Debug的权限,而AdjustTokenPrivileges实质就是打开Debug权限而已,所以自然也就提升不了
            User的权限,结果也就是依然无法打开USB驱动句柄

提问:
想请教各位大牛们一下:
1. 有没有办法临时提升User权限到Adminstrator,并且不弹出UAC的提示框
2. 有没有办法绕过权限的问题,直接打开USB驱动句柄
3. 跟USB设备通信,打开USB驱动句柄,在Windows上是不是有单独的权限对其设置


最后,还请各位大牛们帮帮忙,提出你们的想法,谢谢啦!

无符号整形 发表于 2016-7-14 16:31:18

1.不行的,不能跳过UAC提示框
2.绕过去也不
3.不一定,写个驱动试试

FlyCode 发表于 2016-7-14 16:35:52

无符号整形 发表于 2016-7-14 16:31
1.不行的,不能跳过UAC提示框
2.绕过去也不
3.不一定,写个驱动试试

首先感谢你的回答,但是说实话...写驱动有点儿把问题扩大化了,还是想单纯的从应用层来解决这个问题

无符号整形 发表于 2016-7-14 16:39:28

FlyCode2016-7-14 16:35
л...деò

没办法的

康小泡 发表于 2016-7-14 18:27:38

绕是能绕,github上就有很多源码。

FlyCode 发表于 2016-7-15 16:47:52

康小泡 发表于 2016-7-14 18:27
绕是能绕,github上就有很多源码。

不使用CreateFile这个API的话,有没有其他方式去打开USB的驱动句柄呢?最好可以不要求管理员权限的

康小泡 发表于 2016-7-15 17:46:29

FlyCode 发表于 2016-7-15 16:47
不使用CreateFile这个API的话,有没有其他方式去打开USB的驱动句柄呢?最好可以不要求管理员权限的

打开驱动不要管理员权限?我还不知道哇。

康小泡 发表于 2016-7-15 17:46:33

FlyCode 发表于 2016-7-15 16:47
不使用CreateFile这个API的话,有没有其他方式去打开USB的驱动句柄呢?最好可以不要求管理员权限的

打开驱动句柄不要管理员权限?我还不知道哇。

无符号整形 发表于 2016-7-15 22:15:38

康小泡 发表于 2016-7-15 17:46
打开驱动不要管理员权限?我还不知道哇。

肯定要的,标准用户的令牌没有这个权限

FlyCode 发表于 2016-7-18 12:32:23

无符号整形 发表于 2016-7-15 22:15
肯定要的,标准用户的令牌没有这个权限

有办法在令牌中加入这个权限么?

无符号整形 发表于 2016-7-18 14:33:23

FlyCode 发表于 2016-7-18 12:32
有办法在令牌中加入这个权限么?

没办法
标准用户用的是筛选过的令牌,所以他得令牌没权限
管理员用户就不是,他的令牌是没有被筛选过的,所以说他有权限

FlyCode 发表于 2016-7-18 14:42:24

无符号整形 发表于 2016-7-18 14:33
没办法
标准用户用的是筛选过的令牌,所以他得令牌没权限
管理员用户就不是,他的令牌是没有被筛选过的 ...

好吧,谢啦,看来正当途径是无法使用User用户打开驱动句柄的了...
有没有其他非正常手段让User用户可以打开驱动句柄呢?比如通过查找系统漏洞之类的,或者需要屏蔽掉Windows的一些检测?

无符号整形 发表于 2016-7-18 14:55:12

FlyCode 发表于 2016-7-18 14:42
好吧,谢啦,看来正当途径是无法使用User用户打开驱动句柄的了...
有没有其他非正常手段让User用户可以 ...

首先你钻漏洞是没用的(即使可以实现),因为很快微软就会出补丁把他补上的。
屏蔽掉windows的一些检测,微软还是会出补丁的。
所以 我建议你 把UAC的执行级别调到最高(requireAdministrator),虽然 会弹出提示框,但是,记住一点:
千万不要钻漏洞!
还有 就是如果你怕用户拒绝提权的话 你就可以这样
1.手动调用ShellExecuteEx函数 通过把lpVerb成员设为runas实现手动提权,另外,为了防止无限打开并提权,将Parameters成员设为一个命令行参数 如果为某某参数 就停止提权
2.如果返回True,表示提权成功,原程序退出
3.如果返回False,表示提权失败,重新执行第一步

那样 用户就不得不提权了

FlyCode 发表于 2016-7-18 17:15:50

无符号整形 发表于 2016-7-18 14:55
首先你钻漏洞是没用的(即使可以实现),因为很快微软就会出补丁把他补上的。
屏蔽掉windows的一些 ...

恩,明白了,真的很感谢!
客户的需求是这样的,它把服务器上的管理员和用户做了区分,他们本意上是不想看到UAC弹出的,不给用户提供管理员密码,也不让提权,我能想到的办法也就这么多了,看来有些无解了,只能跟客户继续商议了
页: [1]
查看完整版本: 在Windows7 以上的操作系统中如何提升User的访问权限