Windows提权的基本原理是什么


Windows提权的基本原理是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Windows提权基本原理
没有多少人谈论在Windows下提权,是一件让人遗憾的事!我想,没有人这么做的理由有以下几点:在渗透测试项目中,客户需要的验证就是一个低权限shell。在演示环境,你经常就会得到管理员帐户。meterpreter使你变得懒惰(getsystem = lazy-fu)。最后的评估报告最终变成 – ->nessus安全认证扫描,微软安全基线分析….尽管通常的感觉是,配置得当的windows是安全的。但是事实真的是这样吗?因此,让我们深入了解Windows操作系统的黑暗角落,看看我们是否能得到SYSTEM权限。
应该注意的是,我将使用不同版本的Windows来强调任何可能存在的命令行差异。请牢记这一点,因为不同的操作系统和版本差异会在命令行中显现。我试图构造本教程,以便它适用于Windo免费云主机域名ws提权的最普遍的方式。最后,我想对我的朋友Kostas大声说,他真的也很喜欢渗透(post-exploitation),你不会想让他进入到你的计算机的。最开始是一个低权限的shell,这个shell可能是通过远程代码执行,钓鱼,反弹得到的。基本上最开始我们对计算机并不了解,比如它是做什么的,有什么连接,我们有什么权限,甚至是什么操作系统。在最开始的阶段,我们得快速收集一些基本信息来评估我们的环境。
第一步,让我们找到我们连接的操作系统。接下来,我们看到这台计算机的主机名和我们连接上是哪个用户。现在我们有了一些基本信息,然后我们列出了其他用户帐户,并在更详细的情况下查看我们自己的用户信息。我们已经看到user1不是本地组管理员。这就是我们目前需要了解的关于用户和权限的全部内容。接下来我们要讨论的是网络信息,连接的设备是什么,以及它对这些连接施加了什么规则。
首先让我们看一下可用的网络接口和路由表。arp -A显示了所有可用接口的arp(地址解析协议)缓存表。这就使我们了解了活动网络连接和防火墙规则。以下两个netsh命令是在不同操作系统的命令示例。netsh firewall命令只能从XP SP2和以上版本运行。最后,我们将简要地看一下在这个设备上运行的有什么,比如计划任务、运行进程、启动服务和安装的驱动程序。这将显示所有调度任务的详细输出,下面您可以看到单个任务的示例输出。我想提下WMIC (Windows Management Instrumentation Command-Line,Windows管理工具命令行),因为它是Windows最有用的命令行工具。WMIC对于信息收集和渗透都是非常实用的而且输出内容有很多值得期待的地方。全面解释WMIC的使用将需要一个教程。补充一点,由于格式化的问题,WMIC有些输出将很难显示。
我将会在下面列出两个文章,这两个文章对于WMIC是非常值得阅读的。Command-Line Ninjitsu (SynJunkie)Windows WMIC Command Line (ComputerHope)糟糕的是,一些默认配置的windows并不允许访问WMIC,除非是用户在windows的管理组,从我的虚拟机测试来看,任何版本的windows xp的低权限用户并不能访问WMIC。相反的,默认配置的windows 7 专业版和windows 8 企业版允许低权限的用户访问WMIC并查询操作系统版本。这正是我们所需要的,因为我们正在使用WMIC来收集关于目标机的信息。
关于WMIC的选项,我已经列出了下面可用的命令行。为了简化操作,我已经创建了一个脚本,可以在目标机器上使用WMIC提取以下信息:流程、服务、用户帐号、用户组、网络接口、硬盘信息、网络共享信息、安装Windows补丁、程序在启动运行、安装的软件列表、操作系统、时区信息。
我已经通过各种标志和参数来提取有价值的信息,如果有人想要添加到列表中,请在下面留下评论。使用内置的输出特性,脚本将把所有结果写入一个人类可读的html文件。脚本地址:http://www.fuzzysecurity.com/tutorials/files/wmic_info.rar输出页面:http://www.fuzzysecurity.com/tutorials/files/Win7.html在继续渗透之前,你需要先回顾一下已经搜集到的信息,信息量应该已经不小了。我们计划的下一步就是要寻找一些能被轻易利用的系统缺陷来提升权限。
显而易见,第一步就是去查看补丁修正情况。如果发现主机已经被打了某些补丁,也不用很担心。我的 WMIC 脚本可以列出所有已安装的补丁,你可以通过下面这条命令来查看:但这些输出并不代表一定可以被利用,最好的策略先是去寻找可以提升权限的 EXP 以及它们的补丁编号。这些 EXP 包括但不限于:KiTrap0D (KB979682),MS11-011 (KB2393802),MS10-059 (KB982799),MS10-021 (KB979683),MS11-080 (KB2592799)。在列举了系统版本和补丁包后,你应该发现哪些权限提升漏洞可以被复现,使用补丁包编号你可以过滤掉那些已经被安装的补丁,检查一下是否有被漏打的补丁。
以下是对补丁包进行过滤的语法接下来我们将会有很多新发现。一般情况下,如果需要给很多机器配置同一个环境,一个技术人员一定不会逐个安装配置这些机器,而是会选择一些自动化安装的解决方案。这些方案是什么以及它们是如何工作的与我们当下所做的事不是很相关,重要的是他们留下的用于安装流程的配置文件,这些配置文件包含大量的敏感信息,例如操作系统的产品密钥和管理员密码。而我们最最感兴趣的就是管理员密码,因为我们可以借此来提升我们的权限。
以下是一些经常被用于存放配置文件的位置(当然检查整个系统也是可以的)这些目录中的文件可能包含着明文密码,或是Base64加密后的密码。下面是一些文件中的样例:在 Ben Campbell (@Meatballs__) 的推荐下,我将获取组策略首选项 ( Group Policy Preferences ) 保存的密码也作为快速攻陷目标机器的方式之一。组策略首选项文件可以被用于去创建域内主机的本地用户。如果你控制的机器被连接到一个域内,那么去查找一下存储在 SYSVOL 中的 Groups.xml 文件也是很有意义的,而且所有被授权的用户都有该文件的读权限。在这个 xml 文件中的密码只是被临时用户“模糊”地用 AES 加密了,说“模糊”是因为静态密钥已经被公开的公布于 msdn 网站上,所以可以轻松地破解这些密码。除了 Groups.xml 还有几个其他的策略首选项文件也同样含有可选的 “cPassword” 属性:这个漏洞可以通过手动浏览 SYSVOL 文件夹和抓取相关文件来利用,证明如下
【不支持外链图片,请上传图片或单独粘贴图片】
然而,我们都希望有一个自动化的解决方案,这样我们就可以尽可能快的完成这项工作。这里主要有两种方式,取决于我们的 shell 类型以及权限大小,(1) 一个是通过已建立的会话执行 metasploit 模块(2) 你可以使用 PowerSploit 的 Get-GPPPassword 功能。PowerSploit 是一个强大的 powershell 框架,作者是 Matt Graeber(擅长逆向工程、计算机取证以及渗透测试)。接下来我们要查找一个奇怪的注册表设置项“AlwaysInstallElevated”,如果该设置项被启用,它会允许任何权限的用户以 NT AUTHORITYSYSTEM 权限来安装 *.msi 文件。可以创建低权限的用户(它们的操作系统使用受到限制)但是却给它们 SYSTEM 权限去安装软件,这在我看来是有些奇怪。想要阅读更多的这方面的背景知识,可以查看这里 ,这是在 GreyHatHacker 博客上 Parvez 的一篇文章,他最早报告了这个安全问题。
为了能利用这个漏洞,我们需要去检查两个注册表键值是否被设置,这是我们是否能弹出 SYSTEM 权限 shell 的关键。以下是查询对应注册表键值的语法为了完成这个章节,我们还将在操作系统上做一些快速搜索,希望我们可以成功。
执行以下语句完成搜索希望到现在为止,我们已经有了一个 SYSTEM shell,但如果我们还没有,接下来还有一些攻击方法可以尝试。在最后章节我们将会关注于 Windows 服务和文件/目录权限部分。我们的目标是去使用低权限去提升当前会话权限。我们将会检查很多访问权限,所以我们应该抓取一份微软 Sysinternals 套件中 accesschk.exe 工具的副本。微软 Sysinternals 套件包含了许多强大的工具,但微软并没有把它们加入标准版的 Windows。你可以从 微软 technet 网站下载该套件我们将会先从 Windows 开启的服务来寻找线索,因为那里可以发现很多快速制胜的方法。通常来说,现代操作系统不会包含存在漏洞的服务。在这种情况下,漏洞指的是我们可以重新配置的服务参数。Windows 服务有点像应用程序的快捷键,下面是一个例子我们可以使用 accesschk 检查每一个服务的权限Accesschk 可以自动化的检测我们是否拥有一个 Windows 服务的写入访问权限。作为一个低权限用户,我们通常希望检查结果为“Authenticated Users”。一定要去检查你的用户属于哪个用户组,举个例子,“Power Users”被认为是一个低权限用户组(尽管它没有被广泛使用)
一起来比较一下在 Windows 8 和 Windows XP SP0 上输出的不同这个问题在之后的 XP SP2 版本中得到了解决,然而在 SP0 和 SP1 它可以被用作一个通用的本地提权漏洞。通过重新配置该服务,我们可以让它以 SYSTEM 权限运行任何我们指定的二进制文件。
让我们来看看怎么实践操作,在这个例子里该服务将会执行 netcat 并且可以反弹一个 SYSTEM 权限的 shell。其它的操作方法当然也是可能存在的。
【不支持外链图片,请上传图片或单独粘贴图片】
即使服务是不正确配置的,我们大多时候也不能获取该服务完整的控制权限。下图是从 Brett Moore’s 在 Windows 提权方面的渗透测试,图中的任一权限都可以给我们一个 SYSTEM shell
【不支持外链图片,请上传图片或单独粘贴图片】
重要的是去记住我们搞定的 session 是属于哪个用户组的,正如先前提到的 “Power Users” 被视为是一个低权限用户组。但 “Power Users” 也有一些属于他们自己的配置漏洞, Mark Russinovich 已经在这个问题上写了非常有趣的文章。
“Power Users”的力量 ( Mark Russinovich )最后,我们将会检查文件/目录的权限,如果我们不能直接攻击计算机系统,我们就让计算机做所有的繁重工作。由于这方面涉及内容太多,所以我将介绍两种提权漏洞给你,并展示如何去利用它们。一旦你掌握了通用的思路,你将能够在其它场景下应用这些技术。作为第一个示例,我们将复现 GreyHatHacker 上 Parvez 的一篇文章中的方法。“利用低文件夹权限提权”,这是一个很棒的提权思路,我非常推荐大家去阅读。这个示例是DLL 劫持中的一个特例。程序通常不能通过它们自身实现功能,它们需要挂载许多自身所需的资源(大多是 DLL 但也有某些特有文件)。如果一个程序或服务从一个我们拥有写权限的目录中装载了文件,那我们就可以借此弹出一个与之相同权限的 shell通常一个 Windows 应用程序将会使用一个预定义的搜索路径去寻找 DLL 组件,而且它会以特定的顺序检查这些路径。DLL 劫持经常是将一个恶意的 DLL 置于某一搜索路径中,并确保恶意 DLL 会在合法的 DLL 之前被找到。
以下是在32位操作系统下 DLL 查找的顺序1The directory from which the application loaded232-bit System directory (C:WindowsSystem32)316-bit System directory (C:WindowsSystem)4Windows directory (C:Windows)5The current working directory (CWD)6Directories in the PATH environment variable (system then user)有时应用程序想要加载的 DLL 可能不在主机上,引起该问题的原因有很多,比如当 DLL 文件只存在于某个未安装的插件或者计算机特性(feature)时。在这种情况下, Parvez 发现某些 Windows 服务会去试图加载默认安装中不存在的 DLL。但由于问题中的 DLL 不存在,所以我们将遍历所有路径。作为一个低权限的用户,也许我们可以去放置一个恶意 DLL 在上述路径中的 1-4 中。而路径 5 是行不通的,因为我们正在研究的是 Windows 服务,我们并没有所有目录的写权限
让我们来看一下如何进行实战,在本例中,我们将会利用需要加载 wlbsctrl.dll 的 IKEEXT (IKE and AuthIP IPsec Keying Modules) 服务现在必要的条件都已经满足了,我们可以生成一个恶意的 DLL 并弹出一个 shell在将恶意 DLL 传送到靶机之后,我们需要将它重命名为 wlbsctrl.dll 并将它移动到 “C:Python27” 路径下。完成后,我们只需要耐心等待机器被重启(或者我们可以尝试强制重启),之后我们就可以得到一个 SYSTEM shell。万事俱备,我们只需要等待机器重启。出于演示目的,我在下面截图中是使用管理员指令手动重启该服务
【不支持外链图片,请上传图片或单独粘贴图片】
对于我们最后的例子,我们将关注于计划任务。回顾我们之前搜集到的信息,我们有以下条目这看起来像有一个 TFTP 客户端连接到远程主机去搜集某些 log 文件。我们可以看到这个任务每日早9点以 SYSTEM 权限运行,再看看我们是否有这个文件夹的写入权限显然这是一个严重的配置问题,这个计划任务根本不需要以 SYSTEM 权限执行,但更糟糕的是任何授权的用户都有该目录的写权限。理想情况下,对于一次渗透测试我会抓取一个 TFTP 客户端在里面放一个后门,确保它仍然正常工作,再将其放回靶机。然而出于演示目的,我们可以简单的通过 metasploit 生成一个二进制文件然后直接覆盖它。现在工作只剩下上传我们的恶意可执行文件并覆盖掉 “E:GrabLogstftp.exe” 文件。一旦上传成功,我们就可以去休息了,等到明早睡醒就可以得到我们的 shell 。对了,别忘记去检查我们靶机的时间/时区为了证明这次提权,我调快了系统时间。从以下截图中可以看到,在早9点时我们得到了 SYSTEM shell
【不支持外链图片,请上传图片或单独粘贴图片】
在思考获取文件/文件夹权限时,这两个示例应该会给你一些寻找漏洞的思路。真正的实战中你可能需要花时间去检查所有的Windows服务、计划任务和开机任务的 binpaths
我们已经知道了 accesschk 是一种测试工具。在文章结束之前,我会再给你一些使用 accesschk 的技巧本指南旨在成为Windows特权升级的“基础”。如果你想真正掌握这个主题,你需要投入大量的工作和研究。就像所有的渗透测试一样,举一反三是关键,你对目标的了解越多,攻击的途径越多,成功的几率就越大。还要记住,有时你可能会将你的权限提升到管理员。从管理员到系统的提权是一个无关紧要的问题,你可以始终重新配置一个服务,或者创建一个具有系统级别特权的调度任务。
现在就去实践,然后得到SYSTEM!!看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注云编程开发博客行业资讯频道,感谢您对云编程开发博客的支持。

相关推荐: 如何进行FTP数据备份

本篇文章给大家分享的是有关如何进行FTP数据备份,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/03 09:15
下一篇 02/03 09:16