前言
今天的靶机依然是HTB(Hack The Box)的靶机--Support。通过这次的靶机训练,我们可以继续了解域渗透工具BloodHound的使用,也可以了解一点PE文件逆向相关的知识。
开干:
1、环境准备
-
HTB的靶机
选择HTB的Control靶机,下载HTB的VPN。
-
Kali
将HTB的vpn文件put到kali中,使用命令 openvpn + ovpn文件路径 命令开启vpn连接。连接成功会在HTB网页右上角显示CONNECTIONS
2、扫描开放端口
使用nmap命令扫描开放端口:
nmap xxx.xxx.xxx.xxx -sV -sC -p- -T4 -Pn
列举几个比较重要的端口:88(kerberos),135、593(RPC),139、445(SMB),389、3268、3269(Ldap)
3、寻找漏洞尝试利用
开放了Ldap服务,先使用ldapsearch匿名搜索下目录对象。
ldapsearch -x -H ldap://10.129.xxx.xxx/ -D '' -w '' -b 'DC=htb,DC=local'
并没有权限,接着访问下SMB服务,列举下共享目录:
访问support-tools目录:
目录下有很多exe文件,mget 将所有文件下载到本地,其中有个文件名称为UserInfo.exe.zip,可能存在一些用户信息,将该文件解压:
其中有个文件名称为UserInfo.exe,将该文件导入IDA中,当然也可以选择其他PE文件逆向工具。
查看左边的方法名称,有个方法为getPassword,似乎与密码有关。
.field private static string enc_password 表明enc_password是一个私有静态字段,下面就去其他方法中查找enc_password是在哪赋值的。
得到密钥为:nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz
接下来就是去找用户,在UserInfo.Services.LdapQuery相关方法中找到一些和用户相关的逻辑:
可以看到这边调用了UserInfo.Services.Protected::getPassword() 方法,获取一个密码字符串,并将其放到堆栈上,然后将字符串 "LDAP://support.htb" 加载到栈上,将字符串 "supportldap" 加载到栈上。
总结来说,这个方法初始化LdapQuery实例,获取一个密码,以及LDAP路径和用户名创建一个DirectoryEntry实例。为后续LDAP操作做准备。所以我们通过这边可以找到用户名就是 “support” 。
至此我们就找到了一对用户名密码,"support" : "nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz"
尝试winrm登录:
登录失败了,因为通过逆向这个exe文件,发现是在做Ldap相关的操作,所以接下来用这个用户对LDAP服务进行搜索操作,看看能不能发现其他有用的信息:
可以发现在用户support这边,有个info字段,内容为:Ironside47pleasure40Watchful,以这个为密码,用evil-winrm尝试登录:
成功登录后,读取用户Flag:
4、提权
将生成的zip文件下载到装有BloodHound的机器(sharphound&bloodhound的安装启动,可以参考上一篇文章)。
点击Shortest Paths to Unconstrained Delegation Systems
将拿到的用户[email protected] 设置为起始节点,查看该节点的详细信息,包括与之相关的权限和控制关系。
这边我们就可以看到,[email protected]用户是SHARED SUPPORT [email protected]组的成员,同时,SHARED SUPPORT ACCOUNTS@SUPPORT.HTB组对DC.SUPPORT.HTB有GenericAll权限,DC.SUPPORT.HTB又是DOMAIN [email protected]组的成员。
右键GenericAll 查看使用建议:
其中说到,对计算机对象的完全控制可用于执行基于资源的约束委派攻击。接下来就按照Help中的步骤,一步步执行。
执行提示中的Powershell命令,需要下载两个脚本PowerView.ps1、Powermad.ps1,还需要下载一个针对Kerberos认证系统的工具Rubeus.exe。三个工具都可以去github中下载。
. ./Powermad.ps1
. ./PowerView.ps1
运行两个PowerShell脚本文件后,执行攻击命令。
流程是这样的:
1、首先,如果攻击者没有控制设置了 SPN 的账户,可以使用 Kevin Robertson 的 Powermad 项目添加一个新的攻击者控制的计算机账户
2、然后可以使用 PowerView 来检索新创建的计算机帐户的安全标识符 (SID)。
3、再以攻击者添加的计算机 SID 为委托人建立一个通用 ACE,并获取新 DACL/ACE
4、接下来,需要在接管的计算器账户的 msDS-AllowedToActOnBehalfOfOtherIdentity 字段中设置这个新创建的安全描述符
5、然后,使用 Rubeus 将明文密码散列为 RC4_HMAC 形式
6、最后,使用 Rubeus 的 *s4u* 模块,为要 "假装 "为 "管理员 "的服务名称(sname)获取服务票据。
将票据复制出来,去除其中所有的空格,保存本地。
在将Kerberos票据文件转换为ticket.ccache文件(Kerberos凭据缓存文件)
更新KRB5CCNAME 环境变量,将域名support.htb、dc.support.htb添加到/etc/hosts中,使用带有Kerberos身份验证的psexec获取SYSTEM shell。
-
"-spn 'cifs/support.htb'" 指定了要请求服务票据的服务主体名称(Service Principal Name)。 -
"-impersonate 'administrator'" 表示要冒充(impersonate)管理员用户来请求票据。 -
"-dc-ip 'xxx.xxx.xxx.xxx'" 指定域控制器的 IP 地址。 -
"'support.htb'/'attackersystem$':'xxxxxxxxx'" 包含了目标域、攻击者系统的计算机名以及相应的密码。
更新KRB5CCNAME 环境变量,使用带有Kerberos身份验证的psexec获取SYSTEM shell。
成功拿到管理员的shell,读取root flag:
5、总结
原文始发于微信公众号(从黑客到保安):跟着大佬学渗透之高级篇06
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论