访问控制列表ACL学习

news2024/12/26 21:47:20

ACL概念

ACL:

ACL 是 Access Control List(访问控制列表)的缩写。它是一种用于管理和控制访问权限的机制或数据结构。ACL 用于确定谁可以访问特定资源(例如文件、文件夹、网络资源等)以及他们可以执行的操作。ACL 通常由一系列访问控制条目组成,每个条目定义了一个用户、用户组或角色以及与其关联的权限。每个权限指定了对资源的特定操作,如读取、写入、执行或删除等。ACL 可以在操作系统、网络设备、数据库系统和应用程序等各种环境中使用。

**ACL 的主要目的是提供细粒度的访问控制,以确保只有授权的用户可以访问和操作资源,从而保护系统的安全性和完整性。**通过配置适当的 ACL,系统管理员可以限制用户的权限,根据需要授予不同级别的访问权限,并确保敏感数据和资源只能被授权的用户或角色使用。ACL 是许多操作系统和网络设备的基本安全功能之一,并在许多应用程序中用于实现细粒度的权限管理。它提供了一种灵活和可扩展的方法来管理访问控制,以满足组织对安全性和数据保护的需求。

访问控制列表 (ACL) 是访问控制条目 (ACE) 的列表。ACL 中的每个 ACE 都标识一个受托者,并为该受托者指定允许、拒绝或审计的访问权限。安全对象的安全描述符可以包含两种类型的 ACL:DACL 和 SACL。DACL 用于控制资源的访问权限,而 SACL 则用于记录和审核访问事件。

DACL:

DACL 是 Discretionary Access Control List(自由访问控制列表)的缩写。它是用于访问控制的一种权限机制,用于确定谁可以对资源进行访问以及他们可以执行的操作。DACL 是 Windows 操作系统中的一个重要概念,它是一种与对象(如文件、文件夹、注册表项等)关联的访问控制列表。DACL 包含了一系列访问控制条目(ACEs),每个条目指定了一个用户、用户组或角色以及与其关联的权限。

DACL 的特点是基于主体对资源的自由访问控制,即资源的所有者或管理员可以自由设定谁可以访问资源以及他们可以执行的操作。通过配置 DACL,可以限制或授予特定用户或用户组对资源的权限,例如读取、写入、执行、删除等。DACL 中的每个访问控制条目都包含一个身份(用户、用户组或角色)和一组权限。权限定义了允许或拒绝对资源执行的操作。当用户尝试访问资源时,操作系统会根据 DACL 中的条目来决定是否允许访问。需要注意的是,DACL 只是访问控制的一部分,它仅涵盖了资源的自由访问控制。在 Windows 操作系统中,还有其他类型的访问控制,如系统访问控制列表(SACL)用于审核和监视访问,以及对象所有者等。总而言之,DACL 是 Windows 操作系统中用于自由访问控制的权限机制,用于确定谁可以访问资源以及他们可以执行的操作。它提供了一种灵活的方式来定义和管理资源的访问权限,以满足安全性和数据保护的需求。

SACL:

SACL 是 System Access Control List(系统访问控制列表)的缩写。它是用于安全审计和监视的一种权限机制,用于跟踪对资源的访问和操作。SACL 是 Windows 操作系统中的一个重要概念,它是一个访问控制列表,与对象(如文件、文件夹、注册表项等)关联。SACL 包含了一系列访问控制条目(ACEs),每个条目指定一个用户、用户组或角色以及与其关联的安全审核设置。

SACL 的主要目的是启用安全审计功能,即记录对资源的访问和操作事件,以便管理员或安全审计员可以追踪和分析系统的安全情况。通过配置 SACL,可以指定哪些操作需要被审计,例如读取、写入、执行、删除等

当启用 SACL 并设置相应的安全审核设置时,系统会生成安全日志条目,记录与资源相关的访问和操作事件。这些安全日志可以用于监视和调查潜在的安全问题,了解系统中发生的活动,并满足合规性要求。需要注意的是,SACL 是一种高级的访问控制机制,通常在需要进行安全审计和监视的敏感资源上使用。

总结起来,SACL 是 Windows 操作系统中用于安全审计和监视的权限机制,用于记录对资源的访问和操作事件。它提供了一种机制,使管理员能够跟踪和分析系统的安全活动,并满足合规性要求。

如何查看ACL

ADSI编辑器

使用ADSI edit(adsiedit.msc)连接域后,可以看到某个域Object的acl,如下图。列表中的每一条即为ACE。代表以用户yokan为主体,描述哪些对象对yokan有什么样的权限。

连接方法:在域控中(普通域成员主机没有 ADSI 编辑器,本地安装域功能后会自带该工具,然后可以远程连接)执行 adsiedit.msc 打开 ADSI 编辑器,“操作” —> “连接”

image-20231206164603119

具体打开一条ace,看到域管组对用户yokan有一系列的权限:

image-20231206164812025

