内网渗透-AD域基础知识

简介

内网也指局域网,是一个封闭的网络空间

内网渗透(intranet exploitation)是对目标服务器getshell后,通过一系列技术手段对其所处的内网环境进行渗透,最终获取内网其他主机的权限的过程,这些通常涉及以下技术:

  • 内网信息收集
  • 内网代理
  • 权限提升
  • 横向移动
  • ......

基本概念

工作组(work group)

分辨:在命令提示符界面执行systeminfo,回显结果的“域”信息为WORKGROUP

简单来说,就是将不同的计算机按照功能或部门分别置于不同的组,适用于网络中计算机不多、资产规模较小、对安全管理控制要求不严格的情况,这是一种松散的资源管理模式,任何人都可以在局域网中创建新的工作任务而无需管理员同意,换言之,处于同一工作组中的主机彼此间地位平等,不存在额外关联或管理关系,对于此类情况,在内网渗透时需要逐个渗透与控制

在局域网内,计算机默认都是按照工作组的方式进行资源管理的

  • 优点:
    • 方便管理和维护
    • 资源分配方便和灵活
  • 缺点:
    • 缺乏集中管理与控制的机制
    • 没有集中的统一账户管理
    • 只适合小规模用户的使用

域(domain)

分辨:在命令提示符界面执行systeminfo,回显结果的“域”信息为类似域名格式,由“.”连接的字符串

当组织中网络规模越来越大时,需要统一的管理和集中的身份验证,并能为用户提供更加方便地的网络资源搜索和使用方式时,就需要放弃工作组而使用域

域是一种比工作组更高级的的计算机资源管理模式,在域环境中,所有用户账户、用户组、计算机、打印机和其他安全主体都在一个或多个域控制器的中央数据库中注册;当域用户想访问域中的资源时,必须通过域控制器集中进行身份验证,通过身份验证的域用户在域中的身份决定了域用户对域中资源的访问权限

在域环境中,域管理员用户在域中具有最高访问权限和最高管理权限,在渗透过程中,获取域管理员相关权限往往可以控制整个域控

  • 单域

    指网络环境中只有一个域

  • 父域和子域

    某些情况下,需要在一个域中分出多个域,被划分的域称为父域,划分出来的域被称为子域,每个子域都拥有自己的安全策略,在有信任的情况下,父域可以访问子域

    从域名上看,子域是域名中的一个段,用“.”进行域名分割,一个“.”代表域名的一个层级

  • 域树

    域树是多个域通过建立信任关系组成的一个域集合

    在域树中,所有的域共享同一表结构和配置,所有域名形成一个连续的名字空间,该命名空间具有连续性,域名层次越深,级别越低

    在域树中,域管理员只能管理本域,不能访问或管理其他域,如果两个域之间要互相访问,就需要建立信任关系(trust relation)

  • 域林

    指由一个或多个没有形成连续名字空间的域树通过建立信任关系组成的域树集合,域林中所有域树共享同一个表结构、配置和全局目录

域控制器

域控制器(Domain Controller,DC)简称域控,是域环境核心的服务器计算机,用于在域中响应安全身份认证请求,负责允许或拒绝发出请求的主机访问域内资源,以及对用户进行身份验证、存储用户账户信息并执行域的安全策略等,域控包含一个活动目录数据库,其中存储着整个域的账户、密码、计算机等信息,而前面提到的身份验证便主要有以下步骤:

  • 该计算机是否属于本域
  • 登录账号是否存在
  • 密码是否正确

一个域环境可以拥有一台或多台域控制器,每台域控都各自存储了一份所在域的活动目录AD的可写副本,对AD的修改都可以从源域控同步复制到域、域树或域林的其他控制器上,这样即使其中一台域控瘫痪,另一台域控也可以继续工作,保证域环境正常运行

一般情况下,DC也会被作为DNS服务器使用

域环境搭建

主机准备

我准备了三台主机

  • windows server 2019 datacenter
  • windows 10 pro x64
  • windows 10 pro x64

配置域控

配置静态IP

打开控制面板中的网络设置,将IP配置为静态的192.168.111.100

image-20240819184211060

更改主机名

在windows server 2019 datacenter,win+r打开sysdm.cpl,更改主机名为DC01,然后重启保存设置,并以administrator账户登录

设置管理员密码

给administrator设置一个密码,否则在创建域的检查时过不去,这里我设置为Admin123456

安装域服务

在服务器管理器中,选择添加角色和功能,一直下一步到服务器角色步骤时勾选AD域服务:

image-20240819181738060

然后一直下一步到确认栏目,勾选“如果需要,自动重启目标服务器”

然后点击安装

完毕后选择右上角有一个部署后配置的将此服务器提升为域控制器

image-20240819182433553

