LDAP搜索

LDAP查找 位操作

userAccountControl为例,CN=User-Account-Control,CN=Schema,CN=Configuration,DC=muxue,DC=com

https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties

属性标志 十六进制值 十进制值
SCRIPT 0x0001 1
ACCOUNTDISABLE 0x0002 2
HOMEDIR_REQUIRED 0x0008 8
锁定 0x0010 16
PASSWD_NOTREQD 0x0020 32
PASSWD_CANT_CHANGE 无法通过直接修改 UserAccountControl 属性来分配此权限。 若要了解如何以编程方式设置权限,请参阅属性 标志说明 部分。 0x0040 64
ENCRYPTED_TEXT_PWD_ALLOWED 0x0080 128
TEMP_DUPLICATE_ACCOUNT 0x0100 256
NORMAL_ACCOUNT 0x0200 512
INTERDOMAIN_TRUST_ACCOUNT 0x0800 2048
WORKSTATION_TRUST_ACCOUNT 0x1000 4096
SERVER_TRUST_ACCOUNT 0x2000 8192
DONT_EXPIRE_PASSWORD 0x10000 65536
MNS_LOGON_ACCOUNT 0x20000 131072
SMARTCARD_REQUIRED 0x40000 262144
TRUSTED_FOR_DELEGATION 0x80000 524288
NOT_DELEGATED 0x100000 1048576
USE_DES_KEY_ONLY 0x200000 2097152
DONT_REQ_PREAUTH 0x400000 4194304
PASSWORD_EXPIRED 0x800000 8388608
TRUSTED_TO_AUTH_FOR_DELEGATION 0x1000000 16777216
PARTIAL_SECRETS_ACCOUNT 0x04000000 67108864

如果一个账户,有LOCKOUT,以及NOT_DELEGATED,其他的位都没有,那这个用户的属性userAccountControl的值就为0x0010+0x100000

如果我们要搜索域中所有设置了NOT_DELEGATED的所有对象,就得使用以下语法

<Attribute name>:<BitFilterRule-ID>:=<decimal comparative value>

  • Attribute name:属性名称
  • BitFilterRule-ID
    https://docs.microsoft.com/zh-cn/windows/win32/adsi/search-filter-syntax?redirectedfrom=MSDN

  • decimal comparative value:十进制比较值

有两种按位运算 可扩展匹配规则,andor

我们尝试搜索带有TRUSTED_FOR_DELEGATION属性的对象

设置此标志后,Kerberos 委派信任运行服务的服务帐户(用户或计算机帐户)。任何此类服务都可以模拟请求该服务的客户端。要为 Kerberos 委派启用服务,您必须在服务帐户的 userAccountControl 属性上设置此标志

AdFind.exe -b dc=muxue,dc=com -f "(userAccountControl:1.2.840.113556.1.4.803:=524288)" -dn

AdFind也提供了一种简单的方法

LDAP查找 objectCategory和objectClass

objectClass

上个文我们说过这个类的,可以寻父类

CN=WIN7,CN=Computers,DC=muxue,DC=comobjectClasstop,person,organizationalPerson,user,我们可以通过(objectClass=user),(objectClass=organizationalPerson)都可以找到这个对象(别用top,因为所有类都是他的子类)

-c是计数

objectCategory

在Windows Server 2008之前默认不对objectClass属性进行索引。对objectCategory建立索引

他包含的对象是其实例的类或其父类之一的专有名称;创建对象时,系统会将其objectCategory属性设置为由其defaultObjectCategory属性的值。无法更改objectCategory属性。

CN=iis,CN=Users,DC=muxue,DC=com,dc.muxue.comdefaultObjectCategory属性值就是CN=Person,CN=Schema,CN=Configuration,DC=muxue,DC=com

如果我们想过滤所有objectCategory属性的值为CN=Person,CN=Schema,CN=Configuration,DC=muxue,DC=com的对象,我们就可以直接指定过滤条件为(objectCategory="CN=Person,CN=Schema,CN=Configuration,DC=muxue,DC=com")

我们也可以指定lDAPDisplayName属性的值查询

查询组

AdFind.exe -b dc=muxue,dc=com -bit -f "(objectclass=group)" -c



查询到有46个组

查找组的类型通过groupType决定

我以域本地组做例子

组范围

  • 全局组
  • 域本地组
  • 通用组