作为攻击者,我们对一些Active Directory对象权限和类型感兴趣:

  • GenericAll - 对对象拥有完全权限(添加用户到组或重置用户密码)
  • GenericWrite - 更新对象的属性(例如登录脚本)
  • WriteOwner - 将对象所有者更改为攻击者控制的用户,接管对象
  • WriteDACL - 修改对象的ACEs,并赋予攻击者对对象的完全控制权
  • AllExtendedRights - 能够将用户添加到组或重置密码
  • ForceChangePassword - 能够更改用户的密码
  • Self (Self-Membership) - 能够将自己添加到组中

Powerview

import-module .\powerview.ps1

Get-ObjectAcl -samAccountName yokan -ResolveGUIDs | ? {$_.ActiveDirectoryRights -eq "GenericAll"}

image-20231206174423939

访问控制列表(ACL)中的属性的解释:

PropagationFlags(传播标志):指定如何将访问权限传播到子对象。在这里,值为 "None" 表示权限不会传播到子对象。
InheritanceFlags(继承标志):指定是否允许对象的子对象继承访问权限。在这里,值为 "None" 表示不允许继承
ObjectType(对象类型):指定要应用访问权限的对象类型。在这里,值为 "All" 表示适用于所有对象类型。
AccessControlType(访问控制类型):指定访问权限的类型,是允许还是拒绝。在这里,值为 "Allow" 表示允许访问。
ObjectSID(对象安全标识符):指定对象的安全标识符(SID),用于唯一标识对象。
InheritedObjectType(继承的对象类型):指定继承访问权限的对象类型。在这里,值为 "All" 表示适用于所有继承对象。
IsInherited(是否继承):指示访问权限是否是继承自父对象的。
ObjectDN(对象的目录名称):指定对象在目录中的名称。
IdentityReference(标识引用):指定具有访问权限的用户或用户组的标识引用。
ObjectFlags(对象标志):指定对象的附加标志。
ActiveDirectoryRights(Active Directory 权限):指定访问权限的具体类型。在这里,值为 "GenericAll" 表示允许所有通用操作。
InheritanceType(继承类型):指定如何继承访问权限。在这里,值为 "None" 表示没有继承。

比如下图,表示YOKAN\Domain Adminis对yokan用户的所有对象具有GenericAll权限。

image-20231206175931774

Active Directory Module

安装:

import-module ActiveDirectory

使用:

(Get-Acl -Path "AD:CN=yokan,CN=Users,DC=yokan,DC=com").access

image-20231206170221232

dsacls

  • File Path: C:\Windows\system32\dsacls.exe
  • Description: DS Control ACLs Program

dsacls.exe结果比较简单,只能查询基础ACL,如GenericAll、WriteDAcl等,但胜在能远程查询,其他工具需要在域的上下文中使用:

dsacls "CN=yokan,CN=Users,DC=yokan,DC=com"

dsacls.exe "\\10.0.0.50\CN=yokan,CN=Users,DC=yokan,DC=com"

image-20231206175754900

不安全的ACEs

作为攻击者,我们对一些Active Directory对象权限和类型感兴趣

需要重点关注的ACE如下:

GenericAll:完全控制对象,包括更改密码、注册SPN、添加AD对象到目标组里面
 
GenericWrite:更新对象的属性(例如登录脚本)
 
WriteOwner:更新目标对象的所有者,可以更改为攻击者控制的用户,接管对象
 
WriteDACL:更新对面的DACL,将ACL写入对面实体,直接授予我们的账户对对象的完全控制权
 
AllExtendedRights:能够对目标对象执行与扩展 AD 权限相关的任何操作。例如,能够将用户添加到组或重置密码。

ForceChangePassword:强制改变当下的密码
 
AddMembers:可以对目标组添加用户(包括自己的账户)

Self (Self-Membership): 能够将自己添加到组中

这些权限可以帮助我们进行一定程度的提权,但一般我们选择对目标破坏性最小的一些方案。

具体利用

https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/acl-persistence-abuse

https://mp.weixin.qq.com/s/r_bwyX2qj5VSqf3mVrnqGg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1302833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【EMNLP 2023】面向Stable Diffusion的自动Prompt工程算法

近日,阿里云人工智能平台PAI与华南理工大学朱金辉教授团队合作在自然语言处理顶级会议EMNLP2023上发表了BeautifulPrompt的深度生成模型,可以从简单的图片描述中生成高质量的提示词,从而使文生图模型能够生成更美观的图像。BeautifulPrompt通…

1、混合方式UI设计

1、混合方式UI设计 新建项目添加静态资源添加资源添加action添加菜单菜单栏工具栏中间编辑区域 代码添加其他组件字体和大小状态栏 添加槽函数UI设置的转到槽的手写的设置应用程序图标 代码 新建项目 MainWindow代码文件夹主窗口为 (QMainWindow) 添加静态资源 AppIcon.icoi…

【MATLAB】基于CEEMDAN分解的信号去噪算法(基础版)

代码的使用说明 【MATLAB】基于CEEMDAN分解的信号去噪算法(基础版) 代码流程图 代码效果图 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复CEEMDAN去噪 本公众号致力于解决找代码难,…

【C++】POCO学习总结(十二):流(文本编解码、数据压缩、文件读写流等)