点击后选择添加新林,根域名设置为yuy0ung.com

image-20240819182940876

然后下一步键入密码依然为Admin123456

一直下一步至其他选项,主机会自动生成NetBIOS域名即YUY0UNG

下一步至先决条件检查(这里就会检查administrator是否设置密码)

image-20240819184605479

通过后即可安装,安装完成会自动重启

image-20240819185840591

重启后可以发现,登陆时已经是域账户了

登陆后可见域服务已安装:

image-20240819192849228

至此,域控配置已完成

添加域成员主机

现将DC的防火墙关一下

image-20240819193452491

接下来添加第一台域成员主机

将该主机DNS服务器指向域控:
image-20240819193708524

然后配置主机名和隶属的域:

image-20240819193925468

然后输入域管理员账号密码确认更改:

image-20240819194104591

ok成功:

image-20240819194128081

完毕后重启确认更改

另一台主机同理

检查配置

回到DC,可在DNS管理器上看见另外两台域成员主机

image-20240820004459027

活动目录Active Directory

活动目录介绍

活动目录(Active Directory,AD)是常见的实现域的方法,活动目录指安装在域控上,为整个环境提供集中式目录管理服务的组件

AD存储了有关域环境中各种对象的信息,比如域、用户、用户组、计算机、组织单位、共享资源、安全策略等,目录数据存储在域控的Ntsd.dit文件中

在AD中,一个域中的基本对象有以下几种:

  • DC,域控:存储网域所属的网域控制站
  • computer,域成员主机:加入网域的计算机对象
  • builtin,内置账户组群:规定了各类账户的权限
  • user,当前存在域中的用户:存储AD中的用户对象

如图,我们可以对域内的活动目录进行管理:
image-20240821231247688

活动目录主要提供了以下功能:

  • 计算机集中管理

    集中管理域内所有服务器及客户端计算机,统一下发组策略

  • 用户集中管理

    集中管理域用户、组织通讯录、用户组,对用户进行统一的身份认证、资源授权

  • 资源集中管理

    集中管理域中的打印机、文件共享服务等网络资源

  • 环境集中管理

    集中的配置域中计算机的工作环境,比如统一计算机桌面、统一网络连接配置、统一计算机安全配置等

  • 应用集中管理

    对域中计算机统一推送软件、安全补丁、防病毒系统、安装网络打印机等

Ntds.dit文件

这是域环境中域控保存的一个二进制文件,是主要的活动目录数据库,通常存储在域控的%SystemRoot%\NTDS目录下,该文件中包括但不限于有关域用户、用户密码的哈希、用户组、组成员身份、组策略的信息;Ntds.dit文件使用存储在系统SYSTEM文件的密钥对这些哈希进行加密

在非域环境(及工作组环境)中,用户的登录凭据等信息存储在本地SAM文件中

组织单位Organizational Unit介绍

组织单位(OU)是域中包含的一类目录对象如用户、计算机和组、文件与打印机等资源,是一个容器,可以在OU上部署组策略

我们活动目录中的Domain Controllers就是一个OU:
image-20240822195433370

组织单位是域中包含的一类目录对象如用户、计算机和组、文件与打印机等资源。组织单位还具有分层结构可用来建立域的分层结构模型,进而可使用户把网络所需的域的数量减至最小

举个例子,假设一个公司有下表的人员安排需求:

部门 人数
财务 20
人事 10
IT 100
网络管理 3

我们可以通过在域控上创建组织单位进行操作:

  • 这里新建组织单位

    image-20240821235325455

    比如创建人事部门:

    image-20240821235519257

    创建好之后,可以在该组织单位中新建用户:

    image-20240821235707480

    同理,我们便可以按照公司需求配置好相应的组织单位,并且可以对各个组织单位的用户进行统一管理

委派控制

依然以上面公司的需求为例,因为公司有100+个人,不能有问题就去找网络管理员,需要委派控制权限给每个部门一个代表,他由相应的权限去自己部门的计算机和用户(可以理解为课代表这种介于老师和学生之间的位置)

这里以人事部门为例,尝试将人事部门的控制权委派给用户煜阳:

  • 右键人事部门选择委派控制:

    image-20240822001613662

  • 添加委派的用户(或组),这里选择用户煜阳

    image-20240822001805654

  • 选择给煜阳委派的任务:

    image-20240822001913007

  • 至此,完成了对人事部门的委派控制

目录服务与LDAP

AD是微软对通用目录服务数据库的实现,而LDAP协议就是用来访问目录服务数据库的协议之一,我之前也介绍过LDAP协议的一些细节:windows协议之LDAP

