# 前言

​ 为期两周的渗透测试专业实训结束了,刚好趁着这个机会把内网这块的知识学习梳理后记录一下,慢慢来吧任重道远。不过前面的服务安全的内容还没梳理完,穿插着写,希望思路不会太乱。

# 内网安全基础

​ 基础的边界说实话我个人感觉是非常模糊的,无法具体的定界哪些东西是属于基础的范畴。有些时候所谓的高级在理解后好像也是能算上是所谓的基础。这篇笔记更多是一些概念性的东西。

# 内网

内网也可以叫局域网(Local Area Network,LAN),是指在某一个区域内(方圆几千米以内)多台计算机互联的计算机组。 类似校园网,单位办公网,网吧等这样的一个封闭的计算机组,在这个封闭的区域内可以实现文件共享,资源管理和电子邮箱等等功能。

# 工作组

内网虽然是在某个区域内的网络,但是这个区域也一般是在方圆几千米以内,这个范围还是很大。在这个范围内可能存在着成百上千的计算机,在封闭区域中我们我们想要找到某一台电脑是一件很困难的一件事。所以就诞生了工作组这个概念,实际上现实中也有很多这样的例子,比如说成立专家组,集训组之类的。在内网中我们按照职责,部门将电脑分为不同的组,这样当我们想要寻找某台电脑,只要知道其所在的组就会很方便了。

# 加入 && 创建工作组

实际上工作组是一个偏逻辑上的东西,并没有什么规则来限制某些电脑该加入哪些组,某些电脑不能加入到某个组。当我们想要将某台电脑加入一个工作组的时候只需要再计算机属性中更改计算机名的位置更改即可

当加入的组不存在的时候,相当与创建了一个新的工作组

image-20240312212737800

更改这里后重新启动就可以了。在工作组中很显然是没有集中管理的效果的而且也是不安全的,我们没法实现禁止别的计算机进入某一个工作组访问工作组中的资源,有没有什么方法解决的同时兼顾分组呢?答案是肯定的 ---- 域

#

域可以简单的理解为工作组 plus,它实际上就解决了工作组中可以任意访问这个问题。域也是一个计算机集合,这个集合类似于 VLAN(一个域中的用户无法访问另一个域中的资源)。相比工作组来说它有一个严格的管理控制机制,如果想要访问域内的资源就必须有一个合法的身份登录到域中,并且不同的身份具有不同的权限,能访问的资源也会不同。

# 域控

域是有管理控制机制的,那么当然也有管理者,这个管理者就是域控。域控(Domain Controller)我们通常称其为 DC。它负责来判断登入的用户是否合法,域内计算机之间想要相互访问都需要通过域控的审核。一个不是很恰当的比喻,域就好比一个皇朝,这里的域控就好比皇上,旗下大臣的所有信息皇帝都知道,有一个专门的地方(数据库)来存放大臣(域内主机)的信息,大臣之间有什么资源交换都需要皇帝的同意才行。而域控也是这样,它就类似域内的一台管理服务器的计算机,负责所有连入域的计算机的和用户的验证工作,域内计算机想要相互访问也需要通过计算机的同意。

域控制器内有一个包含整个域的账户密码以及计算机信息的数据库,所有的信息收通过数据库来比对验证。对于不同的身份信息会对域内资源有不同的访问权限。在域环境中域管理员是域内权限最高的用户,能获得域管理员权限往往就能拿到整个域控。

# 单域

顾名思义就是指在网络环境中只有一个域。在一个地理位置固定计算机资源数量不多的情况下,建立一个域通常就能满足需求。单域环境示例如下:

image-20240320130753287

在一个域内,通常我们会设置两台域服务器,一台作为域控,一台作为备份域控(BDC)。在上面的域控中我们也说到,所有连入域的计算机和用户的验证工作都是由域控来完成的,所以如果域控出现问题(服务异常,断电等)会导致整个域瘫痪。所以设置一个备份域控,当域控瘫痪时可以来顶替其工作

还拿上面的例子来说,这不就是立了一个太子。所以很显然这个太子(备份域控)在正常情况下是不发挥作用的

# 父域和子域

上面的单域是在一个计算机资源不多,且地理位置固定的情况下。而在一个大型公司中为了满足某些管理的需求,需要在一个域中划分出来多个域,被划分的被称为父域,划分出来的域被称为子域。很显然父域和子域之间是相对的一个关系。如下图所示:

