域渗透之域内结构和概念

由安全客直播视频整理,视频链接  https://www.anquanke.com/post/id/196238


0X00 内容

  • Active Directory
  • 用户,计算机,组,OU

0X01 Active Directory

1、目录服务

  • 目录服务:是由目录服务数据库(是树状结构的数据库,和MySQL等表状结构数据库有差别)和一套访问协议组成
  • 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树
  • 条目:树中的每个节点是一个条目
  • DN:每个条目有自己的唯一可区别的名称(DN)。比如 uid=bob,ou=people,dc=acme,dc=org

目录服务是一套标准,不同的厂商有不同的实现

厂商 产品 介绍
SUN SUNONE Directory Server 基于文本数据库的存储,速度快
IBM IBM Directory Server 基于DB2的数据库,速度一般
Novell Novell Directory Server 基于文本数据库的存储,速度快,不常用到
Microsoft Microsoft Active Directory 基于Windows系统用户,对大数据量处理速度一般,但维护容易,生态圈大,管理相对简单
Opensource Opensource OpenLDAP开源的项目,速度很快,但是非主流应用

2、Active Directory

  • 是微软对目录服务的实现
  • LDAP:Lightweight Directory Access Protocol,是设计用来对目录服务数据库的访问的协议
  • Active Directory存储着整个域内所有的计算机,用户等的所有信息

3、访问Active Directory

  • 本域:域内的每一台域控都有一份完整的本域的Active Directory,可以通过连接域控的389、636端口(636端口是LDAPS)来进行连接、查看、修改
  • 同林下的其他域:如果用户知道某个对象处于哪个域,也知道对象的标识名,那么通过上面第一种方式搜索对象就非常容易。但是考虑到这种情况,不知道对象所处的域,我们不得不去域林中的每个域搜索。为了解决这个问题,微软提出全局编录服务器(GC,Global Catalog),全局编录服务器中除了保存本域中所有对象的所有属性外,还保存林中其他域所有对象的部分属性,这样就允许用户通过全局编录信息搜索林中所有域中对象的信息。也就是说如果需要在整个林中进行搜索,而不单单是在具体的某个域进行搜索的时候,可以连接域控的3268、3269端口
  • 工具:ADSI编辑器、ADExplorer、The LDAP Explorer、Ldapsearch、adfind与admod

ADSI编辑器

ADExplorer

4、过滤

  • BaseDN:整个活动目录是一个树状数据库,BaseDN指定从这棵树的哪个节点开始搜索,以这个节点为根节点,向下开始搜索
  • 过滤规则:
  1. &:表示AND运算符
  2. |:表示OR运算符
  3. !:表示NOT运算符
  4. =:表示相等
  5. *:用名称和值表达式中值的开头或结尾处的星号(*)表示通配符

0X02 用户,计算机,组,OU

1、用户

  • 域用户
  • 本地用户:登录的话,需在用户名前加主机名,如"hostName\userName",如果主机名记不住,可以用“.”来代替,即“.\userName”

2、用户常见属性介绍

  • displayName
  • objectSid
  • userPrincipalName
  • sAMAccountName
  • whenCreateds
  • pwdLastSet
  • Lastlogon:这个属性值在不同的域控制器上是不会同步的。所以要查询一个用户的最后登录时间,得指定不同的域控制器来查询。

3、如果有一台机子,这台机子在域内,但是当前用户不是域用户,而是本地用户,接下来这么办?

  • 可以提权至system
  • 每个加入域的计算机,本地的SYSTEM用户对应域内的计算机账户,用户名是主机名$。域控不存储本地用户的凭据。
  • ...

4、为什么刚搭建完的域,域用户默认可以登录域内任何一台普通成员机器?

一起来看一下。我们自己搭建一个域环境,以域用户登录

查看本地安全策略,需要管理员权限,命令是“secpol.msc”

在允许本地登录属性中,有Users组

