栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

AD枚举(含简单脚本)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AD枚举(含简单脚本)

利用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"------------------------"

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/729159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号