PythonPig's Blog 移动通信 TCP/IP Hacker 后渗透 伪码农

non-built-in Administrator使用管理员权限远程执行命令

2021-05-29
PythonPig

最近在使用impacket的wmiexec.py对非域内主机进行渗透时遇到了rpc_s_access_denied、WBEM_E_ACCESS_DENIED的问题,同时发现新添加的管理员对系统默认共享文件夹(admin$和c$)没有远程访问权限。为了解决上述问题,花了些时间找了下原因,这里做个记录。

access denied

图片来源于https://www.login-as.no/win10-uac-remote-restrictions/

计算机本地用户根据所属的用户组的不同可以分为built-in Administrator、non-built-in administrative accounts、non-administrative accounts。
built-in Administrator是系统本身自带的管理员用户,其SID为500,具有系统默认的管理员权限;
non-built-in administrative accounts是非系统默认管理员,如新添加的管理员用户,是administrators组中的用户,其SID不是500;
non-administrative accounts是不在administrators组中的用户,即非管理员用户。

下面主要针对non-built-in administrative accounts、non-administrative accounts 2类用户在横向渗透中使用sc类(psexec,scshell)、wmi类(wmiexec.wmic)、smb类(smbexec,ipc,smbclient)、winrm类等工具可能遇到的权限问题进行讨论。

分文主要以wmiexec.py使用过程中的权限问题进行讨论,本文讨论的方法在windows 7 x64和windows 10 x64下测试通过。

#0x00 Remote UAC

windows在windows Vista之后引入了一种默认开启的Remote UAC机制,计算机的任何非SID为500本地管理员帐户,无法执行管理任务。
关于Remote UAC更多内容参见本文最后的“参考”部分。

Remote UAC主要限制了on-administrative accounts这类用户的权限,对于域管用户、存在本地管理员组的域用户无影响。

#0x01 非built-in管理员用户使用wmi

在横向渗透的过程中会遇到这样的问题,新添加的管理员用户在使用wmiexec.py时,提示没有权限,原因就是Remote UAC限制了非built-in管理员用户的远程管理权限。
对于非built-in管理员用户的这用问题,解决方法很简单,关闭Remote UAC即可。通过新增注册表项LocalAccountTokenFilterPolicy并赋值为1即可,可通过如下命令行完成。

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f

#0x02 非管理员用户使用wmi

非管理员用户使用wmi远程执行命令时可能遇到的问题包括rpc_s_access_denied、WBEM_E_ACCESS_DENIED和命令执行无回显等问题,下面依次分析如何解决这3个问题。

1、rpc_s_access_denied
出现上述问题的原因是用户没有DCOM用户权限,解决方法如下:

run dcomcnfg > Component Services > Computers > My Computer > (right click) properties > COM security > (Access Permissions and Launch and Activation Permissions)Edit Limits. Add Users and allow remote access, remote launch, and remote activation.

2、WBEM_E_ACCESS_DENIED
出现上述问题的原因是没有设置命名空间权限,解决方法如下:

启动 wmimgmt.msc
在WMI控制窗格中,右键单击WMI控制,选择属性,然后选择安全。
高亮ROOT,点击安全。
添加用户,并赋予所有权限(其实赋予远程权限即可)。
点击高级,选择新增的用户,编辑,应用于本目录和子目录。

3、命令执行无回显 出现这个问题的原因是非管理员用户没有读写admin$的权限。
因为wmiexec.py回显是通过将结果写入ADMIN$中的文件然后读回文件内容实现的,若用户没有读写ADMIN$的权限,则wmiexec.py无法顺利执行。
解决该问题有两种方法
第一种是使用-nooutput参数,使用该参数后wmiexec.py可以顺利完成命令执行,但是无回显。
第二种方法是寻找或新建一个隐蔽的文件夹并赋予新建用户读写权限,开启文件共享的方法如下:

properties > sharing > network file and folder sharing 中给admin赋予权限并共享
properties > sharing > advanced sharing中可以修改共享名字,如改为public

使用wmiexec.py时需指定共享文件夹,命令如下:

wmiexec.py admin@10.10.10.10 -share public

这种方法虽然可以使用wmiexec.py执行部分系统命令,但是由于用户是非管理员用户,其权限较低,对于高权限的操作和目录访问均受到限制。

参考


Comments

Content