我觉得这个问题很奇怪,Windows Server 2019,我用的普通用户不是 Admin,用户仅属于一个 Users 组。 测试程序 testproject.exe 先双击点开,然后双击点开 x32dbg 去 attach 进程,全程没有要输密码,直接就可以看到内存。。
testproject 代码:
char cipher[128];
std::cout << "Hello World!\n The address of cipher is "<< static_cast<const void*>(cipher)<<std::endl;
std::cin >> cipher;
http://tva1.sinaimg.cn/large/0060lm7Tly1g50ya9hd72j30hf0lpjsq.jpg
testproject.exe 是双击点开的,也不是从 x32dbg 里启动的。。 我记得在 Linux 下 attach 是要 root 权限的。。系统哪里设置有问题吗。。内存没有隔离开。。
UAC 开的默认那个挡位(不知有没有影响)
另外:本地安全策略->用户权限分配 这里面只添加过关机权限
1
hx1997 2019-07-16 00:55:33 +08:00
附加到普通用户进程不用特别的权限吧,附加到管理员进程才要。
|
2
geelaw 2019-07-16 03:33:25 +08:00 via iPhone
调试自己的代码当然不需要额外的权限…否则你要怎么让开发者日常用受限用户,要怎么在 UAC 全开模式下安全编程…
调试用户自己身份运行的程序最多对用户自己造成损害,通常操作系统都不会完全封死用户搬起石头砸自己的脚的行为。 调试的权限( SeDebugPrivilege )是允许调试任意进程,但并不是所有进程都需要该特权。 |
3
mingl0280 2019-07-16 05:16:34 +08:00
调试普通用户进程不需要特殊权限,提权只适用于低权限调试程序需要访问高权限进程的时候……
|
4
ThirdFlame 2019-07-16 08:13:39 +08:00
linux 下 attach 也不需要 root 权限的。 但是只能 attach 你自己的进程。
windows 下 一样,你 attach 自己的进程能有什么问题,凭啥不让你 attach |
5
acess 2019-07-16 10:39:09 +08:00
微软自己都说过,UAC 不是安全功能,只是防手贱功能( forcing function )。
看看 UACME,有很多歪点子能绕过 UAC 的。一开始最高档“总是通知”被理解为无法绕过,后来又增补了绕过最高档的办法。而且微软不把这些当作漏洞来补,只是大版本更新的时候可能顺带补一下。 真想降权,需要开一个真正的非管理员账户。 |
6
acess 2019-07-16 10:40:16 +08:00
其实就像 LZ 这贴一样,很多敏感的操作,本来就是畅通无阻的,UAC 压根不会阻拦,连“如何绕过 UAC 获得真·管理员权限”都不需要考虑。
|
7
acess 2019-07-16 10:53:12 +08:00
UAC 这个梗,“万恶之源”就是知乎洛晓晓的那个“ UAC 是否有必要”的答案吧。
像是安装软件、自启、截屏、监听键盘、读取文件、联网、弹窗……等等等等“流氓”行为,如果只是针对当前用户而不是本机所有用户,那本来就是畅通无阻的。 |
8
acess 2019-07-16 10:54:12 +08:00
以前还有种说法是“开 UAC 可以防 Flash 漏洞”,这个有一定道理,因为 Office、IE 这些应用的沙箱模式和 UAC 是否开启是绑定的。
沙箱模式是根据文件上的 MOTW 标记来决定是否开启的,比如浏览器下载的文件就会自动打上这个标记。这个标记是利用 NTFS 的 ADS 特性做的,可以在文件属性里去除掉(也就是“解除锁定”按钮)。 如果启用沙箱模式,Flash 是不显示的。然而,如果你随手点了一下“启用编辑”按钮,就退出沙箱模式了。 如果你关了 UAC,那沙箱直接就被禁用了。 insights.sei.cmu.edu/cert/2015/07/the-risks-of-disabling-the-windows-uac.html 后续版本的 Windows 好像在 UAC 方面又有很大改动……比如从 Win8 开始,在控制面板拉到底“从不通知”也并不是关闭 UAC,而是有提权请求时默认通过(所以才会出现 QQ 的远程协助不能碰任务管理器这类奇葩问题)。只有编辑注册表修改 EnableLUA 值(或者修改组策略)才是真正的关闭 UAC。 本来这么做还会带来 UWP 应用打不开的副作用,后来 Win10 1703 (还是 1709 来着?记不得了)把这个问题也解决了。 |
11
vrqq OP |
12
stephen9357 2019-07-16 18:15:45 +08:00
跟是谁的程序没关系,只要你可以用 PROCESS_ALL_ACCESS 权限打开目标进程,就可以调试它。当然,你有 SE_DEBUG_NAME 的话,你就可以调试任意进程了。
|
13
vrqq OP @ThirdFlame @hx1997 我明白了,以其他 uid 运行的程序才会需要 root 权限。。
@acess 私以为 “针对所有用户” 本来就意义不大,正常使用的话,打开软件都是同一个用户名。另外您提到的“真正的非管理员账户”,是可以将各个进程限制不能互相访问吗? 我理解的是像 Android 系统那种,每个 app 有独立的 uid gid,不能互相访问。。在 windows 下能做到这样吗? @stephen9357 我似乎明白了,但是我想一个问题,如果说系统不限制 debug 所有我打开的程序,对于个人使用者来说,没有后台服务,那每一个 userspace 下运行的程序和拿到了 kernel 权限无异了??。。。。。。 |
14
Buges 2019-07-16 21:22:26 +08:00 via Android
你理解的对。像 Windows,Linux,也包括 macos,这些古老的系统,对桌面这种单用户使用来说其“面向用户”的权限管理就跟废物差不多。所以才用安全软件,hips 规则,沙箱等破布打补丁的办法,毫无安全性可言。
像新一代的操作系统,Android,iOS 就完全不同。只要留住权限,我可以放心的运行不信任的程序。等下一代 Windows core,彻底对 win32 不兼容,这个问题才能解决。 |
15
acess 2019-07-16 22:34:19 +08:00 via Android
|
16
acess 2019-07-16 22:43:28 +08:00 via Android
@vrqq 有一位安全专家 Alex Ionescu 曾经开发过一个工具 r0ak(ring0 军刀),只要有管理员权限就能在 ring0 读 /写 /执行代码。
如果没有这个工具,想这么做就很麻烦,因为有 DSE,所以需要找一个带漏洞且数字签名有效(实际发现过期证书签的也能加载)的驱动,先加载它,让它当跳板。 项目介绍里他说这个工具利用的原理微软是知道的,没有被视为安全漏洞,所以可以当一个比较正当的专业工具使用。 不过后来过了一段时间微软还是把这个地方改掉了,工具在新版 Win10 上不能用了,Alex Ionescu 也把它从 github 上撤下了。 |
17
acess 2019-07-16 22:48:23 +08:00 via Android
@Buges 最近才看到的,感觉 android 有些权限限制可能也未必那么靠得住:
www.solidot. org/story?sid=61282 |
18
Buges 2019-07-16 23:20:01 +08:00 via Android
@acess 这种情况比较少见。
Android 的问题主要是国内应用不给权限不运行,只能想办法欺骗( hook ) 还好这系统不是出场有 root,不然像微信这些流氓就强制要 root 了,就像它们在 Windows 上强要 UAC 一样。 其他的主要是新技术和历史遗留问题,比如运动传感器收集步态信息锁定自然人,为了向前兼容保留的 /sdcard 被国产应用写 deviceID 文件进行“进程间通讯”等。 至于 UWP 嘛…真可惜,微软就不能再坚持一下么… |
19
acess 2019-07-16 23:39:08 +08:00
@vrqq 还有,既然你用的账户不是 Administrators 组的,那已经是“真正的非管理员账户”了。然而这样也只是免疫 UACME 里的那些歪招而已,截屏 /监听键盘 /读写文件……等等这些,如果你只开一个账户,那还是老样子,畅通无阻……
或者说,还是有一些阻碍的,比如你右键管理员权限运行的时候,输入密码,这个貌似因为 UIPI 的隔离,是无法监听键盘的。 然而我觉得这样是不是真的能防 UAC 绕过,还是比较可疑的,我拍脑袋想到的办法(不一定成立):劫持正常的进程,等你需要提权的时候,弹一个假的界面,偷到你输入的密码,然后再拿着这个密码去提权,这样既能做到让你没有察觉,管理员权限也等于是偷到手了。 |