LDAP基于X.500标准,是一个开放的、中立的、工业标准的应用协议。它可以用来检查与更新活动目录数据库,而利用LDAP名称路径可以描述对象在活动目录中的位置。LDAP目录类似于文件系统目录,比如下图,我们搭建的域中的DC01:

image-20240822194443084

可以描述为CN=DC01,OU=Domain Controllers,DC=yuy0ung,DC=com,类比成文件系统目录可以视作yuy0ung.com/Domain Controllers/DC01,路径的含义为DC01对象处于yuy0ung.com域的Domain Controllers组织单位中,在LDAP中,数据以树状方式组织,树状信息中的基本数据单元是条目,而每个条目由属性组成,同样以我们搭建的域的活动目录为例,有如下树状结构:

image-20240822210545330

这里提几个概念铺垫一下接下来的X.500标准定义:

  • 目录树:在一个目录数据库中,整个目录中的信息集可以表示为一个目录信息树,树中的每一个节点是一个条目
  • 条目:目录数据库中,每一个条目就是一条记录,每个条目有自己的唯一绝对可辨识名称DN,上图的一个方框即为一条记录
  • 属性:用于描述数据库中每个条目的具体信息

活动目录的访问

使用微软官方提供的AD Explorer连接DC来访问活动目录:AD 资源管理器 - Sysinternals | Microsoft Learn,可以方便地浏览活动目录数据库,自定义快速入口、查看对象属性、编辑权限、进行精确搜寻等:
image-20240822234502543

X.500标准定义

X.500标准中定义了一些名称空间:

DC

DC(Domain Component,域组件),类似于DNS中的每个元素,DC对象表示用DNS来定义其名称空间的LDAP树的顶部。例如yuy0ung.com,用.分开的每个单元都可以看成一个域组件

OU

即组织单位,上面已经系统介绍了组织单位了,OU类最多可以有四级,每级最长32个字符,可以为中文,组织单位中包含对象、容器,还可以包含其他组织单位,组织单位还可以链接组策略

CN

CN(Common Name,通用名称)是对象的名称,最大长度为80个字符,可以为中文

DN

活动目录中每个对象都有完全唯一的DN(Distinguished Name,可辨识名称),包含了对象到LDAP名称空间根的整个路径。DN有三个属性DC、OU、CN。DN可以表示为LDAP的某个路径,也可以表示为目录中的某个对象,该对象可以是用户、计算机等,例如我们搭建的域的域控DC01的DN:CN=DC01,OU=Domain Controllers,DC=yuy0ung,DC=com,或administrator用户:CN=Administrator,CN=Users,DC=yuy0ung,DC=com,我们使用AD Explorer都能查看:

image-20240822234651450

RDN

RDN(Relative Distinguished Name,相对可辨识名称)与目录结构无关,类似于相对路径,比如CN=Administrator,CN=Users,DC=yuy0ung,DC=com的RDN为CN=Administrator,两个对象可以具有相同的RDN,但不能具有相同的DN

UPN

UPN(User Principal Name用户主体名称)是用户的可辨识名称,在域内是唯一的。例如yuy0ung.com域中的songxue用户,他的UPN为songxue@yuy0ung.com,格式类似于电子邮箱。用户登录时所输入的账户名最好是 UPN,因为在林中,无论此用户的账户被移动到哪一个域,其 UPN 都不会改变,因此用户可以一直使用同一个名称来登录

image-20240823000654139

Container

在活动目录数据中定义了Container(容器)类。容器是一些属性的集合,容器内可以包含其他对象,如用户、计算机等,但是容器中不能再嵌套其他容器和OU

计算机默认在CN=Computers容器中,用户默认在CN=Users容器中,如下图可以看到CN=Computers的objectClass属性为container:

image-20240823001924159

FQDN

顺带说一下FQDN (Fully Qualified Domain Name,全限定域名)是同时带有主机名和域名的名称例如DC01.yuy0ung.com,也可以理解为是主机名的一种完全表达形式

活动目录分区

微软将活动目录划分为多个分区便于进行复制和管理。每个逻辑分区在域林中的域控之间分别复制、更改,这些分区被称为上下文命名(NC,Naming Context)

活动目录预定义了域分区、配置分区、架构分区

域分区

域分区用于存储与该域有关的对象信息,这些信息是特定于该域的,如该域中的计算机、用户、组织单位等信息。域林中,每个域的域控各自拥有一份属于自己的域分区,只会被复制到本域的所有域控中

例如这里,DC=yuy0ung,DC=com就是yuy0ung.com域的域分区:

image-20240825010700547

可见域分区主要包含以下内容:

  • CN=Builtin:内置了域本地组的安全组的容器
  • CN=Computers:机器用户容器,其中包含所有加入域的主机
  • OU=Domain Controllers:域控制器的容器,其中包含域中所有的域控制器
  • CN=ForeignSecurityPrincipals:包含域中所有来自域的林外部域的组中的成员
  • CN=Managed Service Accounts:托管服务账户的容器
  • CN=System:各种预配置对象的容器,包含信任对象、DNS对象和组策略对象
  • CN=Users:用户和组对象的默认容器