image-20240320165015826

一个父域可以包含多个子域,从域名来看,子域是整个域名中的一个段。子域只能使用父域的域名作为自己的域名后缀,所以在一个域树中域的名字是连续的。划分出子域我们可以在域内实现自主管理,不同的域之间使用不同的安全策略。

# 域树

在上面父域和子域我们就提到了域树,实际上域树就是由父域子域扩展出来的,上面的图中我将父域 xcu.icu 划分出来两个子域,这个就是一个最简单的域树。域树是多个域通过建立信任关系(Trust Relation)组成的一个域的集合,在这个集合内所有的域共享一个相同的表结构,一个域管理员只能管理本域而不能访问和管理其他域。如下图

image-20240320170631652

在域树内的父域和子域之间可以按照需求进行相互管理且可以跨网分配文件和设备资源,这就实现了不同域之间的网络资源的共享与管理。

# 域林

树多成林嘛,顾名思义也能看出,域树之间相互建立信任关系构成一个集合就称为域林

image-20240320174606394

从上面也可以看到,域树和域林组明显的区别就是,域林中的域和域树之间没有形成连续的名字空间。但是域中的所有域树仍共享一个表结构,配置和全局目录

域内的信息交换条目较多且不会压缩,不同域之间的信息交换条目较少且可以压缩

# 域名服务器

这里的域名服务器是用于实现域名和与之对应的 IP 之间的相互转换。实际上在内网的域中是使用 DNS 来定位 DC 的,服务器和其他 PC,所以实际上域的名字就是 DNS 的名字。通常 DNS 服务器和 DC 放在同一台主机上。

# 活动目录

活动目录(Activity Directory)简称 AD,它是安装在 DC 上的为整个域环境提供集中式目录管理的一个组件。活动目录中存储了域树中所有的资源信息,如域,用户,用户组,安全策略等目录数据存放在域控的 Ntds.dit 文件中。通过活动目录的查询操作我们可以快速准确的从目录中查找到我们所需要的资源。域树中所有的域共享一个活动目录,这个活动目录的数据分布存储在各个域控上且每个与只存储本域的数据。活动目录主要提供下面几项功能:

  1. 计算机集中管理:集中管理加入域中的计算机资源
  2. 用户集中管理:集中管理域用户、组织通讯录、用户组、对用户进行统一的身份认证
  3. 环境的集中管理:统一客户端桌面,网络连接配置,安全配置的设置
  4. 应用的集中管理:统一安装软件,补丁

我们可以将整个内网看做一本书,这里的目录就好比书的索引,可以帮助我们快速的找到我们需要的内容
热知识:AD 是安装在 DC 上的一个组件

# LDAP & 结构

LDAP(Light Directory Access Protocol)是一个轻量级目录访问协议,是用来访问目录服务数据库的一个协议。采用的 CS(客户端 / 服务端)其中服务端以树状结构存储目录服务数据库,客户端负责提供操作目录服务数据库的工具。

先介绍一下有关 LDAP 树状结构的有关概念:

  • 目录树:在一个目录服务系统中,整个目录信息集可以抽象为一个目录信息树,树中的每个节点都是一个条目
  • 条目:目录数据库中的一个条目就是一条记录,每个条目都有 DN(唯一绝对可辨识名称)
  • DN:(Distinguished Name)绝对可辨识名称,指向一个 LDAP 对象的完整的路径。CN 表示通用名(Common Name)、OU 表示组织单位(Organizational Unit)、DC 表示域控
  • 对象类:与某实体类对应的一组属性
  • RDN:(Relative Distinguished Name)相对可辨识名称,用于指向一个 LDAP 对象的相对路径
  • 属性:描述条目的具体信息

目录数据库树状结构抽象如下:

image-20240320220310658

在上图中 CN=DC1 的 DN 为

CN=DC1,OU=DC,DC=xcu,DC=icu

# AD 的访问

这里使用微软官方的 AD Explorer 工具连接域控

image-20240321104151916

AD Explorer 是一个高级的 AD 查看器和编辑器。可以使用 AD 资源管理器轻松导航 AD 数据库、定义收藏夹位置、查看对象属性和属性,而无需打开对话框、编辑权限、查看对象的架构,并执行可以保存和重新执行的复杂搜索。

