文章详情
ActiveDirectoryPowerShell
文章前言
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个数在各个操作系统中如下:
- Windows Server 2008 R2: 76 cmdlets
- Windows Server 2012: 135 cmdlets
- Windows Server 2012 R2: 147 cmdlets
- Windows Server 2016: 147 cmdlets
可以通过在powershell中执行以下命令来查看:
(Get-Command -module ActiveDirectory).count
WINDOWS SERVER 2008 R2主要的cmdlets:
- Get/Set-ADForest
- Get/Set-ADDomain
- Get/Set-ADDomainController
- Get/Set-ADUser
- Get/Set-ADComputer
- Get/Set-ADGroup
- Get/Set-ADGroupMember
- Get/Set-ADObject
- Get/Set-ADOrganizationalUnit
- Enable-ADOptionalFeature
- Disable/Enable-ADAccount
- Move-ADDirectoryServerOperationMasterRole
- New-ADUser
- New-ADComputer
- New-ADGroup
- New-ADObject
- New-ADOrganizationalUnit
WINDOWS SERVER 2012含以版本一些新的cmdlets:
- Get/Set-ADResourcePropertyListMember
- Get/Set-ADAuthenticationPolicy
- Get/Set-ADAuthenticationPolicySilo
- Get/Set-ADCentralAccessPolicy
- Get/Set-ADCentralAccessRule
- Get/Set-ADResourceProperty
- Get/Set-ADResourcePropertyList
- Get/Set-ADResourcePropertyValueType
- Get/Set-ADDCCloneConfigFile
- Get/Set-ADReplicationAttributeMetadata
- Get/Set-ADReplicationConnection
- Get/Set-ADReplicationFailure
- Get/Set-ADReplicationPartnerMetadata
- Get/Set-ADReplicationQueueOperation
- Get/Set-ADReplicationSite
- Get/Set-ADReplicationSiteLink
- Get/Set-ADReplicationSiteLinkBridge
- Get/Set-ADReplicationSubnet
- Get/Set-ADReplicationUpToDatenessVectorTable
- Sync-ADObject
我们可以通过在powershell下执行以下命令查看当前ActiveDirectory可用的cmdlet:
Get-Command -module ActiveDirectory
全局目录
森林全局目录
Import-Module ActiveDirectory Get-ADForest $ADForest.GlobalCatalogs
域DCS全局目录
Import-Module ActiveDirectory Get-ADDomainController -filter { IsGlobalCatalog -eq $True}
非域DCS全局目录
Import-Module ActiveDirectory Get-ADDomainController -filter { IsGlobalCatalog -eq $False }
基本使用
Get-ADForest
Get-ADForest用于获取森林信息,使用示例如下:
示例一:获取当前林信息
Import-Module ActiveDirectory Get-ADForest
也可以通过以下指令来获取:
Get-ADForest -Current LocalComputer
示例二:获取登录用户所处林信息
Get-ADForest -Current LoggedOnUser
示例三:获取指定域的林信息
Get-ADForest hacke.testlab
Get-ADRootDSE
Get-ADRootDSE用于获取有关LDAP服务器的信息,使用示例如下:
Get-ADRootDSE
Get-ADDomain
Get-ADDomain用户获取域的信息,常用示例如下:
示例一:获取指定域信息
Get-ADDomain hacke.testlab
示例二:获取当前域信息
Get-ADDomain -Current LocalComputer
示例三:获取当前登录域信息
Get-ADDomain -Current LoggedOnUser
Get-ADDomainController
Get-ADDomainController用于获取域控信息,示例如下:
示例一:获取当域控信息
Get-ADDomainController
示例二:使用discovery查看可用DC
Get-ADDomainController -Discover -Site "Default-First-Site-Name"
或者也可以使用以下指令来查询:
Get-ADDomainController -Discover -Site "Default-First-Site-Name" -ForceDiscover
示例三:获取给定站点中的所有全局目录
Get-ADComputer
Get-AdComputer用于获取关于AD中计算机对象的信息,使用示例如下:
示例一:获取域中指定计算机信息
Get-ADComputer "WIN7-test" -Properties *
示例二:获取域中所有的计算机主机
Get-ADComputer -Filter *
Get-ADUser
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
示例三:获取AD Kerberos服务帐户
Get-ADUser -filter {ServicePrincipalName -like "*"} -property ServicePrincipalName
Get-ADGroup
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
Get-ADGroupMember用于获取AD组成员信息,使用示例如下:
示例一:获取Administrator组成员信息
get-adgroupmember -Identity administrators
示例二:获取Enterprise Admins成员信息
get-adgroupmember "Enterprise Admins" -recursive
Get-ADDefaultDomainPasswordPolicy
Get-ADDefaultDomainPasswordPolicy用于获取当前域密码策略,使用示例如下:
示例一:获取域用户密码策略
Get-ADDefaultDomainPasswordPolicy -Current LoggedOnUser
示例二:获取指定域密码策略
Get-ADDefaultDomainPasswordPolicy -Identity hacke.testlab
Get-ADReplicationSite
Get-ADReplicationSite用于获取AD站点信息,示例如下:
Get-ADReplicationSite -Filter *
Get-ADPrincipalgroupmembership
get-adprincipalgroupmembership用于检索用户所属的组信息,使用示例如下:
Get-ADPrincipalgroupmembership -Identity Administrator
Get-ADTrust
Get-ADTrust用于获取域信任关系,示例如下(笔者这里为单域,所以信息为空)
Get-ADTrust -Filter *
参考链接
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
上一文章:fastadmin后台注入分析
相关推荐
- 11-09思路分享:windows权限维持场景中如何隐藏服
- 10-20懒惰使人进步:探索与发现的思维
- 10-21从报错信息泄露到使用ECS接口执行命令反弹s
- 10-21Windows下常见的内核溢出提权
- 05-11免杀入门混淆加密方法分析,看这一篇就够了。
- 05-24Vulnstack内网靶场渗透记录
- 05-19LightCMS文件上传
- 01-12常见的网络安全问题有哪些?包括哪些方面
- 05-13物联网设备常见的web服务器——uhttpd源码分
- 10-21Tomcat进程注入技术复现
- 11-10半途而废的测试(二)
- 10-26安全技术|域渗透之SPN
- 05-18lightcms后台RCE漏洞挖掘
- 05-12web安全之iframe标签安全防御问题