滲透測試中搜集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中找到:http://adsecurity.org/wp-content/uploads/2015/04/NoVaPowerShellUsersGroup2015-ActiveDirectoryPowerShell.pdf
本文翻譯自:https://adsecurity.org/?p=3719 ,如若轉載,請註明來源於嘶吼: http://www.4hou.com/system/7485.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※什麼是對抗攻擊?
※恆星幣也被黑客盯上了,價值40多萬美元的恆星幣被盜
※Bypass WAF:使用Burp插件繞過一些WAF設備
※濫用系統Token實現Windows本地提權
※如何用一種最簡單的方式分析惡意軟體
TAG:信息安全 |