標籤:

滲透測試中搜集AD域信息的常用PS命令

Microsoft為Windows Server 2008 R2(及更新版本)提供了幾個Active Directory PowerShell cmdlet,相比於之前需要將涉及ADSI的冗長代碼行放在一起來執行任務,這樣的更新很大程度上簡化了相關的操作。

在Windows客戶端上,安裝遠程伺服器管理工具(RSAT),並確保安裝了Active Directory PowerShell模塊。

在Windows伺服器(2008 R2或更高版本)上,在PowerShell控制台(作為管理員啟動)中運行以下命令:

Import-Module ServerManager ; Add-WindowsFeature RSAT-AD-PowerShell

這是我寫的一個非常簡單的ADSI例子:

$UserID = 「JoeUser」$root = [ADSI]$searcher = new-object System.DirectoryServices.DirectorySearcher($root)$searcher.filter = "(&(objectClass=user)(sAMAccountName= $UserID))"$user = $searcher.findall()$usern

這段代碼的功能與下面的AD PowerShell cmdlet的功能是一樣的:

Import-module ActiveDirectoryn $UserID = 「JoeUser」n Get-ADUser $UserID –property *n

請注意,PowerShell版本3和更新的版本中,你不需要運行第一行了,因為Powershell將會識別必要的模塊並自動載入它。

一旦載入了Active Directory PowerShell模塊,你就可以像文件系統那樣做一些像瀏覽ADO這樣的很酷的事情。

查找有用的命令(Cmdlet):

發現可用的PowerShell模塊:Get-Module -ListAvailable

在PowerShell模塊中發現cmdlet: Get-Command -module ActiveDirectory

PowerShell AD模塊Cmdlet個數:

· Windows Server 2008 R2:76 個cmdlet

· Windows Server 2012:135 個cmdlet

· Windows Server 2012 R2:147個 cmdlet

· Windows Server 2016:147 個cmdlet

(Get-Command -module ActiveDirectory).countn

查找Active Directory營運主機(FSMO)角色:

Active Directory模塊:

· (Get-ADForest).SchemaMastern· (Get-ADForest).DomainNamingMastern· (Get-ADDomain).InfrastructureMastern· (Get-ADDomain).PDCEmulatorn· (Get-ADDomain).RIDMastern

.NET調用:

· ([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).SchemaRoleOwnern· ([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).NamingRoleOwnern· ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).InfrastructureRoleOwnern· ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).PdcRoleOwnern· ([System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()).RidRoleOwnern

Active Directory PowerShell模塊Cmdlet示例:

Get-RootDSE獲取並顯示有關LDAP伺服器(也就是域控制器)的信息。結果中有一些有趣的信息,例如DC的操作系統信息。

Get-ADForest會提供有關運行該命令的當前計算機所在的Active Directory林的一些信息。

Get-ADDomain會提供有關當前計算機所在域的一些信息。

Get-ADDomainController會提供指定的域控制器的計算機信息。

此cmdlet可以輕鬆查找指定站點中的所有DC或運行的操作系統版本。

Get-ADComputer提供了有關AD中計算機對象的大部分信息。

運行「-Prop *」顯示所有標準屬性。

Get-ADUser提供了你想要了解的某個AD用戶的大部分信息。

運行「-Prop *」顯示所有標準屬性。

Get-ADGroup提供了有關AD組的一些信息。通過運行以下命令查找所有安全組:

Get-ADGroup -Filter {GroupCategory -eq 『Security}n

Get-ADGroupMember枚舉並返回組成員。使用遞歸參數可以列舉出包括嵌套組的所有成員。

Get-ADGroupMember 『Administrators』 -Recursiven

這些cmdlet可以用於識別之前需要購買的產品或自定義腳本的情況。

以下示例可以找出無效(或過期)的計算機和用戶 – 在過去10天內未更改其密碼的帳戶。請注意,這是一個實驗性的示例。對於實際環境的檢查,建議將檢查計算機的時間更改為60至90天,檢查用戶的時間更改為180到365天。

查找不活躍的計算機

查找不活躍的用戶

枚舉域信任信息

獲取AD站點信息。

請注意,Windows 2012的模塊中包含了站點的cmdlet(Get-ADReplicationSite *)。

備份域GPO

請注意,這需要安裝組策略PowerShell模塊,該模塊與Active Directory模塊是分開的。

查找AD Kerberos服務帳戶

列舉庫存的域控制器

Get-ADDomainController–filter * | `select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | `format-table -auton

Get-ADReplicationPartnerMetadata(Windows Server 2012及更高版本)

Get-ADReplicationPartnerFailure提供了有關DC複製故障狀態的信息。

Get-ADReplicationUptodatenessVectorTable跟蹤域控制器之間的複製狀態。

這些示例以及更多的內容可以在這個PPT中找到:adsecurity.org/wp-conte

本文翻譯自:adsecurity.org/? ,如若轉載,請註明來源於嘶吼: 4hou.com/system/7485.ht 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

什麼是對抗攻擊?
恆星幣也被黑客盯上了,價值40多萬美元的恆星幣被盜
Bypass WAF:使用Burp插件繞過一些WAF設備
濫用系統Token實現Windows本地提權
如何用一種最簡單的方式分析惡意軟體

TAG:信息安全 |