配置分区

配置分区(configuration NC)存储整个域林的主要配置信息,包括有关站点、服务、分区、和整个活动目录结构的信息

和域分区一样,整个域林共享一份相同的配置分区,会被复制到域林中所有的域控上

如图,在我们搭建的域中,CN=Configuration,DC=yuy0ung,DC=com就是配置分区:

image-20240828183757414

架构分区

架构分区(Schema NC)存储整个域林的架构信息,包括活动目录中所有的类、对象和属性的定义数据。同样,整个域林共享一份相同的架构分区,会被复制到域林中所有的域控上

如图,CN=Schema,CN=Configuration,DC=yuy0ung,DC=com就是架构分区:

image-20240828184113509

活动目录的所有类(类可以看作是一组属性的集合)都存在架构分区中,是架构分区的一个条目,条目具有的属性是由其所属的类决定的

架构分区是具有Class-Schema、Attribute-Schema和subSchema对象的单个容器。活动目录数据库中所有类都是Class-Schema的实例,所有属性都是Attribute-Schema的实例,即架构分区定义了AD中使用的所有类和属性

另外,在LDAP中,类是具有继承关系的,与开发中的面向对象一样。子类可以继承父类的所有属性,而top类是所有类的父类,且活动目录中每个条目都有objectClass属性,该属性的值指向该示例对象所继承的所有类

活动目录中的类有三种类型:

  • 结构类(structural):规定了对象实例的基本属性,每个条目属于且仅属于一个结构对象类。域内每个条目都是类的实例,这个类必须是结构类,结构类是唯一可以在目录中有实例的类,可以继承于抽象类或者其他结构类,可以在结构类定义中包含任意数量的辅助类
  • 抽象类(Abstract):是用于继承新结构类的模板,抽象类没有实例,只能充当结构类或者抽象类的父类。与面向对象中的抽象方法一样比如top类
  • 辅助类(Auxiliary):辅助类包含一个属性列表,在结构类户或抽象类的定义中添加一个辅助类会将辅助类属性添加到实例中。辅助类不能实例化但是可以从现有的辅助类或抽象类中继承。辅助类规定了对象实体的扩展属性,虽然每个条目只属于一个结构对象类,但是可以同时属于多个辅助对象类

另外还有个88类,不属于上述任何类别,可以用作抽象类、结构类或辅助类,其下的类可以继承自所有类

应用程序分区

应用程序分区(Application NC)是微软从windows server 2003开始引入的,它允许用户自定义分区来扩展目录分区。它提供了复制控制范围的能力,并允许以更适合动态数据的方式防止副本。值得注意的是,应用程序分区会被复制到林中特定的域控上而不是所有域控

如图 ,DC=DomainDnsZones,DC=yuy0ung,DC=comDC=ForestDnsZones,DC=yuy0ung,DC=com就是应用程序分区:

image-20240828211241601

应用程序分区有以下特点:

  • 如果用户想要定义一个分区,可以使用应用程序分区
  • 应用程序分区可以存储动态对象。动态对象是具有生存时间(TTL)值的对象,TTL值可以确定他们在被活动目录自动删除之前将存在多长时间

域内账户

本地账户

本地账户(Local Account)存储在本地的服务器上,这些账户可以在本地服务器上分配权限但仅限该服务器。默认的本地账户是内置账户(如Administrator、Guest等),在安装windows时自动创建且无法删除。默认的本地账户不提供对网络资源的访问,根据分配给该账户的权限来管理对本地服务器资源的访问本地账户均位于“用户”文件夹

administrator

windows安装过程中创建的第一个账户就是administrator账户,SID为S-1-5-21-XX-500,是默认的本地管理员账户,在本地管理员组administrators中,该账户可以完全控制服务器,并根据需要向用户分配用户权限和访问控制权限,每台计算机都有该账户,不能删除或锁定默认的Administrator账户,但可以重命名或禁用他(即使重命名administrator也不会改变其SID)

高版本的windows默认禁用了administrator,创建了作为administrators成员的另一个本地账户,可以运行具有提升权限的应用程序而不是使用”运行为管理员“选项

guest

该账户同样会在windows安装过程创建,SID为S-1-5-21-XX-501,但该账户默认禁用。guest账户允许在计算机上没有账户的临时用户登陆本地服务器或客户端主机,默认情况下该账户密码为空

defaultaccount