组类型 可以授予权限 可包含 可包含于 成员是否在全局编录复制
全局组 在同一林中或信任域或林中的任何域上。 来自同一域的帐户。 来自同一域的其他全局组 来自同一林中任何域的通用组。 来自同一域的其他全局组。 来自同一林中任何域或任何信任域的域本地组。
通用组 在同一林或信任林中的任何域上。 来自同一林中任何域的帐户。 来自同一林中任何域的全局组。 来自同一林中任何域的其他通用组。 同一林中的其他通用组。 在同一个林或信任林中域本地组。
域本地组 在同一个域中 来自任何域或任何受信任域的帐户。 来自任何域或任何受信任域的全局组。 来自同一林中任何域的通用组。 来自同一域的其他域本地组。 来自同一域的其他域本地组。

直接抄daiker的哈

常用组

  • Administrators(域本地组)

    拥有对整个域最大的控制权,可以执行整个域的管理任务。Administrators包括Domain AdminsEnterprise Admins

  • Enterprise Admins(通用组)

    域林中,只有林根域才有这个组,林中其他域没有这个组,但是其他域默认会把这个组加入到本域的Administrators里面去。

  • Domain Admins(全局组)

    也就是域管,默认域内所有机器会把Domain Admins加入到本地管理员组里面。

  • Domain Users(全局组)

    也就是普通域用户。默认域内所有机器会把Domain Users加入到本地用户组里面

这也就是为什么默认情况底下,啥都不配置。域用户可以登录域内任何一台普通成员机器。

其他更多参考:https://docs.microsoft.com/zh-cn/windows-server/identity/ad-ds/plan/security-best-practices/appendix-b--privileged-accounts-and-groups-in-active-directory

组应用策略

A表示用户账号,G表示全局组,U表示通用组,DL表示域本地组,P表示资源权限。

常见的组应用策略:

  1. AGP:将用户账户添加到全局组,然后赋予权限

  2. ADLP:将用户账户添加到域本地组,然后赋予权限

  3. AGLP:将用户账户添加到全局组,将全局组添加到本地组, 然后赋予本地组权限

  4. AGDLP:将用户账户添加到全局组,将全局组添加到域本地组, 然后赋予域本地组权限

  5. AGUDLP:将用户账户添加到全局组,将全局组添加到通用组,将通用组添加到域本地组, 然后赋予域本地组权限

参考链接:https://blog.51cto.com/ilanni/557207

查询组内用户以及用户所属的组

这里感谢daiker师傅 遇到了一些问题给俺解答

架构

如果group2group1的成员

那么group2有个memberOf属性,标识group2group1的成员

group1有个member属性标识group2是它的成员。

根据membermemberOf这俩属性 我们就可以用来当作过滤条件了

查询group1有哪些成员

AdFind.exe -b dc=muxue,dc=com -f "(memberof="CN=group1,OU=IT,DC=muxue,DC=com")" -dn
AdFind.exe -b cn=group1,ou=it,dc=muxue,dc=com member

查询u1属于哪个组

AdFind.exe -b DC=muxue,DC=com -f "(member="CN=u1,OU=IT,DC=muxue,DC=com")" -dn
AdFind.exe -b CN=u1,OU=IT,DC=muxue,DC=com memberof

OU

组织单位 (OU) 是Active Directory 中的一个细分,您可以在其中放置用户、组、计算机和其他组织单位。您可以创建组织单位来反映您组织的职能或业务结构。每个域都可以实现自己的组织单位层次结构。像我上面的IT就是一个OU

OU跟容器的区别

OU是专用容器,与常规容器的区别在于管理员可以将组策略应用于OU,然后系统将其下推到OU中的所有计算机。而普通容器是不能应用组策略的

所以可以将组策略应该于Domain Controllers,而Domain Computers是不能应用组策略的

OU和组的区别

这俩完全不一样,组是权限的集合,OU是管理对象的集合。

假如我们想给一个部门下发些东西,可以拉进一个OU里,然后进行集中管理。

查询OU

所有的OU都是organizationalUnit类的实例,所以可以用(objectClass=organizationalUnit)或者(objectCategory=organizationalUnit)来指定这个类

AdFind.exe -b dc=muxue,dc=com -f "(objectClass=organizationalUnit)" -dn
AdFind.exe -b dc=muxue,dc=com -f "(objectCategory=organizationalUnit)" -dn
AdFind.exe -b ou=it,dc=muxue,dc=com -dn

