# 1、概述
本文側重于從不同角度了解Windows Active Directory環境。如從管理員身份配置安全策略的角度、攻擊者繞過安全策略的角度、檢測攻擊者的角度。導致Active Directory受攻擊破壞的因素有很多,比如錯誤的配置、糟糕的維護程序以及管理員犯的其他很多錯誤。文章涉及基本和高級的概念、環境配置及攻擊,內容可能有點長,但是這有助于模擬不同的攻擊,模擬和了解紅隊的攻擊行為。
# 2、什么是Active DirectoryActive Directory簡單來說,就是Microsfot提供的一項功能服務,它充當集中存儲庫并存儲與Active Directory 用戶、計算機、服務器和組織內的其他資源等對象相關的所有數據,它使系統管理員的管理變得容易。但它的主要功能是提供一種在域環境中對用戶和機器進行身份驗證的方法。使用 Active Directory,可以遠程管理用戶、工作站及其權限等資源。因此,它是一個可從網絡上的任何地方訪問的單一管理界面。它主要是 Microsoft Windows 的一項功能,但其他操作系統也可以加入其中,例如你可以在 Active Directory 環境中加入Linux 主機。
# 3、什么是域簡而言之,域可以稱為共享公共 Active Directory 數據庫的所有 Active Directory 對象(如用戶、計算機、組等)的集合或結構,并由稱為域控制器的域的主服務器管理。域始終以其唯一的名稱來引用,并且具有正確的域名結構。
域名示例:rootd.lab
此域名中的ROOTDSE代表其NetBIOS名稱
我們可以將Active Directory基礎結構拆分成多個單獨的域,以創建更小的邊界,以便可以在大型網絡中分離不同域的管理任務。在Active Directory環境中,域還可以為管理某些設置(如密碼策略和帳戶鎖定策略)創建邊界,以便它們只能應用于域級別的域用戶帳戶。我們將在本系列的后面部分詳細討論組策略和錯誤配置的策略。
域中包含的幾個重要組件:
組、用戶、計算機等對象。身份認證服務組策略DNSDHCP# Active Directory PowerShell模塊
通過在Powershell中導入Active Directory模塊,我們可以檢索有關域環境的基本信息。
默認情況下,Active Directory模塊只存在于域控制器中,不存在工作站上。
這些文件的路徑:C:WindowsMicrosoft.NETasmblyGAC_64Microsoft.ActiveDirectory.Management
默認情況下,此模塊需要在要啟用需要管理權限的 Active Directory powershell 模塊的客戶端計算機上安裝遠程服務器管理工具包 (RSAT)。每個域控制器都安裝了 RSAT。因此域控制器和成員服務器都安裝了內置的 Active Directory powershell 模塊。但是也有一種方法可以在工作站上使用它(無需安裝 RSAT),只需從域控制器復制 DLL 文件并將其導入到 powershell 會話中即可。
要在加入域的工作站上導入它,請從此處下載它(https://github.com/ScarredMonk/RootDSE-ActiveDirectory),然后使用Import-Module簡單地導入它,然后就可以使用此模塊中的任何命令。
Import-Module '.Microsoft.ActiveDirectory.Management.dll'
要檢索有關域的信息,我們可以使用以下命令:
PS C:Ursscarred.monk> Get-ADDomainAllowedDNSSuffixes : {}ChildDomains : {matrix.rootd.lab}ComputersContainer : CN=Computers,DC=rootd,DC=labDeletedObjectsContainer : CN=Deleted Objects,DC=rootd,DC=labDistinguishedName : DC=rootd,DC=labDNSRoot : rootd.labDomainControllersContainer : OU=Domain Controllers,DC=rootd,DC=labDomainMode : Windows2016DomainDomainSID : S-1-5-21-580985966-2115238843-2989639066ForeignSecurityPrincipalsContainer : CN=ForeignSecurityPrincipals,DC=rootd,DC=labForest : rootd.labInfrastructureMaster : RDSEDC01.rootd.labLastLogonReplicationInterval :LinkedGroupPolicyObjects : {CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=rootd,DC=lab}LostAndFoundContainer : CN=LostAndFound,DC=rootd,DC=labManagedBy :Name : rootdNetBIOSName : rootdObjectClass : domainDNSObjectGUID : 70b22e8c-d4e3-4690-b4e0-0998b0125fb2ParentDomain :PDCEmulator : RDSEDC01.rootd.labPublicKeyRequiredPasswordRolling : TrueQuotasContainer : CN=NTDS Quotas,DC=rootd,DC=labReadOnlyReplicaDirectoryServers : {}ReplicaDirectoryServers : {RDSEDC01.rootd.lab}RIDMaster : RDSEDC01.rootd.labSubordinateReferences : {DC=matrix,DC=rootd,DC=lab, DC=ForestDnsZones,DC=rootd,DC=lab, DC=DomainDnsZones,DC=rootd,DC=lab, CN=Configuration,DC=rootd,DC=lab}SystemsContainer : CN=System,DC=rootd,DC=labUrsContainer : CN=Urs,DC=rootd,DC=lab
【----幫助網安學習,以下所有學習資料關注我,私信回復“資料”獲取----】
?、?網安學習成長路徑思維導圖
?、?60+網安經典常用工具包
?、?100+SRC漏洞分析報告
?、?150+網安攻防實戰技術電子書
?、?最權威CISSP 認證考試指南+題庫
?、?超1800頁CTF實戰技巧手冊
?、?最新網安大廠面試題合集(含答案)
?、?APP客戶端安全檢測指南(安卓+IOS)
要檢索域名,我們可以使用以下命令:
PS C:Ursscarred.monk> (Get-ADDomain).DNSRootrootd.lab
# SID
每個域都有一個唯一的 SID(安全標識符)來標識它。通常,SID 用于唯一標識安全主體,例如用戶帳戶、計算機帳戶或在安全上下文中運行的進程或用戶或計算機帳戶。 SID 在其范圍內(域或本地)是唯一的,并且永遠不會被重用。對于域帳戶,安全主體的 SID 是通過將域的 SID 與帳戶的相對標識符 (RID) 連接起來創建的。
# RID
RID(相對標識符)是Active Directory對象的安全標識符(SID)的一部分,用于唯一標識域中的帳戶或組。它在創建時分配給Active Directory對象。RID是SID的最后一部分。
# FQDN( 完全合格域名/全稱域名)
完全合格域名是域中特定主機的完整域名。
FQDN包含兩部分:主機名+域名
例如,如果域是 matrix.rootd.lab,并且矩陣域中的計算機具有主機名 MTRXDC01,則該計算機的 FQDN 將是 mtrxdc01.matrix.rootd.lab
# 4、域控制器(Domain Controller)簡而言之,Active Directory域控制器承載對域中的身份驗證請求進行響應的服務。它對網絡上的用戶訪問進行身份驗證和驗證。當用戶和計算機帳戶登錄到網絡時,他們向域控制器進行身份驗證,域控制器驗證他們的信息(如用戶名、密碼),然后決定是允許還是拒絕這些用戶的訪問。域控制器是攻擊者的重要服務器和主要目標,因為它持有Active Directory環境的密鑰。每個域至少有一個域控制器(也可以有其他域控制器)。
要檢查域控制器,我們可以使用以下命令:
PS C:Ursscarred.monk> (Get-ADDomainController).HostNameRDSEDC01.rootd.lab
域控制器提供名稱解析服務,并負責將域數據庫中有關域對象的信息保持為最新。Active Directory數據庫存儲在文件C:WINDOWSNTDS tds.dit中,該文件在域控制器中維護。如果此文件被盜,則有關Active Directory對象(如用戶、計算機、組、GPO等)的所有信息(包括用戶憑據)也會受到威脅。
# 只讀域控制器
出于備份目的,域控制器有三種類型,即主域控制器、只讀域控制器和附加域控制器。只讀域控制器(RODC)不允許對數據庫進行任何更改。如果是只讀域控制器,則必須在可寫域控制器上進行更改,然后將其復制到特定域中的只讀域控制器。只讀域控制器是為了解決在遠程位置的分支機構中常見的問題,這些分支機構可能沒有域控制器,或者物理安全性差、網絡帶寬差,或者沒有當地的專業知識來支持它。只讀域控制器的主要用途是促進來自遠程辦公分支機構的身份驗證,并允許用戶訪問域資源。
# 5、域樹(Domain Tree)域樹表示為一系列以分層順序連接在一起的域,這些域使用相同的DNS命名空間。當我們將子域添加到父域時,會創建域樹。例如,有一個根域rootd.lab,并向其添加了一個新的域矩陣(FQDN為matrix.rootd.lab),一旦在兩者之間自動創建樹系信任,它就會成為同一域樹的一部分。信任將在下一節中解釋。
# 6、森林(Forest)Active Directory林是共享公共架構的多個域樹的集合,所有域通過信任連接在一起。林中的每個域都可以有一個或多個域控制器,這些域控制器可以與其他域交互,也可以訪問來自其他域的資源。林的名稱與根域相同。如果林包含單個域,則該域本身就是根域。
我們可以按如下方式檢查Active Directory中的林名稱:
PS C:Ursscarred.monk> Get-ADForestApplicationPartitions : {DC=DomainDnsZones,DC=matrix,DC=rootd,DC=lab, DC=ForestDnsZones,DC=rootd,DC=lab, DC=DomainDnsZones,DC=rootd,DC=lab}CrossForestReferences : {}DomainNamingMaster : RDSEDC01.rootd.labDomains : {matrix.rootd.lab, rootd.lab}ForestMode : Windows2016ForestGlobalCatalogs : {RDSEDC01.rootd.lab, MTRXDC01.matrix.rootd.lab}Name : rootd.labPartitionsContainer : CN=Partitions,CN=Configuration,DC=rootd,DC=labRootDomain : rootd.labSchemaMaster : RDSEDC01.rootd.labSites : {Default-First-Site-Name}SPNSuffixes : {}UPNSuffixes : {}
通過從上面的輸出請求RootDomain屬性,可以過濾上面的命令以提取林名稱:
PS C:Ursscarred.monk> (Get-ADForest).RootDomainrootd.lab
同樣,我們可以使用此方法查看任何特定的屬性,方法是將整個命令放在括號中,然后鍵入要查看的屬性名稱。
# 7、信任(Trusts)在林中,域通過稱為信任的連接相互連接。這就是為什么一個域的用戶能夠訪問其他域的資源。在 Active Directory 環境中,一旦在兩個域之間建立信任關系,它就會向跨實體的用戶、組和計算機授予對資源的訪問權限。這是通過連接域之間的身份驗證系統并允許身份驗證流量在它們之間流動來完成的。稍后將詳細討論這一點,以了解當一個域中的用戶請求訪問另一個域的資源時會發生什么,當前域控制器向用戶返回一個特殊的票證(用域間信任密鑰簽名),該票證指的是另一個域的域控制器。這部分會在后續的 Kerberos 部分詳細解釋。
# 信任方向(單向或雙向)
信托可以是單向的,也可以是雙向的。在單向信任域中,域一信任域二,這意味著域一是信任域,域二將是受信任域。某個域中的用戶訪問另一個域中的資源,該用戶需要在信任域中。下圖顯示了兩個域之間信任流的圖形表示。
在雙向信任的情況下,所有域都可以與所有用戶共享資源,而不管它們屬于哪個域。顧名思義,信任是雙向的。當我們在兩個域(域一和域二)之間創建信任時,域一中的用戶帳戶將可以訪問域二中的資源,反之亦然。
有各種類型的信任。信任可以是傳遞性的,也可以是非傳遞性的。下表解釋了不同類型的信任。
信任類型
屬性
信任方向
驗證
詳情
Tree-Root
Transitive
雙向
Kerberos V5 or NTLM
將新樹添加到林時自動創建
Parent-Child
Transitive
雙向
Kerberos V5 or NTLM
添加子域時自動創建
Shortcut
Transitive
單向或者雙向
Kerberos V5 or NTLM
手動創建。在林中使用以縮短信任路徑以提高身份驗證時間
Forest
Transitive
單向或者雙向
Kerberos V5 or NTLM
手動創建。用于在AD DS林之間共享資源。
# 森林中的傳遞信任:
可傳遞信任擴展到林中的任何其他受信任域。
例如:
如果域1信任域2,域2信任域3,則域1信任域3。
在這里,信任關系通過每個受信任域。因為它是可傳遞的信任,所以它允許域1中的用戶帳戶訪問域3中的資源,反之亦然(而不必在域1和域3之間創建額外的信任)
# 森林中的非傳遞性信任
在不可傳遞信任的情況下,與信任之外的域的關系受到限制。這意味著不允許其他域訪問信任之外的資源。他們將無法通過其身份驗證信息。
在上面的示例中,域1和域2之間建立了不可傳遞的信任關系,兩個域中的用戶帳戶都可以訪問另一個域中的資源。因此,當我們添加新的域3并在域2和域3之間創建信任時,域1中的用戶不會自動被允許訪問域3中的資源。
# 森林中的自動信任
默認情況下,當添加子域或添加域樹時,會自動創建雙向可傳遞信任。兩種默認信任類型是父子信任和樹根信任。
# 8、全局編錄 Global Catalog(GC)全局編錄用于執行全林搜索,因為全局編錄服務器包含所有對象的完整副本。默認情況下,域中的根域控制器被視為全局編錄服務器。為了加快對林中其他域中對象的查詢速度,全局編錄服務器具有其自己域的副本和其他域對象的只讀分區。假設我們必須從當前域以外的域中查詢特定用戶的描述屬性,在這種情況下,全局編錄將檢索它而無需查詢其他域的域控制器。
讓我們舉一個具有四個域的 Active Directory 林的示例,其中域1是根域:
由于域1是根域控制器,因此它保存當前域的完全可寫目錄分區:
全局編錄服務器在目錄數據庫文件(Ntds.dit)中保存其自己域的副本(完整且可寫)和林中所有其他域的部分只讀副本:
# 9、小結1、Active Directory是一種目錄服務,充當集中式存儲庫并保存與Active Directory對象相關的所有數據
2、Active Directory域是共享Active Directory數據庫的所有對象(如用戶、計算機、組等)的結構
3、域代表Active Directory林中的邏輯分區
4、SID(安全標識符)用于唯一標識用戶、計算機帳戶等安全主體
5、RID (Relative identifier) 是 SID 的最后一部分,用于唯一標識域內的帳戶或組
6、FQDN是域中特定主機的完整域名
7、域樹基本上是一系列按層次順序連接在一起的域
8、域控制器對網絡上的用戶訪問進行身份驗證和驗證
9、信任允許用戶、組和計算機訪問其他實體的資源
10、全局編錄包含所有對象的完整副本,在執行林范圍搜索時使用
在第2部分中,我們將介紹不同類型的Active Directory對象以及如何查詢它們。
本文發布于:2023-02-28 20:13:00,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167766301378887.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:activedirectory(activedirectory域服務).doc
本文 PDF 下載地址:activedirectory(activedirectory域服務).pdf
| 留言與評論(共有 0 條評論) |