【C】郭老二博文之:C目录 1、说明 POCO提供了多种流类,与标准c IOStreams兼容。 大多数POCO流类被实现为过滤器,这意味着它们不写入或读取设备,而是从它们连接的另一个流。 2、文本编解码 2.1 说明 POCO提供了用于编码和解码…

苹果文本动态高亮,滚动时候部分高亮不显示问题

很简单的需求: 一个文本容器固定大小,内容超出滚动,然后文本点击高亮,奇怪就是苹果微信打开会出现点击只会高亮能看见的区域文本,滚动部分不会显示,默认浏览器打开也不行,安卓没问题&#xff0…

10.RIP路由信息协议

10.RIP 网段经常产生变化的话,建议使用动态路由协议,当网段发生变化的时候会自动通告给其他路由器 它不看链路的带宽,只看链路中的跳数,只要是跳数多的,不管带宽有多大,它就认为是不好的 RIP跳数有限 …

外包干了3个月,技术退步明显。。。

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

第三节、项目支付功能实战-微信支付平台接入流程,小程序账号注册、商户注册

简介 本篇介绍小程序的注册流程、商户平台的注册流程、以及小程序和商户平台如何进行绑定。 微信小程序注册 由于项目中使用了小程序进行支付,所以首先来注册小程序。小程序注册网站如下:小程序注册地址 小程序账号注册 1、链接页面点击“前往注册”…

事务的四个特性、四个隔离级别以及数据库的常用锁

事务的四个特性、四个隔离级别以及数据库的常用锁 四大特性 事务的四大特性,通常被称为ACID特性,是数据库管理系统(DBMS)确保事务处理的关键属性。这四大特性分别是: 原子性(Atomicity)&#x…

银河麒麟v10系统SSH远程管理及切换root用户的操作方法

📚📚 🏅我是默,一个在CSDN分享笔记的博主。📚📚 ​​ 🌟在这里,我要推荐给大家我的专栏《Linux》。🎯🎯 🚀无论你是编程小白,还是有一…

Python基础期末复习 新手 2

虽然age 10在__init__方法中定义了一个局部变量age,但这个局部变量并不会影响类属性age的值。类属性是在类级别上定义的,不属于任何一个实例。因此,在创建实例s1和s2时,它们的age属性值都为类属性的初始值0。 尽管对类的属性值进…

1.鸿蒙应用程序开发app_hap开发环境搭建

1.下载Node.js, Javascipts的运行环境 node.js版本下载v12.18.3/https://www.cnblogs.com/txwtech/p/17865780.html 2.下载并安装DevEco Studio DevEco Studio 3.1 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发,提供了代码智能编辑、低代…

coding创建远程分支。并拉取远程新分支+推送代码

进入coding ----项目----代码仓库---点击 下拉之后查看全部----创建分支 创建分支之后执行下面命令 git branch -a // 查看所有分支 这个时候发现自己创建的分支没有显示这是因为自己在远程创建了分支但是本地还没有分支 执行 git fetch命令 用于从远程仓库获取最新的提交…

day33-37-SpringBootV12(整合Spring,SpringMVC,Mybatis,日志,api测试等框架)

ssm spring --> applicationContext.xml配置文件 springmvc --> springmvc.xml配置文件 mybatis —> mybatis-config.xml配置文件 —> springboot优化了之前的框架配置,思想是约定大于配置 一、引言 1.1 初始化配置 为了使用SSM框架去开发,准备SSM…

SpringBootWeb请求响应之前言及状态码的详细解析

SpringBootWeb请求响应 前言 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求…

孩子还是有一颗网安梦——Bandit通关教程:Level0

🕵️‍♂️ 专栏《解密游戏-Bandit》 🌐 游戏官网: Bandit游戏 🎮 游戏简介: Bandit游戏专为网络安全初学者设计,通过一系列级别挑战玩家,从Level0开始,逐步学习基础命令行和安全概念…

JAVA定时任务技术总结

在日常的项目开发中,多多少少都会涉及到一些定时任务的需求。例如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表,定时去扫描某个表的异常信息(最终一致性的方案也可能涉及&a…

五.单行函数

单行函数 1.函数的理解1.1什么是函数1.2不同DBMS函数的差异1.3MySQL的内置函数分类 2.数值函数2.1基本函数2.2角度与弧度互换函数2.3三角函数2.4指数与对数2.5进制间的转换 3.字符串函数4.日期和时间函数4.1获取日期、时间4.2日期与时间戳的转换4.3获取月份、星期、星期数、天数…

CentOS上配置和管理HTTP服务器的工具和实用程序

在CentOS系统上,有多个工具和实用程序可以帮助你配置和管理HTTP服务器。以下是一些常用的工具和实用程序: Apache HTTP服务器: Apache是CentOS上最常用的HTTP服务器之一。它是一个开源的Web服务器软件,具有高度的可配置性和可扩…

西工大网络空间安全学院计算机系统基础实验二(phase_2上——死寂的长夜)

自从西工大网络空间安全学院计算机系统基础实验二(清楚实验框架及phase_1)-CSDN博客这篇文章之后,我们获取了phase_1的答案字符串,如 图1:phase_1的答案字符串 所示,注意每个人的答案字符串可能都不一样。接…