被称为默认系统管理账户DSMA,该账户是在windows 10版本1607和windows server 2016中引入的内置账户,DSMA是一个用户中立的账户,可以用于运行多用户感知或与用户无关的进程。DSMA在桌面SKU和windows server 2016中默认被禁用

DSMA有个著名的RID为503,所以他的SID格式:S-1-5-21-XX-503,DSMA是System Managed Account Group组的成员,该组拥有的SID为SID-1-5-32-581

image-20240830224557592

WDAGUtilityAccount

该账户是windows系统为windows defender应用程序防护方案管理和使用的用户账户,是在win10 1709和win server 2019中引入的内置账户。除非在设备上启用了应用程序防护,否则默认保持禁用,它同样有个著名RID:504,所以SID格式:S-1-5-21-XX-504

image-20240830225010364

活动目录账户

即活动目录中的账户,存储在活动目录数据库中,分为用户账户、服务账户、机器账户,三者关系如下:

image-20240831133043101

区分服务账户就是看其是否注册了SPN,区分机器账户就是看objectcategory属性是否为computer

用户账户

就是域内用户的账户,存储在活动目录数据库(Ntds.dit文件)中。域内所有用户账户均在域全局组Domain Users内

  • 域控上的本地账户

    服务器升级成DC后,本地普通账户将变成域普通账户,在活动目录中有对应的账户,存储在Users容器中,而本地管理员组administrators中的用户将升级为域管理员组Domain Admins内的用户,默认本地管理员administrator将升级为域默认管理员administrator,并需要设置符合强度的密码,此后这些账户均具有域范围的访问权限,访问时加上域前缀即可

  • Administrator账户

    是AD中administrators、Domain Admins、Enterprise Admins、组策略创建者、Schema Admin Groups的默认成员,SID为S-1-5-[domain]-500

  • Guest账户

    该账户不需要密码,默认禁用,SID为S-1-5-[domain]-501

  • krbtgt账户

    是一个本地默认账户,为密钥发行中心(KDC)服务账户,RID为502,SID为S-1-5-[domain]-502

    在我前面kerberos的介绍文章中提到过:windows协议之kerberos,该账户是krbtgt安全主体的实体,在kerberos身份认证的AS-REP步骤中,KDC返回的TGT是由krbtgt的用户hash加密的,而krbtgt账户的hash只有KDC知道,该账户无法删除或改名

服务账户

是显式创建的用户账户,旨在为在windows服务器操作系统上运行的服务提供安全上下文

默认情况下,域中每个机器有SPN,并且其服务账户就是其机器账户

用户账户可以是服务账户,机器账户也可以是服务账户,他们是否属于服务账户取决于该账户是否在域内注册了SPN

机器账户

不能用于登录,可以代表一个物理实体比如域内机器

在域内,机器账户域与域用户一样也是域内成员,在域内的用户名是机器账户名+$,比如win10机器账户为Win10$,这个值可以在机器账户的samAccountName属性中看到,它在本地的用户名是System

机器加入域后,会将机器账户的密码同步到域控并保存在域控的Ntds.dit中,由于机器账户的密码是系统随机生成的,强度是120个字符,且会定时更新,因此即使获得了机器账户密码hash,也几乎无法还原出机器账户的明文口令

域内权限划分

组(Group)是用户账号的集合。分为通讯组和安全组

通讯组就是一个通信群组,向一个通讯组发消息可以让组内所有用户都接收消息

安全组是用户权限的集合,通过向组分配权限,就可以不必向每个用户分别分配权限。例如,管理员在日常工作中,不必为单个用户账号设置独特的访问权限,只需要将用户账放到相应的安全组中。管理员通过配置安全组访问权限,就可以为所有加入安全组的用户账号配置同样的权限。使用安全组而不是单个的用户账号,可以大大简化网络的维护和管理工作

安全组可以分为域本地组、全局组、通用组

域本地组

域本地组成员来自林中任何域中的用户账户、全局组和通用组以及本域中的域本地组,在本域范围内可用(来自全林,作用于本域;)

重要的域本地组:

  • 管理员组( Administrators)的成员可以不受限制地存取计算机/域的资源。它不仅是最具权力的一个组,也是在活动目录和域控制器中默认具有管理员权限组。该组的成员可以更改 Enterprise Admins、 Schema admins和 Domain admins组的成员关系,是域森林中强大的服务管理组

  • 远程登录组( Remote Desktop Users)的成员具有远程登录权限

  • 打印机操作员组( Print Operators)的成员可以管理网络打印机,包括建立、管理及删除网络打印机,并可以在本地登录和关闭域控制器

  • 账号操作员组( Account Operators)的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录域控制器,但是,不能更改属于 Administrators或 Domain admins组 的账户,也不能修改这些组。在默认情况下,该组中没有成员

  • 服务器操作员组( Server Operators)的成员可以管理域服务器,其权限包括建立管理删除 任意服务器的共享目录、管理网络打印机、备份任何服务器的文件、格式化服务器硬盘 锁定服务器、变更服务器的系统时间、关闭域控制器等。在默认情况下,该组中没有成员

  • 备份操作员组( Backup Operators)的成员可以在域控制器中执行备份和还原操作,并可以在本地登录和关闭域控制器。在默认情况下,该组中没有成员

