1、概述
在這篇文章中,我們將討論不同的 Active Directory
對象及其基本概念,例如:
- 爲什麼域中需要
Active Directory
對象 - 如何創建它們?
- 如何枚舉
Active Directory
對象
Active Directory 對象
Active Directory
對象是一組表示域中資源的屬性。每個 Active Directory
對象都由唯一的 SID
(安全標識符)標識,被用來允許或拒絕對域中各種資源的訪問。讓我們討論一些屬於 Active Directory
的 AD
對象。
2、User Objects (用戶對象)
用戶對象被分配給域用戶帳戶,用於獲取域資源的訪問權限。如果您擁有管理用戶對象所需的權限,則可以從 Active Directory
用戶和計算機控制檯管理這些對象。用戶帳戶也用於運行程序或系統服務,並由用戶SID
識別,這與域SID
類似,它由域SID
和用戶RID
(相對標識符)組成。
PS C:\Users\scarred.monk> Get-ADUser Scarred.Monk DistinguishedName : CN=Scarred Monk,CN=Users,DC=rootdse,DC=lab Enabled : True GivenName : Scarred Name : Scarred Monk ObjectClass : user ObjectGUID : 2ba8220b-63db-4dda-b6de-095a7fa0da24 SamAccountName : Scarred.Monk SID : S-1-5-21-580985966-2115238843-2989639066-1107 Surname : Monk UserPrincipalName : [email protected]
用戶對象的 SID
在用戶的 SID
值中,S-1-5-21-580985966-2115238843-2989639066
是域 SID
(安全標識符),1107
是唯一標識它的用戶 RID
(相對標識符)。
一個SID
可以分爲以下幾個部分:
(SID)-(Revision Level)-(Identifier-Authority)-(Sub-Authority1)-(Sub-Authority2)...-(RID)
微軟對SID
組成部分的描述:
- SID:
SID
中的S
將上述字符串標識爲SID
- Revision level:
SID
結構的修訂版本。迄今爲止,這從未改變過並且一直是1
- **Identifier-Authority: **一個
48
位的頒發機構標識符,用於標識發佈/創建SID
的機構。 (在上述的例子中,標誌符頒發機構的值爲5
- Subauthority: 子頒發機構,這是一個變量編號,用於識別
SID
所描述的用戶或組與創建它的機構的關係。 - **RID:**相對標識符(
RID
),它能唯一標識相對於發佈SID
機構的帳戶和組。
在域環境中,你會在多個位置看到用戶 SID
,例如在事件查看器或 ACL 中。SID
也被用於安全描述符中,以存儲與權限有關的信息。
下面是事件日誌中用戶SID
的例子:
以下是註冊表中用戶SID
的一個例子:
你可以在 Microsoft Docs
中找到常見的 SID
列表。:https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/security-identifiers-in-windows#well-known-sids-all-versions-of-windows
然而,在企業環境中,一個用戶可以有一個以上的用戶賬戶來完成不同的任務。例如,一個組織中的系統管理員可以有多個不同的賬戶,如一個賬戶用於在分配給他們的筆記本電腦上工作,第二個賬戶用於在本地域工作,還有幾個賬戶用於在AD林中的其他域工作。
【----幫助網安學習,以下所有學習資料免費領!加vx:yj009991,備註 “博客園” 獲取!】
① 網安學習成長路徑思維導圖
② 60+網安經典常用工具包
③ 100+SRC漏洞分析報告
④ 150+網安攻防實戰技術電子書
⑤ 最權威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP客戶端安全檢測指南(安卓+IOS)
要獲取 Active Directory
域中所有用戶帳戶的詳細信息,我們可以使用以下命令:
PS C:\Users\scarred.monk> Get-ADUser -Filter *
這個命令的輸出信息非常多,因爲它包含了很多關於所有用戶的細節。爲了只獲取用戶的少數屬性,我們可以使用cmdlet
的Select-Object
(它的別名是Select
),只選擇我們感興趣的屬性,如SamAccountName
、SID
、enabled
(查看賬戶是否啓用/禁用)。
PS C:\Users\scarred.monk> Get-ADUser -f * |select SamAccountName, SID, enabled SamAccountName SID enabled -------------- --- ------- Administrator S-1-5-21-580985966-2115238843-2989639066-500 True Guest S-1-5-21-580985966-2115238843-2989639066-501 False krbtgt S-1-5-21-580985966-2115238843-2989639066-502 False MATRIX$ S-1-5-21-580985966-2115238843-2989639066-1103 True darkvortex$ S-1-5-21-580985966-2115238843-2989639066-1104 True SQLServiceAccount S-1-5-21-580985966-2115238843-2989639066-1105 True Scarred.Monk S-1-5-21-580985966-2115238843-2989639066-1107 True
這裏可以使用Filter
參數獲取用戶信息。Filter
參數使用PowerShell
表達式來編寫 Active Directory
查詢字符串。使用 -F
同-Filter
。
下面是使用 Filter
參數查找以 admin*
開頭的用戶帳戶的示例:
PS C:\Users\scarred.monk> Get-ADUser -Filter 'Name -like "admin*"' DistinguishedName : CN=Administrator,CN=Users,DC=rootdse,DC=lab Enabled : True GivenName : Name : Administrator ObjectClass : user ObjectGUID : 061b1157-9a8d-4a34-9304-563a08e3883c SamAccountName : Administrator SID : S-1-5-21-580985966-2115238843-2989639066-500
當你以域用戶身份登錄時,域計算機(在其上進行登錄嘗試)將請求發送到域控制器以進行身份驗證,並詢問域控制器爲用戶帳戶分配了哪些權限。驗證後,計算機會收到來自域控制器的響應,並使用適當的權限和限制讓你登錄。這是因爲域用戶帳戶的憑據信息存儲在域控制器上,而不是用戶登錄的本地計算機上。
如果要創建新用戶可以使用 Cmdlet
的New-ADUser
命令:
PS C:\> New-ADUser -Name "AD User" -GivenName AD -Surname User -SamAccountName ad.user -UserPrincipalName [email protected] -AccountPassword (ConvertTo-SecureString password@123 -AsPlainText -Force) -PassThru
3、Computer Objects(計算機對象)
計算機對象代表加入域並由用戶用於登錄域的機器。當用戶以域用戶身份登錄計算機時,計算機對象將充當向域驗證用戶身份的媒介。因此,如果計算機對象從域中刪除,用戶將無法登錄,因爲計算機將無法訪問域控制器。
PS C:\Users\scarred.monk> Get-ADComputer -f * DistinguishedName : CN=RDSEDC01,OU=Domain Controllers,DC=rootdse,DC=lab DNSHostName : RDSEDC01.rootdse.lab Enabled : True Name : RDSEDC01 ObjectClass : computer ObjectGUID : 032428f5-d629-451b-9d1d-46fce3ec0677 SamAccountName : RDSEDC01$ SID : S-1-5-21-580985966-2115238843-2989639066-1000 UserPrincipalName : DistinguishedName : CN=SQLSERVER,CN=Computers,DC=rootdse,DC=lab DNSHostName : Enabled : True Name : SQLSERVER ObjectClass : computer ObjectGUID : d4a1bca9-d729-4d61-90d3-ff33ea9f0c1e SamAccountName : SQLSERVER$ SID : S-1-5-21-580985966-2115238843-2989639066-1106
所有計算機對象都有自己的機器用戶,以$
結尾。
在這個例子中,計算機對象RDSEDC01
的機器賬戶是RDSEDC01$
,這些帳戶在域中執行自己的操作。
域中具有三種可以算作計算機對象的對象:
- 域控制器
- 域計算機(工作站)
- 成員服務器
域控制器
域控制器是一個集中式 Windows
服務器,它通過託管 Active Directory
域並向客戶端提供身份驗證和目錄服務來管理域。域控制器只能處理單個域的身份驗證請求,但它也可以存儲來自林中其他域的對象的部分只讀副本(如果它被啓用爲全局編錄服務器)。
要檢查域控制器,我們可以使用以下命令:
PS C:\Users\scarred.monk> Get-ADDomainController ComputerObjectDN : CN=RDSEDC01,OU=Domain Controllers,DC=rootdse,DC=lab DefaultPartition : DC=rootdse,DC=lab Domain : rootdse.lab Enabled : True Forest : rootdse.lab HostName : RDSEDC01.rootdse.lab InvocationId : 85a56dee-48fe-4897-8941-50ed5a196849 IPv4Address : 192.168.209.110 IPv6Address : IsGlobalCatalog : True IsReadOnly : False LdapPort : 389 Name : RDSEDC01 NTDSSettingsObjectDN : CN=NTDS Settings,CN=RDSEDC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rootdse,DC=lab OperatingSystem : Windows Server 2019 Datacenter OperatingSystemHotfix : OperatingSystemServicePack : OperatingSystemVersion : 10.0 (17763) OperationMasterRoles : {SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster...} Partitions : {DC=ForestDnsZones,DC=rootdse,DC=lab, DC=DomainDnsZones,DC=rootdse,DC=lab, CN=Schema,CN=Configuration,DC=rootdse,DC=lab, CN=Configuration,DC=rootdse,DC=lab...} ServerObjectDN : CN=RDSEDC01,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=rootdse,DC=lab ServerObjectGuid : d50faf97-ee22-4724-b248-bf8eeda85c92 Site : Default-First-Site-Name SslPort : 636
域計算機(工作站)
域計算機可以由員工使用的個人計算機表示,例如屬於域的臺式機、筆記本電腦。就 Active Directory 而言,計算機對象與用戶對象非常相似,因爲計算機對象擁有用戶對象的所有屬性(計算機對象直接從用戶對象類繼承)。計算機出現在 Active Directory 中的原因很少,例如需要安全地訪問資源、利用 GPO 併爲其分配權限。
對象類會在後續的有關AD模式和LDAP的文章中詳細解釋
爲了加入 Active Directory
域並允許域用戶登錄到該域,域計算機需要一個安全通道來與域控制器通信。安全通道是指可以傳輸加密數據的經過身份驗證的連接。要創建安全通道,域計算機必須向域控制器提供域計算機帳戶的密碼。與用戶帳戶身份驗證類似,Active Directory
使用 Kerberos
來驗證計算機帳戶的身份。域控制器通過關聯的計算機對象及其存儲的密碼驗證受信任的域計算機。
要檢查域計算機,我們可以使用以下命令:
PS C:\Users\scarred.monk> Get-ADComputer -Filter *
成員服務器
域環境中的成員服務器提供不同的服務。這些服務器根據需要提供的服務類型安裝了一個或多個角色,例如 Exchange
服務器、Web
服務器、文件服務器、SQL
服務器等。它們可以是 Windows Server
操作系統或 Linux
操作系統。
要檢查成員服務器,我們可以使用以下命令:
PS C:\Users\scarred.monk> Get-ADComputer -Filter 'operatingsystem -like "*server*"'
讓我們來談談下一種 AD 對象,即組對象。
4、組對象
組對象用於包含許多不同的 Active Directory
對象,例如用戶、計算機和其他組。這樣做是爲了通過將權限分配給一組用戶/計算機而不是單個帳戶、爲組創建委派組策略、創建電子郵件分發列表等,使系統管理員的管理更容易。
例如,在一個組織中,不同的團隊有不同的組,並根據需要爲這些組分配不同的權限。假設有一個名爲“DB Admins”的組,該組有權登錄並在多個 SQL 服務器上執行少量數據庫操作、訪問多個 DB 文件共享等。當新用戶加入 DB 團隊時,IT 團隊會將用戶添加到該組 (DB ADmins) 中,這將爲新用戶提供其團隊成員擁有的所有訪問權限。它節省了 IT 團隊爲每個用戶單獨配置權限的時間。
要獲取 Active Directory
域中所有組的詳細信息,我們可以使用以下命令:
PS C:\Users\scarred.monk> Get-ADGroup -f * | Select-Object name name ---- Administrators Users Guests Print Operators Backup Operators Replicator Remote Desktop Users Network Configuration Operators Performance Monitor Users Performance Log Users Distributed COM Users IIS_IUSRS Cryptographic Operators Event Log Readers Certificate Service DCOM Access RDS Remote Access Servers RDS Endpoint Servers RDS Management Servers Hyper-V Administrators Access Control Assistance Operators Remote Management Users Storage Replica Administrators Domain Computers Domain Controllers Schema Admins Enterprise Admins Cert Publishers Domain Admins Domain Users Domain Guests Group Policy Creator Owners RAS and IAS Servers Server Operators Account Operators Pre-Windows 2000 Compatible Access Incoming Forest Trust Builders Windows Authorization Access Group Terminal Server License Servers Allowed RODC Password Replication Group Denied RODC Password Replication Group Read-only Domain Controllers Enterprise Read-only Domain Controllers Cloneable Domain Controllers Protected Users Key Admins Enterprise Key Admins DnsAdmins DnsUpdateProxy
組類型
-
分發組(Distribution Group)
分發組(通訊組)是用來在一個組中包括多個用戶。當一封電子郵件被髮送到一個分發組時,它將被髮送到該分發組中的所有用戶。例如。名稱爲
Corporate Office
的分發組將包括企業辦公室的所有用戶。當有人向該組發送電子郵件時,它將被髮送給所有公司辦公室員工。 -
安全組(Security Group)
與分發組類似,安全組可以包含用戶/計算機帳戶或組,用於向組中的用戶/計算機提供跨域/林的不同訪問和權限。例如,名爲
DBAdmins
的安全組可以包含數據庫操作團隊的所有成員,這些成員可能有權訪問多個 SQL 服務器和數據庫團隊的文件共享。當新的 DB 管理員加入團隊時,將用戶帳戶添加到DBAdmins
安全組將提供跨 SQL 數據庫的所有權限。要獲取有關安全組的詳細信息,我們可以使用
GroupCategory -eq "security"
這樣的過濾器:PS C:\Users\scarred.monk> Get-ADGroup -Filter {GroupCategory -eq "security"}
每個組類型有三個組作用域:
- **Domain local(本地域):**用於僅在創建它的域中管理對不同域資源的訪問權限。
- **Global(全局):**用於提供對另一個域中資源的訪問。一個全局組可以添加到其他全局和本地組。
- **Universal(通用):**用於定義角色和管理分佈在多個域中的資源。如果網絡連接了多個分支,則最好僅對很少更改的組使用通用組。
Active Directory
中的一些重要組如下:
Admin groups(管理員組)
最重要的組是域管理員(Domain Admin)和企業管理員(Enterprise Admins):
-
Domain Admin
(域管理員組)爲其域中的成員提供管理員權限。 -
Enterprise Admins
組提供整個林中的管理員權限。
AD中的其他重要羣組
除了上面兩個重要的組之外,還有其他一些重要的組,你應該注意:
-
Schema Admins:
Schema Admins
組的成員可以修改Active Directory
數據庫架構。該組擁有對Acitve Directory
架構的完全管理權限 -
DNSAdmins:如果 DNS 服務器角色安裝在域中的域控制器上,則
DNSAdmins
組的成員有權訪問/修改網絡 DNS 信息。 Shay Ber 發表了一篇文章https://medium.com/@esnesenon/feature-not-bug-dnsadmin-to-dc-compromise-in-one-line-a0f779b8dc83,解釋了DNSAdmins
組的成員如何以SYSTEM
用戶身份在域控制器中執行代碼(任意 DLL)。 -
Print Operators:如果您在
Print Operators
組中添加用戶,則該用戶帳戶可以登錄域控制器。 -
Protected Users:受保護的用戶組允許強制實施帳戶的安全。該組的成員在身份驗證過程中獲得了額外的保護,以防止憑據泄露。
-
Server Operators:
Server Operators
組的成員可以登錄到域控制器並管理其配置。它可以創建和管理該域中的用戶和組,但不可以管理服務器管理員賬戶。 -
Account Operators:
Account Operators
組的成員可以創建和修改大多數類型的帳戶,包括用戶、本地組和全局組的帳戶,並且成員可以本地登錄到域控制器。但是,帳戶操作員組的成員無法管理管理員用戶帳戶或管理員、Server Operators
,Account Operators
,Backup Operators
,和Print Operators
。 -
Backup Operators:
Backup Operators
的成員有權登錄、備份、恢復/修改域控制器中的文件。 -
Remote Desktop Users:該組的成員可以通過
RDP
登錄到域控制器。如果用戶已經有權在本地登錄域控制器,則將其添加到該組可以允許用戶通過RDP
遠程登錄域控制器。如果未啓用本地登錄並將其添加到此組,則您將看到以下警告: -
Group Policy Creator Owners:組策略創建者所有者的成員可以編輯域中的
GPO
。
以下是一些高價值組。這些組的成員默認擁有登錄域控制器的權限。如果這些組的賬戶被入侵,那麼AD域就很有可能被入侵。
Administrators Domain Admins Enterprise Admins Print Operators Backup Operators Account Operators
Custom groups(自定義組)
除此之外,組織還爲 IT 管理員、IT 服務檯、SQL 管理員、應用程序管理員等創建自定義特權組。此外,如果我們向服務器添加其他角色,則會創建組。就像我們添加 DHCP 角色時,創建了 DHCP 管理員組或安裝 Microsoft Exchange 時,添加了 Exchange 組織管理員和 Exchange Windows 權限組。要獲取詳細信息,在微軟的文檔中還有許多其他組的描述:https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/active-directory-security-groups#replicator
Shared Folders(共享文件夾)
共享文件夾也是 Active Directory
中的對象。在 AD 中發佈新共享時,會爲其創建一個對象。這對於 AD 用戶輕鬆找到所有共享非常有幫助。下面是在 AD 中發佈的共享文件夾的屏幕截圖:
對於滲透測試人員,可以枚舉共享以查看哪些是可訪問的以及存儲在那裏的數據。我們可以這樣枚舉共享:
PS C:\> Get-SmbShare Name ScopeName Path Description ---- --------- ---- ----------- ADMIN$ * C:\Windows Remote Admin C$ * C:\ Default share Corporate Files * C:\ADShares\Corporate Files Corporate Files data for 2020 DBA Backup * C:\ADShares\DBA Backup Romania DB Backup IPC$ * Remote IPC IT Tools * C:\ADShares\IT Tools IT Team Important Tools NETLOGON * C:\Windows\SYSVOL\sysvol\rootdse.org\SCRIPTS Logon server share Old Backup * C:\ADShares\Old Backup All Backup Operations Team * C:\ADShares\Operations Team Engineering Operations daily data Salary Details * C:\ADShares\Salary Details Finance Team 2020 Sales Data * C:\ADShares\Sales Data Latest Sales Team Shared folder SYSVOL * C:\Windows\SYSVOL\sysvol Logon server share PS C:\> net view \\RDSEDC01 Shared resources at \\RDSEDC01 Share name Type Used as Comment ------------------------------------------------------------------------------- Corporate Files Disk Corporate Files data for 2020 DBA Backup Disk Romania DB Backup IT Tools Disk IT Team Important Tools NETLOGON Disk Logon server share Old Backup Disk All Backup Operations Team Disk Engineering Operations daily data Salary Details Disk Finance Team 2020 Sales Data Disk Latest Sales Team Shared folder SYSVOL Disk Logon
在第下次文章中,我們將介紹組策略,它是 Active Directory
的重要元素之一。我們將討論什麼是組策略、爲什麼需要它們、如何創建它們、使用組策略可以實現什麼,並瞭解如何枚舉和破壞組策略。
搜索
複製