工作组
工作组(Work Group)是计算机网络的一个概念,也是最常见和最普通的资源管理
模式,就是将不同的计算机按照功能或部门分别置于不同的组。通过创建不同的
工作组,不同的计算机可以按照功能或部门归属到不同的组内,整个组织的网络就会变
得具有层次性。这样,只需在计算机的“网上邻居”中找到相应的工作组,就可以发现
所包含的所有计算机,从而访问相应的资源。
要加入或创建工作组很简单。只需右击桌面上的“计算机”(或“此电脑”)图标,
在弹出的快捷菜单中选择“属性”,在弹出的对话框中单击“更改设置”, 然后在弹出的
“系统属性”对话框中单击“更改”,在“计算机名”栏中输入自定义的主机名称,并在
工作组”栏中输入需要加入的工作组名称,单击“确定”按钮并重新启动计算机即可。注意,如果指定的工作组不存在,就会创建一个新的工作组。
另外,在默认情况下,局域网内的计算机都是采用工作组方式进行资源管理的,即
处在名为WORKGROUP的工作组中。
域
通过工作组对局域网的计算机进行分类,可以使资源的管理和访问更加层次化。但是工作组只适用于网络中计算机不多、资产规模较小、对安全管理控制要求不严格的情况。当组织中的网络规模越来越庞大时,需要统一的管理和集中的身份验证,并且能够为用户提供更加方便的网络资源搜索和使用方式时,就需要放弃工作组而使用域。
域(Domain)是一种比工作组更高级的计算机资源管理模式,既可以用于计算机数
量较少的小规模网络环境,也可以用于计算机数量众多的大型网络环境。
在域环境中,所有用户账户、用户组、计算机、打印机和其他安全主体都在一个或
多个域控制器的中央数据库中注册。当域用户需要想访问域中的资源时,必须通过域控
制器集中进行身份验证。而通过身份验证的域用户对域中的资源拥有什么样的访问权限
取决于域用户在域中的身份。
在域环境中,域管理员用户是域中最强大的用户,在整个域中具有最高访问权限和
最高管理权限,可以通过域控制器集中管理组织中成千上万台计算机网络资源,所以在
实际渗透过程中,能获得域管理员相关权限往往可以控制整个域控。
单域
单域是指网络环境中只有一个域。在一个计算机数量较少、地理位置固定的小规模
的组织中,建立一个单独的域,足以满足需求。
父域和子域
在有些情况下,为了满足某些管理需求,需要在一个域中划分出多个域。被划分的
域称为父域,划分出来的各部分域称为子域。例如,一个大型组织的各部门位于不同的
地理位置,这种情况下就可以把不同位置的部门分别放在不同的子域,然后部门通过自
己的域来管理相应的资源,并且每个子域都能拥有自己的安全策略。
从域名看,子域是整个域名中的一个段。各子域之间使用“.”来分割,一个“”就
代表域名的一个层级。如下图所示,hack-my.com 是父域,其余两个是其子域。
域树
域树是多个域通过建立信任关系组成的一个域集合。在域树中,所有的域共享同一
表结构和配置,所有的域名形成一个连续的名字空间,如下图所示。可以看出,域树
中域的命名空间具有连续性,并且域名层次越深,级别越低。
在域树中,域管理员只能管理本域,不能访问或者管理其他域。如果两个域之间需
要互相访问,就需要建立信任关系(Trust Relation)。
域林
域林是指由一个或多个没有形成连续名字空间的域树组成域树集合,如下图所示。域林与域树最明显的区别就是,域林中的域或域树之间没有形成连续的名字空间,
而域树是由一些具有连续名字空间的域组成。但域林中的所有域树仍共享同一个表结构、配置和全局目录。
域控制器
域控制器(Domain Controller, DC)是域环境核心的服务器计算机,用于在域中响
应安全身份认证请求,负责允许或拒绝发出请求的主机访问域内资源,以及对用户进行
身份验证、存储用户账户信息并执行域的安全策略等。可以说,域控制器是整个域环境
的“中控枢纽”。域控制器包含一个活动目录数据库,其中存储着整个域的账户、密码、
计算机等信息。在技术领域,域控制器有时被简称为“域控”。
一个域环境可以拥有一台或多台域控制器,每台域控制器各自存储一份所在域的活
动目录的可写副本,对活动目录的任何修改都可以从源域控制器同步复制到域、域树或
域林的其他控制器上。即使其中一台域控制器瘫瘓,另一台域控制器可以继续工作,以
保证域环境的正常运行。
活动目录
活动目录(Active Directory, AD)是指安装在域控制器上,为整个域环境提供集中式目录管理服务的组件。活动目录存储了有关域环境中各种对象的信息,如域、用户、用户组、计算机、组织单位、共享资源、安全策略等。目录数据存储在域控制器的Ntds.dit文件中。活动目录主要提供了以下功能。
计算机集中管理:集中管理所有加入域的服务器及客户端计算机,统一下发组策略。
用户集中管理:集中管理域用户、组织通讯录、用户组,对用户进行统一的身份认证、资源授权等。
资源集中管理:集中管理域中的打印机、文件共享服务等网络资源。
环境集中配置:集中的配置域中计算机的工作环境,如统一计算机桌面、统一网络连接配置,统一计算机安全配置等。
应用集中管理:对域中的计算机统一推送软件、安全补丁、防病毒系统,安装网络打印机等。
Ntds.dit文件
Ntds.dit文件是域环境的域控制器上保存的一个二进制文件,是主要的活动目录数据
库,其文件路径为域控制器的“%SystemRoot%Intds\ntds.dit"。Ntds.dit 文件中包括但不
限于有关域用户、用户密码的哈希散列值、用户组、组成员身份和组策略的信息。Ntds.dit
文件使用存储在系统SYSTEM文件的密钥对这些哈希值进行加密。
而在非域环境即工作组环境中,用户的登录凭据等信息存储在本地SAM文件中。
目录服务与LDAP
活动目录是一种目录服务数据库,区别于常见的关系型数据库。目录数据库实现的是目录服务,是一种可以帮助用户快速、准确地从目录中找到所需要信息的服务。目录数据库将所有数据组织成一个有层次的树状结构,其中的每个节点是一个对象,有关这个对象的所有信息作为这个对象的属性被存储。用户可以根据对象名称去查找这个对象的有关信息。
LDAP (Lightweight Directory Access Protocol,轻量目录访问协议)是用来访问目录服务数据库的一个协议。活动目录就是利用LDAP名称路径来描述对象在活动目录中的位置的。
下图为一个目录服务数据库
①目录树:在一个目录数据库中,整个目录中的信息集可以表示为一个目录信息树。树中的每个节点是一个条目。
②条目:目录数据库中的每个条目就是一条记录。每个条目有自己的唯一绝对可辨识名称(DN)。
③DN (Distinguished Name,绝对可辨识名称):指向一个LDAP对象的完整路径。DN由对象本体开始,向上延伸到域顶级的DNS命名空间。CN代表通用名(Common Name), OU代表着组织单位(Organizational Unit) , DC代表域组件(Domain Component)。
如上图中,CN=DC1的DN绝对可辨识名称为:
CN=DC1, OU=Domain Controllers, DC=hack-my, DC=com其含义是DC1对象在hack-my.com域的Domain Controllers组织单元中,类似文件系统目录中的绝对路径。其中,CN=DC 1代表这个主机的一个对象,0U=Domain Controllers代表一个Domain Controllers组织单位。
④RDN (Relative Distinguished Name,相对可辨识名称):用于指向一个LDAP对象的相对路径。比如,CN=DC1条目的RDN就是CN=DC 1。
⑤属性:用于描述数据库中每个条目的具体信息。
活动目录分区
活动目录预定义了域分区、配置分区和架构分区三个分区。
域分区
域分区(DomainNC) 用于存储与该域有关的对象信息,这些信息是特定于该域的,如该域中的计算机、用户、组、组织单位等信息。在域林中,每个域的域控制器各自拥有一份属于自己的域分区,只会被复制到本域的所有域控制器中。
可以看到,域分区主要包含以下内容。
CN=Builtin: 内置了 本地域组的安全组的容器。
CN=Computers: 机器用户容器,其中包含所有加入域的主机。
0U=Domain Controllers:域控制器的容器,其中包含域中所有的域控制器。
CN=ForeignSecurityPrincipals: 包含域中所有来自域的林外部域的组中的成员。
CN=Managed Service Accounts:托管服务账户的容器。
CN=System: 各种预配置对象的容器,包含信任对象、DNS对象和组策略对象。
CN=Users: 用户和组对象的默认容器。
配置分区
配置分区(ConfigurationNC) 存储整个域林的主要配置信息,包括有关站点、服务、
分区和整个活动目录结构的信息。整个域林共享一份相同的配置分区,会被复制到域林
中所有域的域控制器上。
架构分区
架构分区(Schema NC)存储整个域林的架构信息,包括活动目录中所有类、对象
和属性的定义数据。整个域林共享-份相同的架构分区,会被复制到林中所有域的所有
域控制器中。
域用户
域用户,顾名思义,就是域环境中的用户,在域控制器中被创建,并且其所有信息
都保存在活动目录中。域用户账户位于域的全局组Domain Users中,而计算机本地用户
账户位于本地User组中。当计算机加入域时,全局组Domain Users会被添加到计算机本
地的User组中。因此,域用户可以在域中的任何一台计算机上登录。
机器用户
机器用户其实是一种特殊的域用户。查询活动目录时随便选中Domain Computer 组
的一台机器账户,查看其objectClass属性,可以发现该对象是computer 类的示例,并且
computer类是user 类的子类。这说明域用户有的属性,机器用户都有。
在域环境中,计算机上的本地用户SYSTEM对应域中的机器账户,在域中的用户名
就是“机器名+$”。
当获取一台域中主机的控制权后,发现没有域中用户凭据,此时可以利用一些系统
提权方法,将当前用户提升到SYSTEM, 以机器账户权限进行域内的操作。
但是利用系统漏洞提权后获得SYSTEM用户的权限,该用户对应域中的机器账户,
具有域用户的属性,所以可以成功执行域中命令。