全局组

全局组成员来自于同一域的用户账户和全局组,在林范围内可用(来自本域,作用于全林;)

通用组

通用组成员来自林中任何域中的用户账户、全局组和其他的通用组,在全林范围内可用(来自全林,作用于全林)但几乎很少使用

举例

来个权限配置案例:

有三个域hack.com(在北京),sh.hack.com(在上海),gz.hack.com(在广州)组成域树,然后北京财务部门,需要进行结算,但是数据在北京的一台服务器上权限比较高只有北京财务人员可以使用,同时因为北京人数不够,需要上海和广州支援,如何分配权限?

  • 只需要在北京的建立一个域本地组,然后赋予域本地组权限可以访问财务的数据机器

  • 在上海和广州分别建立全局组

  • 在北京的域控上将上海和广州的全局组加入进来

如图:

image-20240822005703913

如此,即可很方便的进行权限分配与控制,而这里就运用到了经典的A-G-DL-P策略

A-G-DL-P策略

A-G-DL-P策略是指将用户账号添加到全局组中,将全局组添加到域本地组中,然后为域本地组分配资源权限

  • A表示用户账号( Account )

  • G表示全局组( Global Group )

  • U表示通用组( Universal Group )

  • DL表示域本地组( Domain Local Group )

  • P表示资源权限( Permission,许可 )

按照AG-DL-P策略对用户进行组织和管理是非常容易的。在AGDL-P策略形成以后,当需要给一个用户添加某个权限时,只要把这个用户添加到某个本地域组中就可以了

实际上,域管理员权限的配置也使用了A-G-DL-P策略:用户 -- Domain Admin -- administrator -- 域管理权限

访问控制

指windows操作系统使用内置授权和访问控制技术,确定经过身份验证的用户对象是否具有访问资源的正确权限,以控制主体(principal)操作(读取、写入、删除、更改等)对象(object)的行为是否具有合法权限

访问主体通常指安全主体,是任何可以通过操作系统进行身份验证的实体,,如用户账户、计算机账户、在用户或计算机账户的安全上下文中运行的线程或进程,以及这些账户的安全组等

被访问的对象通常指安全对象,可能是文件、文件夹、打印机、注册表项、共享服务、ADDS对象等

当经过身份验证的安全主体想访问安全对象时,windows会为安全主体创建一个访问令牌(access token),其中包含了验证过程返回的SID(安全标识符)和本地安全策略分配给用户的用户安全列表;当安全对象被创建时,windows会为其创建一个安全描述符(security descriptor)

windows的访问控制正是安全主体的访问令牌中的信息与安全对象的安全描述符中的访问控制项进行比较做出访问决策的

windows访问控制模型

Accsess Control Model,是windows系统安全性的基础构件,主要由访问令牌和安全描述符构成,分别由访问者和被访问者持有。通过比较访问令牌和安全描述符的内容,windows可以判断访问者是否有访问对象的能力

访问令牌

用户登陆时进行身份验证,通过后windows为用户创建访问令牌,此后代表该用户执行的每个进程都有此访问令牌的副本,每当线程或进程与安全对象交互或尝试执行需要特权的系统任务,windows都会使用此访问令牌标识并确定关联的用户

访问令牌包含的信息如下:

image-20240902173316174
安全描述符

一种与每个安全对象相关联的数据结构,包含与安全对象相关联的安全信息比如谁拥有对象、谁可以访问对象、以何种方式访问、审查哪些类型的访问信息等

主要由SID和ACL访问控制列表组成,SID用来标识用户账户和该用户所属的组,ACL分为DACL和SACL两种

访问控制列表

即访问控制项的列表,列表中每一个访问控制项制定了一系列访问权限

在访问控制的过程中,ACL有两个作用:

  • 进行访问权限控制,判断安全主体能不能访问该安全对象
  • 日志记录,对用户访问成功与否进行记录

所以安全对象的安全描述可以通过访问两种访问控制列表DACL和SACL进行

DACL

自主访问控制列表,是安全对象的访问控制策略,用于指定允许或拒绝特定安全主体对该安全对象的访问。DACL由一条条的访问控制项(ACE)条目构成,每条ACE通过包含SID定义了哪些用户或组对该对象拥有怎样的访问权限

SACL