连接:AD 资源管理器 - Sysinternals | Microsoft Learn

# AD 分区

活动目录可以支持对象是非常庞大的,为了方便管理微软将 AD 数据库划分为多个分区,这些分区被称为上下文命名(NC Naming Context)。

# 域分区

域分区(Domain NC)用于存储与该域有关的信息,如计算机、用户、组、OU 等信息。每个域的 DC 会有自己的域分区,如下图:

image-20240321113312914

上图中箭头所指向的 DC=c1own,DC=com 就是 c1own.com 的域分区,从上图中我们可以看到一个域分区中会包含下面这些内容:

  1. CN=Builtin:其中内置了本地域组的安全组的容器,如下如这里显示的就是内置的安全组
    image-20240321114358796

  2. CN=Computers:用户容器,其中包含了所有当前域中的主机
    image-20240321114415512

  3. OU=Domain Controller:DC 的容器,包含域中所有的域控主机(前面也有提到在一个域中往往会有两台主机)

    image-20240321114431682

  4. CN=FroeignSecurityPrincipals:包含域中所有来自域的林外部域的组中的成员

    image-20240321115234250

  5. CN=Managed Service Account:托管服务账户的容器

  6. CN=System:各种配置的容器
    image-20240321115553375

  7. CN=User:用户和组对象的默认容器
    image-20240321115633456

# 配置分区

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

image-20240321134229047

# 域内权限

在域环境中,为了方便对权限集中统一的管理,会将具有同样权限的用户分为一组。当我们想要给与用户什么权限只需要对组设置即可。

根据组在域树或者域林中的作用范围,我们可以将组分为 域本地组通用组全局组

# 域本地组(Domain Local group)

域本地组的作用是授予访问本域资源的权限,且只能访问本域中的资源。域本地组可以包含 域林 内任意一个域的通用组和全局组的用户,但是无法包含其他域的域本地组(因为域本地组只能访问本域中的资源)。 当域林中多个域的用户想要访问一个域的资源 的时候,可以从其他域向这个域的域本地组添加用户,通用组和全局组。

比如是在一个域林中,如果我们想要林根域的一个通用组对整个域林拥有管理权限,我们需要向所有的子域的域本地组中添加这个通用组。

image-20240321162250125

我们看到域分区这里的 Builtin 组织单元这里显示的就是内置的域本地组

常见的系统内置的域本地组及其权限如下:

  • 管理员组(Administrators):在这个组中的成员可以不受限制的访问域中的资源,器在 AD 和 DC 中默认都是具有管理权限的,是域林中最为强大的管理组。
  • 远程登录组(Remote Desktop):具有远程登录的权限
  • 打印机操作员组(Print Operators):可以管理网络中的打印机,,并且可以在本地登录和关闭域控
  • 备份操作员组(Backup Operators):可以在 DC 中执行备份和还原操作,并且可以在本地登录和关闭域控(默认是没有用户的)
  • 域管理员组(Domain Admins):该组中的用户在本域中拥有完整的管理权限
  • 域用户组(Domain User):组中存放所有的域成员
  • 账号操作组(Account Operators):该组中的成员可以创建和管理本域中的用户和组的权限
  • 服务操作员组(Server Operators):管理域控服务器

# 通用组(Universal Group)

通用组可以作用于全林所有的域,其中的成员可以是域林内所有的用户、全局组和其他通用组,但不能是域本地组。可以在任意一个域内指派权限,以便能访问任意一个域中的资源( 域管理员可以对其授予本域的资源访问权限 )。其成员是保存在全局编录(Global Catalog,GC)中的,任何的变化都会导致全林复制。

常见的系统内置的通用组及其权限如下:

  • 组织系统管理员组(Enterprise Admins):该组的成员在域林中每个域都是 Administrators 组的成员,因此该组对整个域林具有完全控制权限,是一个域根的组。
  • 架构管理员组(Schema Admins):该组中的成员可以对 AD 进行修改

全局编录通常用来存储一些不经常发生变化的信息

# 全局组(Global Group)

全局组同样可以作用于整个域林,其中的成员来自于同一个域(创建该全局组的域)中。其权限是全林中所有的域指派的。

域本地组来自全林作用于本域,通用组来自全林作用于全林,全局组来本域作用于全林