域渗透之BloodHound分析
关注公众号回复20231110获取最新网络安全以及内网渗透等资料。
文章目录
- 关注公众号回复20231110获取最新网络安全以及内网渗透等资料。
- BloodHound
- BloodHound简介
- 数据采集
- BloodHound分析
- Analysis
- Find all Domain Admins(查询所有域管理员)
- Map Domain Trusts (查询域信任)
- Find Computer with Unsupported Operating System(查询具有不受支持的操作系统危险权限)
- Find Principals with DCSYNC Rights(查询dsync权限)
- Users with Foreign Domain Group Membership(查询外域组成员资格的用户)
- Find Kerberoastable Member of High Value Groups(查找高价值可kerberoastable的成员)
- List All Kerberoastable Accounts(列出所有kerberoastable用户)
- Node Info
BloodHound
BloodHound简介
BloodHound 是一个强大的内网域渗透提权分析工具,BloodHound 采用了原始的 PowerPath 概念背后的一些关键概念,并将这些概念放在一个能运行且直观,并易于使用的功能中,用于提取和分析数据,可以高效准确地显示如何提升 AD 域中的权限。攻击者可以使用BloodHound轻松识别高度复杂的攻击路径,否则很难快速识别。防御者可以使用BloodHound来识别和防御那些相同的攻击路径。蓝队和红队都可以使用BloodHound轻松深入了解Active Directory环境中的权限关系。
安装的话我这里就不阐述了,可以参考:https://bloodhound.readthedocs.io/en/latest/index.html
数据采集
BloodHound需要来自Active Directory环境的三条信息才能运行
1.谁在哪里登录
2.谁拥有管理权限
3.那些用户属于那些组
4.那些主体可以控制那些用户和组对象
在大多数情况下,收集此信息不需要管理员权限,也不需要在远程系统上执行代码。基于PowerView的PowerShell摄取器使数据收集变得快速而简单。
收集器收集许多额外的数据,这些数据提供了更多路径,以及节点属性以方便使用。
使用BloodHound.py采集数据
下载地址:https://github.com/dirkjanm/BloodHound.py
参数:
-d 域名
-u 域用户
-p 密码
-gc 域控
-c 导出所有
python3 bloodhound.py -d relaysec.com -u win7 -p Admin123.. -gc dc.relaysec.com -c all
当然你也可以使用BloodHound.exe 或者 其他ps1等工具,我只是觉得这个比较方便一点,不需要在目标主机上运行。
之后将这些文件拖到BloodHound中即可。
BloodHound分析
等他全部导入即可:
BloodHound页面简介
首先来看BloodHound的左上角界面:
鼠标右键空白处时,会弹出以下内容。
鼠标右键任一节点时,会弹出以下内容
基本信息
可以看到这里用户有449个 组有109个 计算机有342个 OU有94个 GPO有58个 Domains有2个
Analysis
那么我们先从Analysis开始说起,这里简单介绍几个。
Find all Domain Admins(查询所有域管理员)
可以看到如下三个用户都是域管理员组的。
Map Domain Trusts (查询域信任)
这里我并没有搭建林相关的环境,所以这里不演示。
Find Computer with Unsupported Operating System(查询具有不受支持的操作系统危险权限)
Find Principals with DCSYNC Rights(查询dsync权限)
USER1,WIN7,Administrator都在Domain ADMINS组中,也就是说这些账户都是Domain ADMINS中的成员,而Domain ADMINS组是ADMINISTRATORS组的成员,并且Administrator账户也是ENTERRISE ADMINS组的成员。所以这些账户具有Dcsync的权限。
Users with Foreign Domain Group Membership(查询外域组成员资格的用户)
这里我并没有搭建林相关的环境,所以这里不演示。
Find Kerberoastable Member of High Value Groups(查找高价值可kerberoastable的成员)
可以看到win7这个用户是Domain admins组中的成员,并且win7是可以Kerberoastable的。也就是win7这个用户它设置了不需要域认证。
List All Kerberoastable Accounts(列出所有kerberoastable用户)
也就是说我们也可以对这些账户进行kerberoastable攻击。
查找AS-REP可kerberostable的用户
查找非约束性委派的最短路径
Shortest Paths to High value Targets(通往高价值的最短路径)
这样看的很乱,我们可以右键一个节点,比如说我目前有一个win7的用户,我想到达DC这台机器的最短路径是什么。
这里我们就看到win7这个用户对DC这台机器有着writeDacl的权限和GenericWrite的权限,这意味着攻击者可以添加或删除特定的访问控制项,也就是ACE。
接下来我们来看下Node Info这个选项
Node Info
账户信息
基本信息
额外属性
相关的组成员
如下可以看到win7这个用户是Domain Admins组的组成员,AdminTo表示这个组对下面着两台计算机有着本地管理员的权限,也就是说win7对这两台计算机有着本地管理员的权限.
出站控制权
这里我的理解是win7用户对别人有着什么控制的权限。
如下图:可以看到win7用户对如下组,计算机,OU,GPO等有着不同的权限,比如说genericwrite,Genericall,等相关的权限。
入站控制权
这里我的理解是谁对win7这个用户有着控制相关的权限。
可以看到如下图,如下的小组成员ADMINISTRATORS@RELAYSEC.COM对用户具有AllExtendedRights权限WIN7@RELAYSEC.COM。
扩展权限是授予对象的特殊权限,允许读取特权属性以及执行特殊操作。
以及组DOMAIN的成员ADMINS@RELAYSEC.COM拥有用户的所有权WIN7@RELAYSEC.COM.对象所有者保留修改对象安全描述符的能力,而不考虑对象的DACL上的权限。
大家如果不懂就是中间这个什么意思的话,可以右击点击 ? Help这个选项,他就会弹出对指向的解释。
那么既然我们看了那么多了,我这里搭了一个环境,模仿外国佬的一个环境。
如下图,hack用户是group1组的,group1组对user1这个用户有着完全控制的权限,user1是group2组的,group2对user2有着完全控制的权限,user2又是group3组的,group3组对user3和user4有着完全控制的权限,那么user3和user4又是group4组的,group4对domain admins有着完全控制的权限。
那么这里需要理解的是hack用户是group1组的,但是group1对user1有完全控制,所以说hack用户对user1这个用户有着完全控制的权限,包括更改密码等等。
我们可以来感受以下。
如下图可以看到,hack用户加入到group1组中。
然后将group1对user1的完全控制,添加一条ACE即可。
那么现在我通过hack用户登录任意一台域内机器,然后更改user1的密码。
可以看到我更改user1用户是可以直接更改的,但是更改user2是不行的,因为我对user2没有完全控制的权限。但是user1是有的,所以可以登录user1用户然后去更改user2的密码。
当我吧这条ACE删了之后,那么肯定是无法修改得了。
可以看到他会立即生效。这次就不能改改了。
这一篇就暂时到这里了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!