“计算机右键-管理”查看Users组的成员,包含域用户,所以这也就解释了,为什么刚搭建完的域,域用户可以默认登录到域内的任意一台机器。

这种情况的缓解方法

  • 在允许本地登录的属性中,将Users组删掉。可以通过下发组策略来实现
  • 如下图,在域控中,可以指定用户登录到哪台机器

5、查找用户正在登录的主机

  • 方法1:利用NetSessionEnum来寻找网络连接Sessions。此函数不需要高权限
  • 方法2:利用NetWkstaUserEnum来枚举登录的用户。此函数需要管理员权限
  • 方法3:利用枚举注册表来查看,获取正在登录用户的SID,再通过SID转成用户来查看。不需要高权限。Server才会开远程注册表,PC默认不开

通过SID获取登录用户可以采用如下脚本

//SID需要更改
//保存为.vbs脚本

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get("Win32_SID.SID='S-1-5-21-3XXXXX462-XXXXXX-9XXXXX0-1XXX'")
Wscript.Echo objAccount.AccountName
Wscript.Echo objAccount.ReferencedDomainName

直接执行会弹框,解决办法,以下面方法执行脚本即可

CScript vbsFileName.vbs

6、查看域用户登录过的主机

  • 方法1:查看邮件。邮件头部有一个字段,“X-Originating-IP”
  • 方法2:DCLog。已经拿下域控,精准打击。

在域控上,执行下面命令,导出日志

wevtutil epl Security C:\Users\Administrator\Desktop\1.evtx /q:"*[System[(EventID=4624)] and EventData[Data[@Name='LogonType']='3']]"   

提取日志

LogParser.exe -i:EVT -o:CSV "SELECT TO_UPPERCASE(EXTRACT_TOKEN(Strings,5,'|')) as USERNAME,TO_UPPERCASE(EXTRACT_TOKEN(Strings,18,'|')) as SOURCE_IP FROM C:\Users\John\Desktop\1.evtx" >C:\Users\John\Desktop\log.csv

要注意的是:登录日志信息在域控之间不会同步。所以在某一台域控上,查找信息再提取出来可能会不全。

7、组

  • 通信组:用于用户之间通信的组,使用通信组可以向一组用户发送电子邮件,通信组典型应用是Microsoft Exchange Server中的用户组。
  • 安全组:用来设置有安全权限相关任务的用户或者计算机账户集合。同时,安全组具有通信组的全部功能,也可用作电子邮件实体。当向安全组发送电子邮件时,会将邮件发给安全组的所有成员。

8、查询组

可以使用adfind.exe来查询指定组的成员。

9、OU

  • Organization Unit(组织单位,简称OU)是一个容器对象,可以把域中的对象组织成逻辑组,帮助网络管理员简化管理工作。
  • OU组织单位可以包含下列类型的对象:用户、计算机、工作组、打印机、应用程序、安全策略、文件共享、其他组织单位等。
  • 可以在组织单位基础上部署组策略,统一管理组织单位中的域对象。
  • 域架构可以通过以下比喻进一步理解:域可以形容为一座大楼;每个楼层好比组织单位;每个房间好比域对象,例如用户、计算机账户等;每个楼层中包含多个房间,可以理解为每个组织单位中包含多个域对象。

10、组织单位(OU)和组的区别

  • 相同点:组织单位和组都是容器,都是域服务的一种对象。
  • 不同点:
  1. 组织单位就像屋子,当同一个人在屋子里面时,这个人就不可能在商场、或者公园中。也就是说,一个人在一个组织单位中时,就不可能在另外的一个组织单位中。
  2. 组标识用户具备的权利和权限,用户可以在不同组中,将具备不同的权限,用户所具备的权限就是所有不同的组的权限的交集。
  3. 组织单位是体现管理模型,而组是权利和权限的集合。

 

发布了55 篇原创文章 · 获赞 1 · 访问量 2705

猜你喜欢

转载自blog.csdn.net/prettyX/article/details/103982923
今日推荐