<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Windows AD基礎知識

    VSole2022-06-14 15:37:35
    1、概述

    本文側重于從不同角度了解Windows Active Directory環境。如從管理員身份配置安全策略的角度、攻擊者繞過安全策略的角度、檢測攻擊者的角度。導致Active Directory受攻擊破壞的因素有很多,比如錯誤的配置、糟糕的維護程序以及管理員犯的其他很多錯誤。文章涉及基本和高級的概念、環境配置及攻擊,內容可能有點長,但是這有助于模擬不同的攻擊,模擬和了解紅隊的攻擊行為。

    2、什么是Active Directory

    Active Directory簡單來說,就是Microsfot提供的一項功能服務,它充當集中存儲庫并存儲與Active Directory 用戶、計算機、服務器和組織內的其他資源等對象相關的所有數據,它使系統管理員的管理變得容易。但它的主要功能是提供一種在域環境中對用戶和機器進行身份驗證的方法。使用 Active Directory,可以遠程管理用戶、工作站及其權限等資源。因此,它是一個可從網絡上的任何地方訪問的單一管理界面。它主要是 Microsoft Windows 的一項功能,但其他操作系統也可以加入其中,例如你可以在 Active Directory 環境中加入Linux 主機。

    3、什么是域

    簡而言之,域可以稱為共享公共 Active Directory 數據庫的所有 Active Directory 對象(如用戶、計算機、組等)的集合或結構,并由稱為域控制器的域的主服務器管理。域始終以其唯一的名稱來引用,并且具有正確的域名結構。

    域名示例:rootdse.lab

    此域名中的ROOTDSE代表其NetBIOS名稱

    我們可以將Active Directory基礎結構拆分成多個單獨的域,以創建更小的邊界,以便可以在大型網絡中分離不同域的管理任務。在Active Directory環境中,域還可以為管理某些設置(如密碼策略和帳戶鎖定策略)創建邊界,以便它們只能應用于域級別的域用戶帳戶。我們將在本系列的后面部分詳細討論組策略和錯誤配置的策略。

    域中包含的幾個重要組件:

    • 組、用戶、計算機等對象。
    • 身份認證服務
    • 組策略
    • DNS
    • DHCP
    # Active Directory PowerShell模塊

    通過在Powershell中導入Active Directory模塊,我們可以檢索有關域環境的基本信息。

    默認情況下,Active Directory模塊只存在于域控制器中,不存在工作站上。

    這些文件的路徑:C:\Windows\Microsoft.NET\assembly\GAC_64\Microsoft.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:\Users\scarred.monk> Get-ADDomain
    AllowedDNSSuffixes                 : {}ChildDomains                       : {matrix.rootdse.lab}ComputersContainer                 : CN=Computers,DC=rootdse,DC=labDeletedObjectsContainer            : CN=Deleted Objects,DC=rootdse,DC=labDistinguishedName                  : DC=rootdse,DC=labDNSRoot                            : rootdse.labDomainControllersContainer         : OU=Domain Controllers,DC=rootdse,DC=labDomainMode                         : Windows2016DomainDomainSID                          : S-1-5-21-580985966-2115238843-2989639066ForeignSecurityPrincipalsContainer : CN=ForeignSecurityPrincipals,DC=rootdse,DC=labForest                             : rootdse.labInfrastructureMaster               : RDSEDC01.rootdse.labLastLogonReplicationInterval       :LinkedGroupPolicyObjects           : {CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=rootdse,DC=lab}LostAndFoundContainer              : CN=LostAndFound,DC=rootdse,DC=labManagedBy                          :Name                               : rootdseNetBIOSName                        : rootdseObjectClass                        : domainDNSObjectGUID                         : 70b22e8c-d4e3-4690-b4e0-0998b0125fb2ParentDomain                       :PDCEmulator                        : RDSEDC01.rootdse.labPublicKeyRequiredPasswordRolling   : TrueQuotasContainer                    : CN=NTDS Quotas,DC=rootdse,DC=labReadOnlyReplicaDirectoryServers    : {}ReplicaDirectoryServers            : {RDSEDC01.rootdse.lab}RIDMaster                          : RDSEDC01.rootdse.labSubordinateReferences              : {DC=matrix,DC=rootdse,DC=lab, DC=ForestDnsZones,DC=rootdse,DC=lab, DC=DomainDnsZones,DC=rootdse,DC=lab, CN=Configuration,DC=rootdse,DC=lab}SystemsContainer                   : CN=System,DC=rootdse,DC=labUsersContainer                     : CN=Users,DC=rootdse,DC=lab
    

    要檢索域名,我們可以使用以下命令:

    PS C:\Users\scarred.monk> (Get-ADDomain).DNSRoot
    rootdse.lab
    
    # SID

    每個域都有一個唯一的 SID(安全標識符)來標識它。通常,SID 用于唯一標識安全主體,例如用戶帳戶、計算機帳戶或在安全上下文中運行的進程或用戶或計算機帳戶。 SID 在其范圍內(域或本地)是唯一的,并且永遠不會被重用。對于域帳戶,安全主體的 SID 是通過將域的 SID 與帳戶的相對標識符 (RID) 連接起來創建的。

    # RID

    RID(相對標識符)是Active Directory對象的安全標識符(SID)的一部分,用于唯一標識域中的帳戶或組。它在創建時分配給Active Directory對象。RIDSID的最后一部分。

    # FQDN( 完全合格域名/全稱域名)

    完全合格域名是域中特定主機的完整域名。

    FQDN包含兩部分:主機名+域名

    例如,如果域是 matrix.rootdse.lab,并且矩陣域中的計算機具有主機名 MTRXDC01,則該計算機的 FQDN 將是 mtrxdc01.matrix.rootdse.lab

    4、域控制器(Domain Controller)

    簡而言之,Active Directory域控制器承載對域中的身份驗證請求進行響應的服務。它對網絡上的用戶訪問進行身份驗證和驗證。當用戶和計算機帳戶登錄到網絡時,他們向域控制器進行身份驗證,域控制器驗證他們的信息(如用戶名、密碼),然后決定是允許還是拒絕這些用戶的訪問。域控制器是攻擊者的重要服務器和主要目標,因為它持有Active Directory環境的密鑰。每個域至少有一個域控制器(也可以有其他域控制器)。

    要檢查域控制器,我們可以使用以下命令:

    PS C:\Users\scarred.monk> (Get-ADDomainController).HostName
    RDSEDC01.rootdse.lab
    

    域控制器提供名稱解析服務,并負責將域數據庫中有關域對象的信息保持為最新。Active Directory數據庫存儲在文件C:\WINDOWS\NTDStds.dit中,該文件在域控制器中維護。如果此文件被盜,則有關Active Directory對象(如用戶、計算機、組、GPO等)的所有信息(包括用戶憑據)也會受到威脅。

    # 只讀域控制器

    出于備份目的,域控制器有三種類型,即主域控制器、只讀域控制器和附加域控制器。只讀域控制器(RODC)不允許對數據庫進行任何更改。如果是只讀域控制器,則必須在可寫域控制器上進行更改,然后將其復制到特定域中的只讀域控制器。只讀域控制器是為了解決在遠程位置的分支機構中常見的問題,這些分支機構可能沒有域控制器,或者物理安全性差、網絡帶寬差,或者沒有當地的專業知識來支持它。只讀域控制器的主要用途是促進來自遠程辦公分支機構的身份驗證,并允許用戶訪問域資源。

    5、域樹(Domain Tree)

    域樹表示為一系列以分層順序連接在一起的域,這些域使用相同的DNS命名空間。當我們將子域添加到父域時,會創建域樹。例如,有一個根域rootdse.lab,并向其添加了一個新的域矩陣(FQDN為matrix.rootdse.lab),一旦在兩者之間自動創建樹系信任,它就會成為同一域樹的一部分。信任將在下一節中解釋。

    6、森林(Forest)

    Active Directory林是共享公共架構的多個域樹的集合,所有域通過信任連接在一起。林中的每個域都可以有一個或多個域控制器,這些域控制器可以與其他域交互,也可以訪問來自其他域的資源。林的名稱與根域相同。如果林包含單個域,則該域本身就是根域。

    我們可以按如下方式檢查Active Directory中的林名稱:

    PS C:\Users\scarred.monk> Get-ADForest
    ApplicationPartitions : {DC=DomainDnsZones,DC=matrix,DC=rootdse,DC=lab, DC=ForestDnsZones,DC=rootdse,DC=lab, DC=DomainDnsZones,DC=rootdse,DC=lab}CrossForestReferences : {}DomainNamingMaster    : RDSEDC01.rootdse.labDomains               : {matrix.rootdse.lab, rootdse.lab}ForestMode            : Windows2016ForestGlobalCatalogs        : {RDSEDC01.rootdse.lab, MTRXDC01.matrix.rootdse.lab}Name                  : rootdse.labPartitionsContainer   : CN=Partitions,CN=Configuration,DC=rootdse,DC=labRootDomain            : rootdse.labSchemaMaster          : RDSEDC01.rootdse.labSites                 : {Default-First-Site-Name}SPNSuffixes           : {}UPNSuffixes           : {}
    

    通過從上面的輸出請求RootDomain屬性,可以過濾上面的命令以提取林名稱:

    PS C:\Users\scarred.monk> (Get-ADForest).RootDomain
    rootdse.lab
    

    同樣,我們可以使用此方法查看任何特定的屬性,方法是將整個命令放在括號中,然后鍵入要查看的屬性名稱。

    7、信任(Trusts)

    在林中,域通過稱為信任的連接相互連接。這就是為什么一個域的用戶能夠訪問其他域的資源。在 Active Directory 環境中,一旦在兩個域之間建立信任關系,它就會向跨實體的用戶、組和計算機授予對資源的訪問權限。這是通過連接域之間的身份驗證系統并允許身份驗證流量在它們之間流動來完成的。稍后將詳細討論這一點,以了解當一個域中的用戶請求訪問另一個域的資源時會發生什么,當前域控制器向用戶返回一個特殊的票證(用域間信任密鑰簽名),該票證指的是另一個域的域控制器。這部分會在后續的 Kerberos 部分詳細解釋。

    # 信任方向(單向或雙向)

    信托可以是單向的,也可以是雙向的。在單向信任域中,域一信任域二,這意味著域一是信任域,域二將是受信任域。某個域中的用戶訪問另一個域中的資源,該用戶需要在信任域中。下圖顯示了兩個域之間信任流的圖形表示。

    在雙向信任的情況下,所有域都可以與所有用戶共享資源,而不管它們屬于哪個域。顧名思義,信任是雙向的。當我們在兩個域(域一和域二)之間創建信任時,域一中的用戶帳戶將可以訪問域二中的資源,反之亦然。

    有各種類型的信任。信任可以是傳遞性的,也可以是非傳遞性的。下表解釋了不同類型的信任。

    # 森林中的傳遞信任:

    可傳遞信任擴展到林中的任何其他受信任域。

    例如:

    如果域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對象以及如何查詢它們。

    域控制器計算機用戶
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Dcsync在域環境中,不同域控制器之間,每 15 分鐘都會有一次域數據的同步。如果需要同步的數據比較多,則會重復上述過程。
    至少有一個勒索軟件攻擊者已經開始利用最近發現的PetitPotam NTLM中繼攻擊方法來接管全球各種網絡上的Windows域。攻擊的背后似乎是一個名為LockFile的新勒索軟件團伙,該團伙于7月首次出現,該團伙與該行業的其他團體有一些相似之處和參考。安全研究人員表示,攻擊者最初是通過Microsoft Exchange服務器訪問網絡的,但目前尚不清楚確切的方法。接下來,攻擊者利用新的Petit
    MalwareHunterTeam研究人員發現了首個勒索軟件RobbinHood的樣本,通過分析了解更多相關技術細節。
    組策略(GroupPolicy)是Microsoft Windows系統管理員為計算機和用戶定義的,用來控制應用程序、系統設置和管理模板的一種機制。
    內網滲透主要是基于前期外圍打點getshell的webserver,通過收集webserver上的信息,然后對其他內網主機進行口令上的攻擊,當然也有一些基于漏洞的攻擊。
    0x00 Preface內網滲透主要是基于前期外圍打點getshell的webserver,通過收集webserver上的信息,然后對其他內網主機進行口令上的攻擊,當然也有一些基于漏洞的攻擊。當然,概念是生澀難懂的,結合實際環境會有助于理解。實際上有很多優秀的集成化工具,很少會拆分開來單獨使用這些方法。當然,大多數情況下是要考慮免殺的,免殺時可能會將某一步操作拆分出來,單獨進行免殺和利用。
    0x00 Preface內網滲透主要是基于前期外圍打點getshell的webserver,通過收集webserver上的信息,然后對其他內網主機進行口令上的攻擊,當然也有一些基于漏洞的攻擊。當然,概念是生澀難懂的,結合實際環境會有助于理解。實際上有很多優秀的集成化工具,很少會拆分開來單獨使用這些方法。當然,大多數情況下是要考慮免殺的,免殺時可能會將某一步操作拆分出來,單獨進行免殺和利用。
    發現內網主機:10.10.10.2、10.10.10.4在meterpreter中輸入命令 shell 進入 成員服務器Winserver 2008-2 的命令行,使用命令查看網絡詳細情況meterpreter > shell. 通過這些信息可以判斷 成員服務器Winserver 2008-2 在 ocean.com 域中,根據 DNS 信息判斷域控主機 IP 為10.10.10.2設置路由使用 Nmap 對內網主機進行掃描meterpreter > background. msf5 exploit > route add 10.10.10.3 255.255.255.0 1. # 將被控機成員服務器Winserver 2008-2的IP添加到 MSF 中,這是給kali增加的路由,添加之后kali才才能找到內網主機
    組策略提供了操作系統、應用程序和活動目錄中用戶設置的集中化管理和配置。組策略的其中一個版本名為本地組策略,這可以在獨立且非域的計算機上管理組策略對象。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类