加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

通过查找非权限进程中的泄漏句柄来查找权限提升和UAC

发布时间:2022-04-16 17:03:20 所属栏目:安全 来源:互联网
导读:在某些情况下,具有高完整性或系统完整性的进程会向权限进程/线程/令牌请求句柄,然后生成低完整性进程。如果这些句柄足够强大,且类型正确,并且由子进程继承,我们可以从另一个进程复制它们,然后滥用它们来升级权限或绕过UAC。在这篇文章中,我们将介绍
         在某些情况下,具有高完整性或系统完整性的进程会向权限进程/线程/令牌请求句柄,然后生成低完整性进程。如果这些句柄足够强大,且类型正确,并且由子进程继承,我们可以从另一个进程复制它们,然后滥用它们来升级权限或绕过UAC。在这篇文章中,我们将介绍如何寻找和滥用这种漏洞。
 
        本质上,这个想法是看看我们是否可以自动找到拥有高完整性(也就是提升)或SYSTEM进程的权限句柄的非权限进程,然后检查我们是否可以作为一个非权限用户附加到这些进程上,并复制这些句柄,以便以后滥用它们。我们的工具会受到哪些限制?
 
1.它必须作为中等完整性进程运行;
 
2. 进程令牌中没有 SeDebugPrivilege(中等完整性的进程默认没有这个权限);
 
3. 没有 UAC 绕过,因为它也必须适用于非管理用户;
 
这个过程有点复杂,我们将经历的步骤或多或少如下:
 
1.枚举所有进程持有的所有句柄;
 
2.过滤掉我们不感兴趣的句柄,现在我们只关注进程、线程和令牌的句柄,因为它们更容易被武器化;
 
3.过滤掉引用低完整性进程/线程/令牌的句柄;
 
4.过滤掉完整性大于中等的进程持有的句柄,除非获得SeDebugPrivilege,否则我们不能附加到它们上,这违背了本文的目的;
 
5.复制其余的句柄并将它们导入我们的进程,并试图滥用它们来升级权限或者至少绕过UAC;
 
        它需要3个参数:
 
dwDesiredAccess是一个DWORD,它指定了我们希望对我们试图打开的进程拥有的访问级别;
 
bInheritHandle是一个布尔值,如果设置为TRUE,将使句柄可继承,这意味着调用进程在子进程生成时将返回的句柄复制给子进程(以防我们的程序调用CreateProcess之类的函数);
 
dwProcessId是一个DWORD,用于指定我们想打开哪个进程(通过提供它的PID);
 
在下一行中,我将尝试打开系统进程(它始终具有 PID 4)的句柄,向内核指定我希望句柄拥有尽可能少的特权,只需要查询有关信息的子集进程(PROCESS_QUERY_LIMITED_INFORMATION),并且我希望该程序的子进程继承返回的句柄(TRUE)。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读