内网渗透测试基础
0x00:from
--《内网安全攻防》
内网也指局域网(Local Area Network,LAN),是指在某一区域内由多台计算机互联而成的计算机组,组网范围通常在数千米内,在局域网中,可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等。内网是封闭的,可以由办公室内的两台计算机组成,也可以由一个公司内的大量计算机组成。
0x01:内网基础知识
在研究内网的时候,经常会听到工作组、域、域控制器、父域、子域、域树、域林(域森林或林)、活动目录、DMZ、域内权限等名词,我们将会在下面对其概念和区别进行介绍。
1.工作组
在一个大型单位内,可能有成千上百计算机互相连接组成局域网,它们都会列在“网络”内。如果不对其进行分组,将会十分混乱。
因此,为了解决这一问题,产生了工作组(Work group)这个概念。将不同功能的计算机分别列入不同的工作组,例如技术部的计算机全部列入“技术部”工作组、财务部的计算机全部列入“财务部”工作组等等,要想访问某个部门的资源,只要在“网络”里双击该部门的工作组名,就可以看到该部门的所有计算机了。相比不分组的情况,这样的情况显然更有序和利于管理。
加入或创建工作组的方法很简单。右击桌面上的“计算机”图标,在弹出的快捷菜单中选择“属性”选项,然后依次单击“更改设置”和“更改”按钮,在“计算机名”输入框中输入计算机的名称,在“工作组”输入框中输入自己想要加入的工作组的名称,如下图所示。
如果输入的工作组在网络中不存在,就相当于新建了一个工作组(暂时工作组只有这台主机)。确定后重新启动后进入“网络”,就可以看到加入工作组的成员了,退出也只需将工作组名删除即可。
这时在网络中,其他人可以访问我们的共享资源,我们也可以加入同一网络中的任何工作组。工作组就像一个可以自由进出的社团,方便同组的计算机相互访问。工作组没有集中管理作用,每个主机都是平等的。
2.域
假设有这样的应用场景:一个公司有200台计算机,我们希望某台计算机的账户pure可以访问每台计算机的资源或者在每台计算机登陆。那么,在工作组环境中,我们必须在每一台主机的SAM数据库中创建pure这个账号。一旦pure想要更换密码,那将是一个很恐怖的工作量。这只只是200台,如果更多呢?这就是域的需求。
域(Domain)是一个有安全边界的计算机集合(安全边界的意思是,在两个域中,一个域中的用户无法访问另一个域中的资源),可以简单的把域理解成升级版的工作组。与工作组相比,域的安全管理控制机制更复杂,不可能和工作组一样随意进出,用户想要访问域内的资源,必须以合法的身份登陆域,而用户对域内的资源拥有什么样的权限,还取决于用户所在域内的身份。
域控制器(Domain Controller ,DC)是域中的一台类似管理服务器的计算机,我们可以形象的将他理解为一个单位的门禁系统。域控制器负责所有连入的计算机和用户的验证工作。域内的计算机如果想互相访问,都要经过域控制器的审核。
域控制器中存在的这个域所有的账户、密码、属于这个域的计算机等信息构成的数据库。当计算机连接到域时,域控制器会判断这台计算机是否属于这个域,以及用户使用的账号是否存在,密码是否正确。如果以上信息有一条不正确,域控制器就会拒绝这台计算机的登陆请求。且用户不能登陆就不能访问域内的资源。
域控制器是整个域的通信枢纽,所有的权限身份验证都在域控制器上进行,也就是说,域内所有用来验证身份的账号和密码散列值都保存在域控制器中。
通常一般有以下几个环境。
1.单域
通常,在一个地理位置固定的小公司里,建立一个域就可以满足需求。在一个域内,一般至少存在两台域控制器,一台作为DC,另一台作为备份DC。活动目录的数据库(包括用户的账号信息)是存储在DC中的,如果没有备份DC,一旦DC瘫痪了,域内的其他用户就不能登陆到该域了。如果有一台备份DC,至少该域还能正常使用。
2.父域和子域
出于管理及其他需求,需要在网络中划分多个域。第一个域称为父域。各分部的域称为该域的子域。例如,一个大公司的各个分公司位于不同的地点(全国各地的办事处和分部),就需要用到父域和子域。如果把不同大点的分公司放在一个域中,那么它们之间在信息交互(包括同步信息、复制等)上花费的时间就会比较长,占用的带宽也会比较大(在同一个域内,信息交互的条目是很多的,而且不会压缩;在不同域之间,信息交互的条目相对较少,而且可以压缩)。这样处理有一个好处,就是分公司可以通过自己的域来管理自己的资源,还有一种情况是出于安全策略的考虑(每个域都有自己的安全策略)。例如,一个公司的财务部都希望使用特定的安全策略(包括账号密码策略等),就可以把财务部作为一个子域单独管理。
3.域树
域树(Tree)是多个域通过建立信任关系组成的集合。一个域管理员只能管理本域,不能访问或者管理其他域。如果两个域之间需要互相访问,则需要建立信任关系(Trust Relation)。信任关系是连接不同域的桥梁。域树内的父域和子域,不但可以按照需要互相管理,还可以跨网络分配文件和打印机等设备资源,从而在不同的域之间实现网络资源的共享与管理、通信及数据传输。
在一个域树中,父域可以包含多个子域。子域是相对父域来说的,指的是域名中的每一个段。个子域之间用点号隔开,一个“.”代表一级。放在域名最后的子域称为最高级子域或一级域,它前面的子域称为二级域。例如,域abc.pure.com的级别比域pure.com低(域abc.pure.com有两个层次,而域pure.com只有一个层次)。再比如,def.abc.pure.com比abc.pure.com级别低, def.abc.pure.com 是三级子域 abc.pure.com 是二级域,可以看出,子域只能使用父域的名字作为其域名的后缀,也就是说,在一个域树中,域的名字是连续的,如下图。
4.域森林
域森林(Forest)是指多个域通过建立信任关系组成的集合。例如,在一个公司兼并场景中,某公司使用域树pure.com,被兼并的公司本来有自己的域树abc.com,域树abc.com无法挂在域树pure.com下。所以,域树pure.com和abc.com之间需要通过建立信任关系来构成域森林。通过域树之间的信任关系,可以管理和使用整个域森林中的资源,并保留兼并公司自己原有的特性。
5.域名服务器
域名服务器(Domain Name Server ,DNS)是指用于首先域名(Domain Name)和与之相对于的IP地址(IP Address)转换的服务器。从对域树的介绍可以看出,域树中的域名和DNS域名非常相似。而实际上,因为域中的计算机是通过使用DNS来定位域控制器、服务器及其他计算机、网络服务的,所以域的名字就是DNS域的名字。在内网渗透测试中,大都是通过寻找DNS服务器来确定域控制器的位置的(DNS服务器通常和域控制器配置在同一台机器上)
3.活动目录
活动目录(Active Directory,AD)是指域环境中提供目录服务的组件。
目录用于存储有关网络对象(例如用户、组、计算机、共享资源、打印机和联系人等)的信息。目录服务是指帮助用户快速、准确的从目录中找到其所需要的信息的服务。活动目录实现了目录服务,位企业提供了网络环境的集中管理机制。
可以把企业内网看成一本字典,那么内网里的资源就是字典的内容,活动目录就相当于字典的索引。也就是说,活动目录存储的是网络中所有资源的快捷方式,用户可以通过寻找快捷方式来定位资源
在活动目录中,管理员不需要考虑被管理对象的地理位置,只需要按照一定的方式将这些对象放置在不同的容器中。这种不考虑被管理对象的具体地理位置的组织框架称为逻辑结构。
活动目录的逻辑结构包括前面讲过的组织单元(OU)、域有、域树、域森林。域树内的所有域共享一个活动目录,这个活动目录内的数据分散存储在各个域中,且每个域只存储该域内的数据。例如,可以将甲公司的财务科、人事科、销售科各建一个域,因为这几个域同属甲公司,所以可以将这几个域构成域树并交给甲公司管理;而甲公司、乙公司、丙公司都属于A集团,那么,为了让A集团更好的管理这三家公司,可以将这三家的域树组成域森林交给A集团管理。因此,A集团可以按“A集团(域森林)-子公司(域树)-部门(域)-员工”的方式对网络进行层次分明的管理。活动目录这种层次结构,可以使企业网络更具有可扩展性,便于更好的组织管理。
活动目录主要提供以下功能:
- 帐号集中管理:所有账号均存储在服务器中,以便执行命令和重置密码。
- 软件集中管理:统一推送软件、安装打印机等、利用软件发布策略发布软件,可以让用户自由选择需要安装的软件。
- 环境集中管理:统一客户端桌面、IE、TCP/IP协议等设置。
- 增强安全性:统一部署杀毒软件和病毒扫描任务、集中管理用户的计算机权限、统一制定用户密码策略等。可以监控网络,对资料进行统一管理。
- 更可靠,更短的宕机时间:例如,利用活动目录控制用户访问权限,利用群集、负载均衡等技术对文件服务器进行容灾设置,对治疗进行统一管理。
活动目录是微软提供的统一管理基础平台,ISA、EXchange、SMS等都依赖这个平台。
4.域控制器和活动目录的区别
如果网络规模较大,就要把网络中的众多对象,例如计算机、用户、用户组、打印机、共享文件等,分门别类、井然有序的放在一个大仓库中,并将检索信息整理好,以便查找、管理和使用这些对象(资源)。这个拥有层次结构的数据库,就是活动目录数据库,简称AD库。
那么。我们应该把这个数据库放在哪台计算机上呢?要实现域环境,其实就是要安装AD。如果内网中的一台计算机上安装了AD,他就变成了DC(用于存储活动目录数据库的计算机)。所以,在域中,如果要更改域管理员账号,只需在活动目录中更改一次即可。
5.安全域的划分
划分安全域的目的是将一组安全等级相同的计算机划入同一个网段。这个网段内的计算机拥有相同的网络边界,并在网络边界上通过部署防火墙来实现对其他安全域的网络访问控制策略(NACL),从而对允许哪些IP地址访问此域、允许此域访问哪些IP地址和网段进行设置。这些措施,将使得网络风险最小化,当攻击发生时,可以尽可能的将威胁隔离,从而降低对域内计算机的影响。
一个典型的中小型内网的安全域划分如下图所示,一个虚线框表示一个安全域(也是网络边界,一般分为DMZ和内网),通过硬件防火墙的不同端口实现隔离。
在一个用路由器连接的内网中,可以将网络划分为三个区域:安全级别最高的内网;安全级别中等的DMZ;安全级别最低的外网(Internet)。这三个区域负责完成不同的任务,因此需要设置不同的访问策略。
DMZ称为隔离区,是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题而设立的一个非安全系统与安全系统之间的缓冲区。DMZ位于企业内部网络和外部网络之间。可以在DMZ中放置一些必须公开的服务器措施,例如企业Web服务器、FTP服务器和论坛服务器等。DMZ是对外提供服务的区域,因此可以从外部访问。
在网络边界上一般会部署防火墙及入侵检测、入侵防御产品等。如果有web应用,还会设置waf,从而更加有效的保护内网。
在配置一个拥有DMZ的网络时,通常需要定义一些访问控制策略,以实现屏障作用。
- 内网可以访问外网:内网用户需要自由的访问外网。在这一策略中,防火墙需要执行NAT。
- 内网可以访问DMZ:此策略使内网用户可以使用或管理DMZ中的服务器。
- 外网不能访问内网:这是防火墙的基本策略。内网中存储的是公司内部数据,显然不能外网访问,如果访问需要通过隧道(VPN)进行访问。
- 外网可以访问DMZ:因为DMZ中的服务器需要为外界提供服务,所以外网必须可以访问DMZ。同时,需要由防火墙来完成从外地址到服务器实际地址的转换。
- DMZ不能访问内网:如果不执行此策略,当DMZ被攻击时,内网将无法受到保护。
- DMZ不能访问外网:此策略有例外,比如邮件服务器在DMZ中。
内网又可以分为办公区和核心区
- 办公区:员工工作区,一般会安装防病毒软件、主机入侵检测等。办公区一般可以访问DMZ。如果运维也在办公区,那么部分主机也能访问核心数据区(许多大企业还会使用堡垒机进行统一管理用户的的登陆行为)。攻击者如果想进入内网,一般会使用鱼叉攻击、水坑攻击或者社工。办公区人员多而杂乱,变动也频繁,在安全管理上可能存在诸多漏洞,是攻击者进入内网的重要途径之一。
- 核心区:存储企业最重要的数据、文档等资源,通过日志记录、安全审计等安全措施进行严密的保护,往往只能有很少的主机可以访问。从外部绝难访问核心区。一般来说,能够直接访问核心区的只有运维人员和it主管,所以攻击者会重点关注这些用户的信息(攻击者在内网中进行横向移动攻击时,会优先查找这些主机)
6.域中计算机的分类
1.域控制器
域控制器用于管理所有的网络访问,包括登录服务器、访问共享目录和资源。域控制器中存储了域内所有的账户和策略信息,包括安全策略、用户身份验证信息和账户信息。
在网络中,可以有多台计算机被配置为域控制器,以分担用户的登陆、访问等操作。多个域控制器可以一起工作,自动备份用户账户和活动目录数据。这样,即使部分域控制器瘫痪,网络也不会受到影响,提高了安全和稳定性。
2.成员服务器
成员服务器是指安装了服务器操作系统并加入了域、但没有安装活动目录的计算机,其主要任务是提供网络资源。成员服务器的类型通常有文件服务器、应用服务器、数据库服务器、web服务器、邮件服务器、防火墙、远程访问服务器、打印服务器等。
3.客户机
域中的计算机可以是安装了其他操作系统的计算机,用户利用这些计算机和域中的账户就可以登陆域。这些计算机被称为域中的客户机。域用户账号通过域的安全验证后,即可访问网络中的各种资源。
4.独立服务器
独立服务器和域贸易关系。如果服务器既不加入域,也不安装活动目录,就称其为独立服务器。独立服务器可以创建工作组、与组内的计算机共享资源,但不能使用活动目录提供的任何服务。
域控制器用于存放活动目录数据库,是域中必须有的,而其他三种不是必须的,也就是说域可以就一台域控制器。当然角色是可以互相转变的,独立服务器也可以成为域控制器,只要加入域然后安装活动目录即可。
7.域内权限解读
本节将介绍域相关内置组的权限,包括本地组、全居组、通用组的概念和区别,以及几个比较重要的内置组权限。
组(Group)是用户账号的集合。通过向一组用户分配权限,就可以不必向每个用户分别分配权限。例如,管理员在日常工作中,不必为单个用户账号设置独特的访问权限,只需要将用户账号放到相应的安全组中。管理员通过配置安全组访问权限,就可以为所有加入安全组的用户账户配置同样的权限。使用安全组而不是单个的用户账户,可以大大简化网络的维护和管理工作。
1.域本地组
多域用户访问单域资源(访问同一个域),可以从任何域添加用户账户、通用组和全局组,但是只能在其所在域内指派权限。域本地组不能嵌套在其他组中。域本地组主要用于授予本域内资源的访问权限。
2.全局组
单域用户访问多域资源(必须是同一个域中的用户),只能在创建该全局组的域中添加用户和全局组。可以在域森林的任何域内指派权限。全局组可以嵌套在其他组中。
可以将某个全局组添加到同一个域的另一个全局组,或者添加到其他域的通用组和域本地组中(不能添加到不同域的全局组中,全局组只能在创建它的域中添加用户和组)。虽然可以通过全局组授予用户访问任何域内资源的权限,但是一般不直接用它来进行权限管理。
全局组和域本地组的关系,与域用户账号和本地账号的关系相似。域用户账号可以在全局使用,即在本域和其他关系的其他域中都可以使用,而本地账号只能在本机中使用。例如,将用户张三(域账号Z3)添加到域本地组Administrations中,并不能使Z3对非DC的域成员计算机拥有任何特权,但若将Z3添加到全局组Domain Admins中,用户张三就成为域管理员了(可以在全局使用,且对域内成员计算机有特殊权限)
3.通用组
通用组的成员来自域森林中的任何域的用户账户、全局组和其他通用组,可以在该域森林的任何域中指派权限,可以嵌套在其他组中,非常适合在域森林内的跨域访问中使用。不过,通用组的成员不是保存在各自的域控制器中的,而是保存在全局编录(GC)中的,任何变化都会导致全林复制。
全局编录通常用于存储一些不经常发生变化的信息。由于用户账号信息是经常变化的,建议不要直接将用户账号添加到通用组中,而要先将用户账户添加到全局组中,再把这些相对稳定的全局组添加到通用组中。
可以这样记忆:域本地组来自全林,作用于本域;全局组来自本域,作用于全林;通用组来自于全林,作用于全林。
4.A-G-DL-P策略
A-G-DL-P策略 是指将用户账号添加到全局组中,将全局组添加到于本地组中,然后为域本地组分配资源权限。
- A表示用户账户(Account)。
- G表示全局组(Global Group)。
- H表示通用组(Universal Group)。
- DL表示域本地组(Domain Local Group)。
- P表示资源权限(Permission,许可)。
按照 A-G-DL-P策略对用户进行组织和管理是非常容易的。在 A-G-DL-P策略形成以后,当需要给一个用户添加某个权限时,只要把这个用户添加到某个本地域组中就可以了。
在安装域控制器时,系统会自动生成一些组,称为内置组。内置组定义了一些常用的权限。通过将用户添加到内置组中,可以使用户获得相应的权限。
“Active Directory用户和计算机”控制台窗口的“Builtin”和“Users” 组织单元中的组就是内置组,内置的域本地组在“Builtin”组织单元中。如下图所示。
内置的全局组和通用组在“Users”组织单元中,如下图所示。
下面介绍几个比较重要的域本地组权限。
- 管理员组(Administrators)的成员可以不受限制地存取计算机/域的资源。它不仅是最具权利的一个组,也是活动目录和域控制器中默认具有管理员权限的组。该组的成员可以更改Enterprise Admins、schema Admins和Domain Admins组的成员关系,是域森林中强大的服务管理组。
- 远程登陆组(Remote Desktop Users)的成员具有远程登陆权限
- 打印机操作员组(Print Operators)的成员可以管理网络打印机,包括建立、管理及删除网络打印机,并可以在本地登陆和关闭域控制器。
- 账号操作组(Account Operators)的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登陆域控制器,但是,不能更改属于Administrations或Domain Admins组的账户,也不能修改这些组。默认情况下,这些组没有成员。
- 服务器操作员(Server Operators)的成员可以管理域服务器,其权限包括建立/管理/删除任意服务器的共享目录、管理网络打印机、备份任何服务器的文件、个刷服务器硬盘、锁定服务器、变更服务器的系统时间、关闭域控制器等。在默认情况下,改组没有成员。
- 备份操作员组(Backup Operators )的成员可以在域控制器中执行备份和还原操作,并可以在本地登录和关闭域控制器。在默认情况下,该组没有成员。
再介绍几个主要的全局组、通用组的权限
域管理员组(Domain Admins)的成员再所有加入域的服务器(工作站)、域控制器和活动目录中均默认拥有完整的管理员权限。因为该组会被添加到自己所在域的Administrators组中,因此可以继承Administrators组的所有权限。同事,该组默认会被添加到每台域成员计算机的本地Administrators组中,这样,Domain Admins组就获得了域中所有计算机的所有权。如果希望某用户成为域系统管理员,建议将该用户添加到Domain Admins组中,而不要直接将该用户添加到Administrators组中。
企业系统管理员组( Enterprise Admins )是域森林根域的一个组。该组在域森林中的每个域内都是Administrators组的成员,因此对所有域控制器都有完全访问权。
架构管理员组(Shema Admins)是域森林根域中的一个组,可以修改活动目录和域森林的模式。该组是为活动目录和域控制器提供完整权限的域用户组,因此,该成员的资格是非常重要的。
域用户组(Domain Users)中是所有的域成员。在默认情况下,任何由我们建立的用户账号都属于Domain Users组,而任何由我们建立的计算机账号都属于Domain Computers组。因此,如果想让所有的账号都获得某种资源存取权限,可以将该权限指定给域用户组,或者让域用户组属于具有该去权限的组。域用户组默认是内置域Users组的成员。