系统访问控制列表,是安全主体对安全对象访问行为的审计策略,也由一条条的访问控制项(ACE)条目构成,每条ACE定义了对哪些安全主体的哪些访问行为进行记录,安全主体的访问行为满足这条ACE时就会被记录

组策略

group policy,是windows环境下管理账户的一种手段,可以控制用户账户和计算机账户的工作环境。组策略可以集中化管理和配置操作系统、应用程序、活动目录中用户设置,功能很多:
image-20240904130333033

本地组策略适用于管理独立且非域环境的计算机。域环境的组策略适用于管理域环境的所有对象,包括用户和计算机,接下来重点记录域环境的组策略

组策略对象

Group Policy Object,GPO,即组策略设置的集合,其中包含应用于特定用户或计算机的策略信息和具体配置,设置组策略时,只需将组策略对象链接到指定的站点、域和组织单位,其中的策略值便会应用到该站点、域和组织单位的所有用户和计算机

GPO由组策略容器(Group Policy Container,GPC)和组策略模板(Group Policy Template,GPT)组成,分别存储在DC的不同位置上,GPC存储在活动目录的域分区,GPT存储在DC的文件夹中:%SYSTEMROOT%\SYSVOL\域名\Policies

win+R:gpmc.msc即可打开组策略管理器:
image-20240904135535384

这里可以看到两个默认组策略对象default domain controllers和default domain policy,它们在DC被建立时自动创建

组策略创建

我们在前面创建了组织单位:人事部门。现在创建一个新的组策略,并将其应用到“人事部门”,、

在组策略管理器中,右键组策略对象,点击新建,创建一个名为test的GPO

接下来链接GPO,右键人事部门选择”链接现有GPO“,在出现的框中选中新建的组策略test:

image-20240904152539796

确定即可链接成功

企业常规安全域划分

即基于安全考量的域范围划分

划分安全域的目的是将一组安全等级相同的计算机划入同一个网段,这个网段内的计算机拥有相同的网络边界,并在网络边界上通过部署防火墙来实现对其他安全域的网络访问控制策略 ,从而对允许哪些IP地址访问此域、允许此域访问哪些IP地址和网段进行设置。这些措施,将使得网络风险最小化,当攻击发生时,可以尽可能地将威胁隔离,从而降低对域内计算机的影响:

image-20240822143936759

一个由路由器连接的内网中,可以将网络按照安全级别从高到低划分为三个区域:

  • 内网(安全级别最高):分为核心区(存储企业最重要的数据,只有很少的主机能够访问)和生产/办公区(员工日常工作区,一般能够访问DMZ,部分主机可以访问核心区)
  • DMZ(Demilitarized Zone,边界网络,隔离区,安全级别中等):作为内网中安全系统和非安全系统之间的缓冲区,用于对外提供服务,一般可以放置一些必须公开的服务器设施
  • 外网(Internet,安全级别最低)

拥有DMZ的网络需要制定一些访问控制策略:

内网可以访问外网:内网用户需要自由地访问外网。在这一策略中,防火墙需要执行NAT
内网可以访问DMZ:此策略使内网用户可以使用或者管理DMZ中的服务器
外网不能访问内网:这是防火墙的基本策略。内网中存储的是公司内部数据,显然,这些数据一般是不允许外网用户访问的(如果要访问,就要通过VPN的方式来进行)
外网可以访问DMZ:因为DMZ中的服务器需要为外界提供服务,所以外网必须可以访问DMZ。同时,需要由防火墙来完成从对外地址到服务器实际地址的转换
DMZ不能访问内网:如果不执行此策略,当攻击者攻陷DMZ时,内网将无法受到保护
DMZ不能访问外网:此策略也有例外。例如,在DMZ中放置了邮件服务器,就要允许访问外网,否则邮件服务器无法正常工作

通常情况下,各类目标网络的安全级别是"外部网络 < DMZ区 < 核心区、办公/生产区",而在内网渗透过程中,目标即为尽可能地获取最高级别网络中域环境的控制权,从而实现对业务的完全控制

  • 办公区:公司员工日常的工作区,一般会安装防病毒软件、主机入侵检测产品等。办公区一般能够访问DMZ。如果运维人员也在办公区,那么部分主机也能访问核心数据区(很多企业还会使用堡垒机来统一管理用户的登录行为)攻击者如果想进入内网,一般会使用鱼叉攻击、水坑攻击,当然还有社会工程学手段。办公区人员多而杂,变动也很频繁,在安全管理上可能存在诸多漏洞,是攻击者进人内网的重要途径之
  • 核心区:存储企业最重要的数据、文档等信息资产,通过日志记录、安全审计等安全措施进行严密的保护,往往只有很少的主机能够访问。从外部是绝难直接访问核心区的。一般来说,能够直接访问核心区的只有运维人员或者IT部门的主管,所以,攻击者会重点关注这些用户的信息(攻击者在内网中进行横向移动攻击时,会优先查找这些主机)

