216
0
658
高级会员
本文通过 Google 翻译 UAC-Bypass – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。
注:低/中/高完整性 shell 之间的区别,以图形化界面用户启动 cmd.exe 程序为例,普通用户直接启动就算作是低完整性 shell 吧,管理员组的用户直接启动为中完整性 shell,管理员组的用户右键“以管理员身份运行”启动为高完整性 shell。 似乎只有管理员组的账户才有这种在身份不变的情况下 shell 权限能由中转高完整性的说法,而以普通用户和系统用户得到的 shell 一般就已经是其自身身份的完整权限了,不过具有 SeBackupPrivilege 特权的普通域用户好像例外,如此例。
理解 UAC 最简单的方法就是,将其看作是类似于在 Linux 机器上使用 sudo 命令。使用 sudo 命令时,你必须知道 root 密码才能以 root 权限执行命令。UAC 也是一样,右键单击要运行的程序并选择 "以管理员身份运行 "后,系统会提示你输入管理员密码。
密码重用是一个非常常见的问题。当你找到一组凭证时,请尽可能地测试 用户/密码 组合。此外,请尽可能针对您所列举的所有账户测试您找到的任何密码。
只要用户能够写入 ADMIN$ 共享,我们便能得到一个 SYSTEM shell。【注:只要能够通过 psexec.py 成功连接,那么得到的便是 SYSTEM shell。】
注:使用 psexec.py 须注意事项: 服务端 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 的一种方式。
滥用内置二进制文件的最大好处是,你可以 "靠山吃山",而不用在受害者机器上安装其它工具。此外,由于这些都是内置的二进制文件,因此这些技术也可以绕过杀毒软件的阻碍。
为了展示该技术可以绕过杀毒,我将在启用 Defender 实时保护的情况下演示这一点。
同样的技术也可以用来以管理员身份运行 taskmgr.exe,而不是 cmd.exe,然后对 LSASS 进程执行内存转储。如需了解关于转储 LSASS 进程的各种技术,可以在此处查看我的相关文章。
将 IP 地址替换为攻击者电脑的 IP。
通常我会在自己的 exploits 文件夹中保留此脚本的多个副本,这些副本文件内容唯一的不同便是文件底部命令中的端口值不同。然后,我将端口号附加到每个副本的名称中。
Empire 实现了无需 powershell.exe 即可运行 PowerShell 的能力,从键盘记录器到 Mimikatz 以及用于逃避网络检测的自适应通信,所有这些模块都被包含在一个以可用性为中心的框架之中。
我们不会与 Empire 服务端选项卡交互,只与 Empire 客户端选项卡交互。
要设置 Host 或 Port 的新值,请使用 set 命令。例如:set Port 1337
当我使用 Empire 绕过 UAC 时,我通常会先尝试 bypassuac_fodhelper,如果这不起作用,我将从上到下逐一尝试。
很多时候,当我使用 Empire 并执行命令时,它似乎暂停并挂起了。但实际上,只需键入 Interact,然后再次键入 Agent 名字,即可显示命令的结果。
由于 Empire HTTP 监听器使用的是 443 端口,因此我使用了 Invoke-PowerShellTcp 的另一个副本,将 21 端口作为反向 shell 的连接端口。在执行上述命令之前,我又在攻击机器上的 21 端口启动了 netcat 监听器,并在存放此脚本的目录中启动了 HTTP 服务器。
另一个可能需要使用 UAC 绕过的示例是,当您使用 BeEF 挂接本地管理员的浏览器,然后使用浏览器漏洞获取 shell。这几乎总是会导致低完整性 shell(甚至不是中等)。如果用户位于本地管理员组中,则必须先升级到中等完整性 shell,然后才能使用 UAC 绕过来获取高完整性 shell。
这是该 EXE 漏洞利用程序的仓库连接。
我发现,在没有自定义命令的情况下,直接执行漏洞利用程序是可以创建管理员用户,但提示的密码 RibSt3ak69 并不起作用!
根据我使用此脚本的经验,要使其工作的唯一方法就是在脚本底部添加要执行的命令。
我还将脚本的名称重命名为 Bypass-UAC.ps1,并编辑此脚本,将脚本中 cmd.exe 字串更改为 powershell.exe。这不是脚本工作所必需的,但需要提及一下该脚本是可以这样改动的。
使用 powershell.exe -ep bypass -c 来执行脚本允许我们绕过 powershell.exe 的默认执行策略,该策略默认处于打开状态,目的是不允许将外部脚本加载到当前会话中。
举报
本版积分规则 发表回复 回帖后跳转到最后一页
|智能设备 | 粤ICP备2024353841号-1
GMT+8, 2025-3-10 19:03 , Processed in 4.242478 second(s), 29 queries .
Powered by 智能设备
©2025