欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

AD枚举(含简单脚本)

时间:2023-07-23
利用net命令查询用户及组信息

net user    #查询本地用户

net user /domian    #查询域用户

net user USERNAME /domain    #指定查询某域用户

net group /domain    #查询域用户组

利用powershell查询用户及组信息

利用powershell脚本,查询域控信息。

LDAP路径格式:LDAP://HostName[:PortNumber][/DistinguishedName]

第一部分:先获取LDAP路径信息。

利用System.DirectoryServices.ActiveDirectory.Domain类中的GetCurrentDomain()方法,获取域名信息,即HostName。

$domainObj = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()

取PdcRoleOwner属性中的内容。

$PDC = ($domainObj.PdcRoleOwner).Name

拼接LDAP路径。

$SearchString = "LDAP://"

$SearchString += $PDC + "/"

将域名格式替换为DN格式。例:b10d9.com 变成 DC=b10d9,DC=com

$DistinguishedName = "DC=$($domainObj.Name.Replace('.', ',DC='))"

拼接完成LDAP路径。例:LDAP://DC.b10d9.com/DC=b10d9,DC=com

$SearchString += $DistinguishedName

第二部分:设置搜索的根路劲

利用DirectorySearcher类,搜索对象为前面脚本获取的LDAP路径。

$Searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]$SearchString)

利用DirectoryEntry,确定域控根路劲。

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

设置Searcher类的SearchRoot参数为当前域控根路劲。

$Searcher.SearchRoot = $objDomain

第三部分:创建过滤器

根据不同查询需求,设置不同的过滤条件。

$Searcher.filter="samAccountType=805306368"

$Result = $Searcher.FindAll()

以下加入循环,将结果以容易阅读的方式输出所有用户每个属性的 。

Foreach($obj in $Result)

{

    Foreach($prop in $obj.Properties)

    {

        $prop

    }

    Write-Host "------------------------------------------------"

}

枚举已登录用户信息和会话

用到的API接口:NetWkstaUserEnum和NetSessionEnum

用到的脚本:PowerView.ps1

github:https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

命令说明:https://book.hacktricks.xyz/windows/basic-powershell-for-pentesters/powerview

枚举服务账户

SPN:即Service Principal Name。AD账户除了用户账户外,还有服务账户。应用程序也会有与之关联的服务账户,便于应用程序访问服务器资源,如exchange、SQL、IIS等。SPN则用于将应用程序启用的服务与AD中服务账户关联起来的一项服务。

通过枚举所有SPN,进一步获取服务器运行的所有服务的IP及端口。

备注:微软并未公开SPN,息但网上可以找到一些SPN清单。

修改脚本中过滤条件:

$Searcher.filter="serviceprincipalname=*http*"

完整脚本

$domainObj=[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()$PDC= ($domainObj.PdcRoleOwner).Name$SearchString="LDAP://"$SearchString+=$PDC+"/"$DistinguishedName="DC=$($domainObj.Name.Replace('.', ',DC='))"$SearchString+=$DistinguishedName$Searcher=New-ObjectSystem.DirectoryServices.DirectorySearcher([ADSI]$SearchString)$objDomain=New-ObjectSystem.DirectoryServices.DirectoryEntry$Searcher.SearchRoot =$objDomain# 根据需要设置不同的过滤条件$Searcher.filter="samAccountType=805306368"# 查询所有用户$Searcher.filter="serviceprincipalname=*http*"# 查询SPN$Searcher.filter="(name=Nested_Group)"# 查询用户组$Result=$Searcher.FindAll()# 循环条件,输出查询内容Foreach($objin$Result){    Foreach($propin$obj.Properties)    {        $prop    }    Write-Host"------------------------"}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。