企业域中计算机分类

域中计算机的分类在域结构的网络中,计算机的身份是不平等的,有域控制器、成员服务器、客户机、独立服务器四种类型

域控制器

在前面的基本概念中也介绍了,域控制器用于管理所有的网络访问,包括登录服务器、访问共享目录和资源。域控制器中存储了域内所有的账户和策略信息,包括安全策略、用户身份验证信息和账户信息

在网络中,可以有多台计算机被配置为域控制器,以控制用户的登录、访问等操作。多个域控制器可以一起工作,自动备份用户账户和活动目录数据。这样,即使部分域控制器瘫痪,网络访问也不会受到影响,提高了网络的安全性和稳定性

成员服务器

一般是win server系统,成员服务器是指安装了服务器操作系统并加入了域,但没有安装活动目录的计算机,其主要任务是提供网络资源。成员服务器的类型通常有文件服务器、应用服务器、数据库服务器、web服务器、邮件服务器、防火墙、远程访问服务器、打印服务器等

客户机

一般是正常win系统,域中的计算机可以是安装了其他操作系统的计算机,用户利用这些计算机和域中的账户就可以登录域。这些计算机被称为域中的客户机。域用户账号通过域的安全验证后,即可访间网络中的各种资源。

独立服务器

独立服务器和域没有关系。如果服务器既不加入域,也不安装活动目录,就称其为独立服务器。独立服务器可以创建工作组、与网络中的其他计算机共享资源,但不能使用活动目录提供的任何服务

域控制器用于存放活动目录数据库,是域中必须要有的,而其他三种计算机则不是必须要有的,也就是说,最简单的域可以只包含一台计算机,即一台域控。当然,域中服务器角色是可变的,比如独立服务器既可以成为域控制器,也可以加入某域成为成员服务器

常规攻击流程的认知

接下来的内容用来简单了解一套完整的攻击流程包含哪些步骤

网络杀伤链

网络杀伤链(Cyber-Kill-Chain)由七个步骤组成:

  • 侦察:可以理解为信息收集获取攻击入口点
  • 武器化:根据漏洞或后门制作攻击武器,实现快速突破
  • 投递:将武器向目标投递,例如钓鱼邮件、web访问、USB外设等
  • 漏洞利用:当武器(恶意软件)触及到目标系统或终端时,会通过漏洞等方式,控制受害者的终端或业务系统服务器
  • 安装:恶意软件安装一个新的后门或新的木马程序,以提升入侵者的访问权限,能接触到更多系统
  • 命令与控制:通过前述各类攻击武器,攻击者可以进行命令控制操作,获得特权帐户的访问权限并尝试暴力攻击、搜索凭据并更改权限以接管控制权
  • 目标行动:当攻击者接触到既定攻击目标时,可以对其进行各种既定行动(如盗窃机密数据、破坏/加密数据进行勒索等)

基于此模型,可以实现对网络攻击分阶段防御,降低攻击伤害

但此模型存在不足:

  • 抽象程度较高,不同的攻方、守方针对 同一个攻击事件 ,也会给出不同的描述,缺乏统一的描述机制和原语支撑

  • 随着网络世界的复杂化,攻防不对称程度持续深化。针对同一个阶段,攻击方有无数种技术、方法可以使用,而防守方
    却无法清晰描述和知晓自身的安全防护能力的全景实况 ,难以持续提升攻防对抗能力

ATT&CK

ATT&CK(Common Knowledge base of Adversary Ta ctics and Techniques)是一个战术知识库,提供了一个复杂框架,很好的弥补了CKC的高层抽象、未知威胁(IOC)以及特征之间的落差,对攻击行为进行了分类和特征化,让攻击防御不局限于琐碎的观察点

该战术库进行了一定程度的分类和抽象,具备了一定的防御IOC的能力,从框架上可以看出其非常详细:

6b2c75d55db34087a142232d6ad8d36f

NTCTF

NTCTF(Technical Cyber Threat Framework)是一个基于ATT&CK重新构造的网络威胁入侵过程模型

该模型通过4个层次构建:

  • 阶段
  • 目标
  • 行为
  • 关键短语

并把入侵过程分为六个阶段:

  • 行动管理
  • 准备活动
  • 接触目标和进攻突防
  • 持久化驻留潜伏
  • 效果
  • 持续支撑作业

每个阶段都由目标、行为和关键短语来提供支撑,而其中行为的核心支撑点就来自ATT&CK战术知识库

posted @ 2024-09-04 15:43  Yuy0ung  阅读(104)  评论(0编辑  收藏  举报