域渗透技巧

内网域信息收集

SPN的发现

前言:

由于每台服务器都需要注册用于Kerberos身份验证服务的SPN,因此这为在不进行大规模端口扫描的情况下收集有关内网域环境的信息提供了一个更加隐蔽的方法。

工具:

SetSPN查询:

windows系统自带的setspn可以查询域内的SPN

#查看当前域内所有的SPN:
setspn -Q */*
#查看指定域xie.com注册的SPN:
setspn -T xie.com -Q */*
setspn -X删除指定SPN
查找指定用户/主机名注册的SPN:setspn -L username/hostname

PowerShell-AD-Recon: 该工具包提供了一些探测指定SPN的脚本,例如Exchange,Microsoft SQLServer,Terminal等

#Discover-PSMSSQLServers.ps1的使用,扫描MSSQL服务
Import-Module .\Discover-PSMSSQLServers.ps1;Discover-PSMSSQLServers

#Discover-PSMSExchangeServers.ps1的使用,扫描Exchange服务
Import-Module .\Discover-PSMSExchangeServers.ps1;Discover-PSMSExchangeServers

#扫描域中所有的SPN信息
Import-Module .\Discover-PSInterestingServices.ps1;Discover-PSInterestingServices

GetUserSPNs.vbs:
GetUserSPNs 是 Kerberoast 工具集中的一个 vbs 脚本,用来查询域内用户注册的 SPN。

cscript .\GetUserSPNs.vbs

PowerView.ps1:
PowerView是 PowerSpolit 中 Recon目录下的一个powershell脚本,PowerView 相对于上面几种是根据不同用户的 objectsid 来返回,返回的信息更加详细。

Import-Module .\PowerView.ps1Get-NetUser -SPN

PowerShellery:
PowerShellery下有各种各样针对服务SPN探测的脚本。其中一些需要PowerShell v2.0的环境,还有一些则需要PowerShell v3.0环境。

#Powershellery/Stable-ish/Get-SPN/ 下Get-SPN.psm1脚本的使用,需要powershell3.0及以上版本才能使用
Import-Module .\Get-SPN.psm1Get-SPN -type service -search "*"Get-SPN -type service -search "*" -List yes | Format-Table

#Powershellery/Stable-ish/ADS/ 下Get-DomainSpn.psm1脚本的使用
Import-Module .\Get-DomainSpn.psm1Get-DomainSpn

RiskySPN中的Find-PotentiallyCrackableAccounts.ps1:
该脚本可以帮助我们自动识别弱服务票据,主要作用是对属于用户的可用服务票据执行审计,并根据用户帐户和密码过期时限来查找最容易包含弱密码的票据。

Import-Module .\Find-PotentiallyCrackableAccounts.ps1;Find-PotentiallyCrackableAccounts -FullData -Verbose

使用domain参数,将返回所有具有关联服务主体名称的用户帐户,也就是将返回所有SPN注册在域用户下的用户。

Import-Module .\Find-PotentiallyCrackableAccounts.ps1;Find-PotentiallyCrackableAccounts -Domain "xie.com"

过ids,ips的一些手工语法:

#将枚举Domain Admins组中所有成员
AdFind -b "CN=Domain Admins,CN=Users,DC=contoso,DC=com" member

#枚举adminCount 设置为1的所有帐户,现在,我们将运行LDAP查询,以查找至少属于一个受保护组的帐户。
AdFind.exe -default -f "(&(adminCount=1)(objectClass=user))" -dn

#枚举配置为无约束委派的所有服务器(不包括DC)
AdFind.exe -default -f "(&(objectCategory=computer)(!(primaryGroupID=516)(userAccountControl:1.2.840.113556.1.4.803:=524288)))" dnsHostName OperatingSystem lastlogonTimestamp pwdLastSet

#使用SPN枚举帐户
AdFind.exe -default -f "(&(objectCategory=user)(servicePrincipalName=*))" cn serviceprincipalname pwdlastset lastlogontimestamp

#枚举不受约束委派的帐户
AdFind.exe -default -f "(&(objectCategory=user)(userAccountControl:1.2.840.113556.1.4.803:=524288))"

#枚举AdminSDHolder容器上的DACL权限
AdFind -b "CN=AdminSDHolder,CN=System,DC=contoso,DC=com" -s base nTSecurityDescriptor -sddl++ -resolvesids

#枚举域根对象上的DACL
AdFind -b "DC=contoso,DC=com" -s base nTSecurityDescriptor -sddl++ -resolvesids

#枚举LAPS密码
AdFind.exe -default -f "(&(objectCategory=computer)(ms-MCS-AdmPwd=*))" dnsHostName ms-Mcs-AdmPwd

#枚举禁用Kerberos预身份验证的帐户
一旦禁用了预身份验证,攻击者就可以为任何用户请求身份验证数据,并且域控制器将返回可以离线暴力破解的加密TGT。此命令将查找禁用了Kerberos预身份验证的帐户。
AdFind.exe -default -f "(&(objectCategory=person)(objectClass=user)(userAccountControl:
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值