Windows协议 LDAP篇 - 组&OU的更多相关文章

  1. Windows协议 LDAP篇 - Actite Directory

    LDAP简介 先说下ldap,轻量目录访问协议.LDAP就是设计用来访问目录数据库的一个协议.也就是为了能访问目录数据库,ldap是其中一种协议 LDAP的基本模型 目录树:在一个目录服务系统中,整个 ...

  2. Windows协议 LDAP篇 - 域用户和计算机用户

    域用户 查询域用户 通过SAMR协议查询(net user就是通过这种协议查询的),samr也不是一种专门的协议,是一个RPC接口 在impacket里有个脚本samrdump.py,就是专门调用这个 ...

  3. Windows协议 LDAP篇 - 域权限

    windows 访问控制模型 也就是大名鼎鼎的ACM,access control mode 由两部分组成的. 访问令牌(access tokens) 其中包含有关登录用户的信息(User SID,G ...

  4. Windows协议 NTLM篇

    NTLM 基础 介绍 LM Hash & NTLM Hash Windows本身是不会存储明文密码的,只保存密码的hash 其中本机用户的密码hash是放在本地的SAM文件里面,域内用户的密码 ...

  5. Windows协议 Kerberos篇

    认证流程 角色 功能 Domain Controller 也就是域控 Key Distribution Center 秘钥分发中心,简称KDC,默认安装在域控里,包括AS.AD和TGS. Accoun ...

  6. Windows下LDAP服务器配置

    LDAP即轻量级目录访问协议(Lightweight Directory Access Protocol),基础知识不再赘述,本文主要记录我的配置与安装过程. LDAP for windows下载 o ...

  7. Windows 7 封装篇(一)【母盘定制】[手动制作]定制合适的系统母盘

    Windows 7 封装篇(一)[母盘定制][手动制作]定制合适的系统母盘 http://www.win10u.com/article/html/10.html Windows 7 封装篇(一)[母盘 ...

  8. SharePoint 2013 SqlException (0x80131904):找不到Windows NT 用户或组xxxx\administrator

    过程描述: 在SharePoint 2013里配置创建搜索服务应用程序时报错: 配置 Search Service 应用程序期间遇到错误. System.Data.SqlClient.SqlExcep ...

  9. Android Studio2.0 教程从入门到精通Windows版 - 入门篇

    http://www.open-open.com/lib/view/open1468121363300.html 本文转自:深度开源(open-open.com)原文标题:Android Studio ...

随机推荐

  1. Unity 异步加载 进度条

    当我们进行游戏开发时,时常会进行场景切换,如果下个场景较大,切换时就会出现卡顿现象,甚至看起来像是"死机",非常影响用户体验,我们这时就可以运用异步加载,在界面上显示加载的进度条以 ...

  2. 7.1、controller节点配置

    0.配置openstack版本yum源: yum install centos-release-openstack-rocky 1.安装 OpenStack 客户端: yum install pyth ...

  3. java.lang.Excetion,java.lang.RuntimeException,java.lang.Error有什么区别?

    Error类对象由Java虚拟机生成并抛出,Exception类对象由应用程序处理或抛出 Error表示恢复不是不可能但很困难的情况下的一种严重问题.比如说内存溢出.不可能指望程序能处理这样的情况. ...

  4. 记一次Struts中文乱码

    起因 最近公司一个智能家具的项目,需要开发后端,APP/WEB的所有请求通过HTPP发送到后台,后台通过socket连接到智能设备.公司只有一个Java技术栈的同事,而他负责设备方面,我只能赶鸭子上架 ...

  5. 64. Minimum Path Sum 动态规划

    description: Given a m x n grid filled with non-negative numbers, find a path from top left to botto ...

  6. 一、从GitHub浏览Prism示例代码的方式入门WPF下的Prism

    最近这段时间一直在看一个开源软件PowerToys的源码,里面使用Modules的开发风格让我特别着迷,感觉比我现在写代码的风格好了太多太多.我尝试把PowerToys的架构分离了出来,但是发现代码维 ...

  7. 交换机卡在CPU task进程处理方法

    故障现象: 笔记本通过console线连接H3C交换机的console口,无法登陆,敲任何东西都无效.因为没有备份,不敢重启.显示以下报错: <test-sw> wrong input! ...

  8. RWLock——一种细粒度的Mutex互斥锁

    RWMutex -- 细粒度的读写锁 我们之前有讲过 Mutex 互斥锁.这是在任何时刻下只允许一个 goroutine 执行的串行化的锁.而现在这个 RWMutex 就是在 Mutex 的基础上进行 ...

  9. 「AGC010F」 Tree Game

    「AGC010F」 Tree Game 传送门 切了一个 AGC 的题,很有精神. 于是决定纪念一下. 首先如果任意一个人在点 \(u\),他肯定不会向点权大于等于 \(a_u\) 的点走的,因为此时 ...

  10. DEV C++ CPU窗口

    push rbp#push实现压入操作的指令,将指定内存地址或操作数压入堆栈(先进后出)mov rbp,rsp# 将rsp所保存的地址或操作数送到目的操作数rbp(修改rbp内容)sub rsp,0x ...