本文通过 Google 翻译 UAC-Bypass – Windows Privilege Escalation 这篇文章所产生,本人仅是对呆板翻译中部门表达别扭的字词进行了校正及个别注释补充。导航
注:低/中/高完整性 shell 之间的区别,以图形化界面用户启动 cmd.exe 步伐为例,平凡用户直接启动就算作是低完整性 shell 吧,管理员组的用户直接启动为中完整性 shell,管理员组的用户右键“以管理员身份运行”启动为高完整性 shell。在第一种情况下,我们以平凡域用户的身份在 Windows 10 呆板上获得了一个驻足点。在毛病利用后枚举阶段,我们发现了体系中存储着本地管理员用户凭据,然后我们利用存储的凭据以该管理员用户的身份获得一个中完整性的 shell。最后,我们通过两种不同的 UAC 绕过方式,最终将中完整性 shell 提升到了高完整性 shell。
似乎只有管理员组的账户才有这种在身份稳定的情况下 shell 权限能由中转高完整性的说法,而以平凡用户和体系用户得到的 shell 一般就已经是其自身身份的完整权限了,不外具有 SeBackupPrivilege 特权的平凡域用户好像破例,如此例。
明白 UAC 最简单的方法就是,将其看作是类似于在 Linux 呆板上使用 sudo 下令。使用 sudo 下令时,你必须知道 root 暗码才能以 root 权限执行下令。UAC 也是一样,右键单击要运行的步伐并选择 "以管理员身份运行 "后,体系会提示你输入管理员暗码。大家都熟悉 UAC 弹出框,但是,让我们再看下。
暗码重用是一个非常常见的问题。当你找到一组凭证时,请尽可能地测试 用户/暗码 组合。此外,请尽可能针对您所列举的全部账户测试您找到的任何暗码。从最开始的扫描中,我们发现受害者的 445 端口和 3389 端口是打开的。因此,我们首先使用 Impacket 套件中的 psexec.py 工具测试了我们对 SMB 服务的访问。
只要用户能够写入 ADMIN$ 共享,我们便能得到一个 SYSTEM shell。【注:只要能够通过 psexec.py 成功连接,那么得到的便是 SYSTEM shell。】
注:使用 psexec.py 须注意事项:由于不是管理员用户,因此 psexec.py 连接失败。接着我们使用 rdp_check.py 测试这个域账户是否能够通过 RDP 访问,它也来自 Impacket 工具套件,结果发现我们能够通过 RDP 连接到此主机!
- 服务端 445 端口必须能通讯且共享文件夹 ADMIN\(/C\)/IPC$ 必须都是共享状态(默认情况下都是开启的)。
- 假如目标是工作组,则必须使用本地 administrator 用户连接,使用本地其他账号(包括管理员组中的非 administrator 用户)登录都会提示访问拒绝。[下令:impacket-psexec administrator@1.1.1.1和impacket-psexec 111/administrator@1.1.1.1结果是一样,只要administrator 的暗码是精确的就行。]
- 假如目标(该目标包含平凡域主机和域控)已加域,则可以使用域账户和本地账户两种方式进行连接。(1)使用本地账户的方式连接则只能使用本地 administrator 账户连接;[下令如上](2)使用域账户的方式连接则只能用域管理员组中的账户连接,别的域账户均不能连接,即便是在平凡域主机上。[下令:impacket-psexec sky/admin@1.1.1.1 和 impacket-psexec sky.com/admin@1.1.1.1这两种格式均可 ]【注意:网上有说 windows 版 psexec.exe 能够以平凡域用户连接平凡域主机,但我使用 impacket-psexec.py 的测试结果是不可行。我的测试环境是:win10+win server 2012 R2】
注:只有高完整性 shell 才能够访问 administrator 的家目录,这实在也是判断高完整性 shell 的一种方式。
滥用内置二进制文件的最大好处是,你可以 "靠山吃山",而不用在受害者呆板上安装别的工具。此外,由于这些都是内置的二进制文件,因此这些技能也可以绕过杀毒软件的阻碍。netplwiz.exe 用于将用户成员资格更改为 Standard 用户、Administrator、Guest 或任何别的什么。但是,它的重要功能在这里并不是真正重要的,我们更感爱好的是它的非预期功能可以被拿来滥用。
为了展示该技能可以绕过杀毒,我将在启用 Defender 实时保护的情况下演示这一点。
同样的技能也可以用来以管理员身份运行 taskmgr.exe,而不是 cmd.exe,然后对 LSASS 进程执行内存转储。如需了解关于转储 LSASS 进程的各种技能,可以在此处检察我的相关文章。2、场景二:枚举得到存储的管理员凭证(CLI 环境)
将 IP 地址更换为攻击者电脑的 IP。
通常我会在自己的 exploits 文件夹中保存此脚本的多个副本,这些副本文件内容唯一的不同便是文件底部下令中的端口值不同。然后,我将端口号附加到每个副本的名称中。接下来,我们必要在攻击者计算机上启动一个 netcat 监听器,以通过端口 443 捕捉 shell。设置完毕后,我们可以使用 runas 运行以下下令,以获取反向 shell :
Empire 实现了无需 powershell.exe 即可运行 PowerShell 的能力,从键盘记载器到 Mimikatz 以及用于逃避网络检测的自适应通讯,全部这些模块都被包含在一个以可用性为中央的框架之中。将 Empire 仓库克隆到攻击者呆板上后,您必要在两个下令窗口中分别执行以下下令才能启动 Empire,因为它必要服务器和客户端。
我们不会与 Empire 服务端选项卡交互,只与 Empire 客户端选项卡交互。首先,我们将新建一个监听器,以便当我们在目标呆板上执行 launcher.bat(stager)时,我们将返回一个 agent。
要设置 Host 或 Port 的新值,请使用 set 下令。比方:set Port 1337现在我们已经设置了全部必须的选项,可以使用 execute 下令来启动监听器了。
当我使用 Empire 绕过 UAC 时,我通常会先尝试 bypassuac_fodhelper,假如这不起作用,我将从上到下逐一尝试。选择 fodhelper 模块并按 Enter 键后,我们会看到有关该模块的更多信息,可以看到我们必要设置 Listener。
很多时候,当我使用 Empire 并执行下令时,它似乎暂停并挂起了。但现实上,只需键入 Interact,然后再次键入 Agent 名字,即可表现下令的结果。Empire 的 shell 体验并不是最好的,以是我们要使用 shell 下令来执行另一个 Nishang PowerShell 的反向 TCP 脚本,如下所示:
由于 Empire HTTP 监听器使用的是 443 端口,因此我使用了 Invoke-PowerShellTcp 的另一个副本,将 21 端口作为反向 shell 的连接端口。在执行上述下令之前,我又在攻击呆板上的 21 端口启动了 netcat 监听器,并在存放此脚本的目录中启动了 HTTP 服务器。执行下令后,我们在监听器窗口得到了一个新的 shell。
另一个可能必要使用 UAC 绕过的示例是,当您使用 BeEF 挂接本地管理员的欣赏器,然后使用欣赏器毛病获取 shell。这险些总是会导致低完整性 shell(甚至不是中等)。假如用户位于本地管理员组中,则必须先升级到中等完整性 shell,然后才能使用 UAC 绕过来获取高完整性 shell。3、场景三:利用内核毛病创建管理员凭据(CLI 环境)
这是该 EXE 毛病利用步伐的仓库连接。将文件下载到攻击者呆板上后,我们将其发送给受害者,并使用它来创建一个本地管理员用户。
我发现,在没有自定义下令的情况下,直接执行毛病利用步伐是可以创建管理员用户,但提示的暗码 RibSt3ak69 并不起作用!由于暗码不起作用,我们必要再次使用 COMahawk64.exe 来更改暗码!
根据我使用此脚本的经验,要使其工作的唯一方法就是在脚本底部添加要执行的下令。由于我们体系上已经有了 netcat,因此我们可以在脚本底部添加以下下令:
我还将脚本的名称重命名为 Bypass-UAC.ps1,并编辑此脚本,将脚本中 cmd.exe 字串更改为 powershell.exe。这不是脚本工作所必须的,但必要提及一下该脚本是可以这样改动的。
使用 powershell.exe -ep bypass -c 来执行脚本允许我们绕过 powershell.exe 的默认执行战略,该战略默认处于打开状态,目标是不允许将外部脚本加载到当前会话中。加载脚本后,我们会立即看到下令被执行,并创建注册表 hive,从而获得提升的 shell。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |