Windows 下 attach 需要权限吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vrqq
V2EX    Windows

Windows 下 attach 需要权限吗?

  •  
  •   vrqq 2019-07-15 23:54:52 +08:00 3562 次点击
    这是一个创建于 2309 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我觉得这个问题很奇怪,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 开的默认那个挡位(不知有没有影响)

    另外:本地安全策略->用户权限分配 这里面只添加过关机权限

    20 条回复    2019-07-20 11:28:41 +08:00
    hx1997
        1
    hx1997  
       2019-07-16 00:55:33 +08:00
    附加到普通用户进程不用特别的权限吧,附加到管理员进程才要。
    geelaw
        2
    geelaw  
       2019-07-16 03:33:25 +08:00 via iPhone
    调试自己的代码当然不需要额外的权限…否则你要怎么让开发者日常用受限用户,要怎么在 UAC 全开模式下安全编程…

    调试用户自己身份运行的程序最多对用户自己造成损害,通常操作系统都不会完全封死用户搬起石头砸自己的脚的行为。

    调试的权限( SeDebugPrivilege )是允许调试任意进程,但并不是所有进程都需要该特权。
    mingl0280
        3
    mingl0280  
       2019-07-16 05:16:34 +08:00
    调试普通用户进程不需要特殊权限,提权只适用于低权限调试程序需要访问高权限进程的时候……
    ThirdFlame
        4
    ThirdFlame  
       2019-07-16 08:13:39 +08:00
    linux 下 attach 也不需要 root 权限的。 但是只能 attach 你自己的进程。
    windows 下 一样,你 attach 自己的进程能有什么问题,凭啥不让你 attach
    acess
        5
    acess  
       2019-07-16 10:39:09 +08:00
    微软自己都说过,UAC 不是安全功能,只是防手贱功能( forcing function )。

    看看 UACME,有很多歪点子能绕过 UAC 的。一开始最高档“总是通知”被理解为无法绕过,后来又增补了绕过最高档的办法。而且微软不把这些当作漏洞来补,只是大版本更新的时候可能顺带补一下。

    真想降权,需要开一个真正的非管理员账户。
    acess
        6
    acess  
       2019-07-16 10:40:16 +08:00
    其实就像 LZ 这贴一样,很多敏感的操作,本来就是畅通无阻的,UAC 压根不会阻拦,连“如何绕过 UAC 获得真管理员权限”都不需要考虑。
    acess
        7
    acess  
       2019-07-16 10:53:12 +08:00
    UAC 这个梗,“万恶之源”就是知乎洛晓晓的那个“ UAC 是否有必要”的答案吧。

    像是安装软件、自启、截屏、监听键盘、读取文件、联网、弹窗……等等等等“流氓”行为,如果只是针对当前用户而不是本机所有用户,那本来就是畅通无阻的。
    acess
        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 来着?记不得了)把这个问题也解决了。
    geelaw
        9
    geelaw  
       2019-07-16 11:01:57 +08:00 via iPhone
    @acess #5-#8 提示一下楼主的用户不是 Administrators 组的
    acess
        10
    acess  
       2019-07-16 11:07:23 +08:00 via Android   1
    @geelaw 嗯,我看到了。
    vrqq
        11
    vrqq  
    OP
       2019-07-16 14:55:40 +08:00
    @geelaw @mingl0280 感谢!
    一个新的疑问,怎么区分是“自己的程序”,只能通过启动这个程序的用户区分吗?就是理论上来说,任意一个双击点开的程序,都可以控制其他程序,因为都是以我的用户名运行的。。。

    我之前以为 debug 是在自己的内存空间里给 target 申请空间。。看来理解错了。。
    stephen9357
        12
    stephen9357  
       2019-07-16 18:15:45 +08:00
    跟是谁的程序没关系,只要你可以用 PROCESS_ALL_ACCESS 权限打开目标进程,就可以调试它。当然,你有 SE_DEBUG_NAME 的话,你就可以调试任意进程了。
    vrqq
        13
    vrqq  
    OP
       2019-07-16 21:14:06 +08:00
    @ThirdFlame @hx1997 我明白了,以其他 uid 运行的程序才会需要 root 权限。。

    @acess 私以为 “针对所有用户” 本来就意义不大,正常使用的话,打开软件都是同一个用户名。另外您提到的“真正的非管理员账户”,是可以将各个进程限制不能互相访问吗?
    我理解的是像 Android 系统那种,每个 app 有独立的 uid gid,不能互相访问。。在 windows 下能做到这样吗?

    @stephen9357 我似乎明白了,但是我想一个问题,如果说系统不限制 debug 所有我打开的程序,对于个人使用者来说,没有后台服务,那每一个 userspace 下运行的程序和拿到了 kernel 权限无异了??。。。。。。
    Buges
        14
    Buges  
       2019-07-16 21:22:26 +08:00 via Android
    你理解的对。像 Windows,Linux,也包括 macos,这些古老的系统,对桌面这种单用户使用来说其“面向用户”的权限管理就跟废物差不多。所以才用安全软件,hips 规则,沙箱等破布打补丁的办法,毫无安全性可言。
    像新一代的操作系统,Android,iOS 就完全不同。只要留住权限,我可以放心的运行不信任的程序。等下一代 Windows core,彻底对 win32 不兼容,这个问题才能解决。
    acess
        15
    acess  
       2019-07-16 22:34:19 +08:00 via Android
    @vrqq
    Windows 的 UWP 应用是用容器隔离的,大概比较接近你想要的。
    其他传统桌面应用,都是这么鸡肋,就像楼上 @Buges 说的一样……
    acess
        16
    acess  
       2019-07-16 22:43:28 +08:00 via Android
    @vrqq 有一位安全专家 Alex Ionescu 曾经开发过一个工具 r0ak(ring0 军刀),只要有管理员权限就能在 ring0 读 /写 /执行代码。
    如果没有这个工具,想这么做就很麻烦,因为有 DSE,所以需要找一个带漏洞且数字签名有效(实际发现过期证书签的也能加载)的驱动,先加载它,让它当跳板。
    项目介绍里他说这个工具利用的原理微软是知道的,没有被视为安全漏洞,所以可以当一个比较正当的专业工具使用。
    不过后来过了一段时间微软还是把这个地方改掉了,工具在新版 Win10 上不能用了,Alex Ionescu 也把它从 github 上撤下了。
    acess
        17
    acess  
       2019-07-16 22:48:23 +08:00 via Android
    @Buges 最近才看到的,感觉 android 有些权限限制可能也未必那么靠得住:
    www.solidot. org/story?sid=61282
    Buges
        18
    Buges  
       2019-07-16 23:20:01 +08:00 via Android
    @acess 这种情况比较少见。
    Android 的问题主要是国内应用不给权限不运行,只能想办法欺骗( hook )
    还好这系统不是出场有 root,不然像微信这些流氓就强制要 root 了,就像它们在 Windows 上强要 UAC 一样。
    其他的主要是新技术和历史遗留问题,比如运动传感器收集步态信息锁定自然人,为了向前兼容保留的 /sdcard 被国产应用写 deviceID 文件进行“进程间通讯”等。

    至于 UWP 嘛…真可惜,微软就不能再坚持一下么…
    acess
        19
    acess  
       2019-07-16 23:39:08 +08:00
    @vrqq 还有,既然你用的账户不是 Administrators 组的,那已经是“真正的非管理员账户”了。然而这样也只是免疫 UACME 里的那些歪招而已,截屏 /监听键盘 /读写文件……等等这些,如果你只开一个账户,那还是老样子,畅通无阻……
    或者说,还是有一些阻碍的,比如你右键管理员权限运行的时候,输入密码,这个貌似因为 UIPI 的隔离,是无法监听键盘的。
    然而我觉得这样是不是真的能防 UAC 绕过,还是比较可疑的,我拍脑袋想到的办法(不一定成立):劫持正常的进程,等你需要提权的时候,弹一个假的界面,偷到你输入的密码,然后再拿着这个密码去提权,这样既能做到让你没有察觉,管理员权限也等于是偷到手了。
    vrqq
        20
    vrqq  
    OP
       2019-07-20 11:28:41 +08:00
    @Buges 所以就是说 例如 meltdown 漏洞,kernel 隔离 其实对于普通的桌面用户,完全没有意义。。。也就是说,如果杀毒软件识别不出来 attach/inject 的话,就真和没有一样了。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     822 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 78ms UTC 21:59 PVG 05:59 LAX 13:59 JFK 16:59
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86