Microsoft为Windows Server 2008 R2以及更高版本提供了多个Active Directory PowerShell cmdlet,例如:Get-Aduser、Get-Adcomputer和Get-a object等等,这些cmdlet可以帮助我们检索AD的许多信息,本篇文章主要介绍通过Windows Server 2008 R2/2012/2016或更高版本下通过Active Directory PowerShell cmdlet来进行域内信息收集的方法。
在使用Windows客户端上使用时,我们需要安装远程服务器管理工具(RSAT)并确保已安装Active Directory PowerShell模块,否则在导入模块时会出现以下报错提示:
关于确认是否已经安装Active Directory PowerShell我们可以通过以下命令来查看是否包含ActiveDirectory模块
Get-Module -ListAvailable
在Windows Server 2008 R2或者更高的版本的powershell控制台我们需要在使用之前执行以下命令将模块作为功能添加到服务器管理器中:
Import-Module ServerManager Add-WindowsFeature RSAT-AD-PowerShell
下面的演示接在Windows Server 2012上进行~
powershell v2.0及之前powershell版本,我们在使用时需要先导入ActiveDirectory模块,下面是一个简易的AD PowerShell cmdlet使用示例:
Import-Module ActiveDirectory $UserID = "Al1ex" Get-ADUser $UserID –property *
在PowerShell v3版本以及高版本,无需运行第一行命令,因为PowerShell将识别必要的模块和自动加载它,而且一旦加载了Active Directory PowerShell模块,就可以像浏览文件系统那样浏览AD,例如:
Ps> Import-module ActiveDirectory Ps> dir ad: Ps> set-location ad: Ps> set-location "dc=hacke,dc=testlab" Ps> dir
PowerShell AD模块的Cmdlet个数在各个操作系统中如下:
可以通过在powershell中执行以下命令来查看:
(Get-Command -module ActiveDirectory).count
WINDOWS SERVER 2008 R2主要的cmdlets:
WINDOWS SERVER 2012含以版本一些新的cmdlets:
我们可以通过在powershell下执行以下命令查看当前ActiveDirectory可用的cmdlet:
Get-Command -module ActiveDirectory
Import-Module ActiveDirectory Get-ADForest $ADForest.GlobalCatalogs
Import-Module ActiveDirectory Get-ADDomainController -filter { IsGlobalCatalog -eq $True}
Import-Module ActiveDirectory Get-ADDomainController -filter { IsGlobalCatalog -eq $False }
Get-ADForest用于获取森林信息,使用示例如下:
Import-Module ActiveDirectory Get-ADForest
也可以通过以下指令来获取:
Get-ADForest -Current LocalComputer
Get-ADForest -Current LoggedOnUser
Get-ADForest hacke.testlab
Get-ADRootDSE用于获取有关LDAP服务器的信息,使用示例如下:
Get-ADDomain用户获取域的信息,常用示例如下:
Get-ADDomain hacke.testlab
Get-ADDomain -Current LocalComputer
Get-ADDomain -Current LoggedOnUser
Get-ADDomainController用于获取域控信息,示例如下:
Get-ADDomainController -Discover -Site "Default-First-Site-Name"
或者也可以使用以下指令来查询:
Get-ADDomainController -Discover -Site "Default-First-Site-Name" -ForceDiscover
Get-AdComputer用于获取关于AD中计算机对象的信息,使用示例如下:
Get-ADComputer "WIN7-test" -Properties *
Get-ADUser用于获取AD用户的信息,使用示例如下:
Get-ADUser Al1ex -Properties *
Get-ADUser -Filter 'Name -like "*Al1*"' | FT Name,SamAccountName -A
这其实也可以这样用:
Get-ADUser -Filter 'Name -like "*Al1*"' | FT Name,SamAccountName -A
Get-ADUser -filter {ServicePrincipalName -like "*"} -property ServicePrincipalName
Get-ADGroup用于获取AD组的信息,使用示例如下:
Get-ADGroup administrators
get-adgroup -Identity S-1-5-32-544 -Properties member
get-adgroup -Filter 'GroupCategory -eq "Security" -and GroupScope -ne "DomainLocal"' //除去DomainLocal
Get-ADGroupMember用于获取AD组成员信息,使用示例如下:
get-adgroupmember -Identity administrators
get-adgroupmember "Enterprise Admins" -recursive
Get-ADDefaultDomainPasswordPolicy用于获取当前域密码策略,使用示例如下:
Get-ADDefaultDomainPasswordPolicy -Current LoggedOnUser
Get-ADDefaultDomainPasswordPolicy -Identity hacke.testlab
Get-ADReplicationSite用于获取AD站点信息,示例如下:
Get-ADReplicationSite -Filter *
get-adprincipalgroupmembership用于检索用户所属的组信息,使用示例如下:
Get-ADPrincipalgroupmembership -Identity Administrator
Get-ADTrust用于获取域信任关系,示例如下(笔者这里为单域,所以信息为空)
https://adsecurity.org/?p=3719
https://docs.microsoft.com/en-us/powershell/module/activedirectory/?view=winserver2012-ps
https://adsecurity.org/wp-content/uploads/2015/04/NoVaPowerShellUsersGroup2015-ActiveDirectoryPowerShell.pdf