Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Powermad — PowerShell MachineAccountQuota 和 DNS 利用工具 | Kitploit
工具/GitHubGitHub/kevin-robertson/powermad
权限提升侦察身份管理横向移动渗透测试身份验证红队
GitHubkevin-robertson/powermad

Powermad

PowerShell MachineAccountQuota 和 DNS 利用工具

查看仓库
1.5k1883年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Powermad_logo

PowerShell MachineAccountQuota 和 DNS 利用工具

维基

  • https://github.com/Kevin-Robertson/Powermad/wiki

博客文章

  • 超越 LLMNR/NBNS 欺骗 - 利用 Active Directory 集成的 DNS

函数

  • MachineAccountQuota 函数
  • DNS 函数
  • 动态更新函数
  • ADIDNS 函数
  • 其他函数

MachineAccountQuota 函数

默认的 Active Directory ms-DS-MachineAccountQuota 属性设置允许所有域用户向域中添加最多10个计算机账户。Powermad 包含一组函数,用于在不将实际系统附加到 AD 的情况下利用 ms-DS-MachineAccountQuota。

Get-MachineAccountAttribute

该函数可以返回计算机账户属性中填充的值。

示例:
  • 获取名为 'test' 的计算机账户的 'description' 属性值。
    Get-MachineAccountAttribute -MachineAccount test -Attribute discription

Get-MachineAccountCreator

该函数利用计算机账户上的 ms-DS-CreatorSID 属性返回用户名或 SID 列表及其关联的计算机账户。仅当计算机账户由非特权用户创建时,该属性才会被填充。

示例:
  • 获取所有已填充的 ms-DS-CreatorSID 属性列表。
    Get-MachineAccountCreator

Disable-MachineAccount

该函数可以禁用通过 New-MachineAccount 添加的计算机账户。使用此函数时应与创建该计算机账户的用户相同。

示例:
  • 禁用名为 test 的计算机账户。
    Disable-MachineAccount -MachineAccount test

Enable-MachineAccount

该函数可以启用通过 Disable-MachineAccount 禁用的计算机账户。使用此函数时应与创建该计算机账户的用户相同。

示例:
  • 启用名为 test 的计算机账户。
    Enable-MachineAccount -MachineAccount test

New-MachineAccount

该函数可以直接通过 LDAP 添加请求向域控制器添加新的计算机账户,而不会影响主机系统与 Active Directory 的附加状态。

LDAP 添加请求模拟了将系统加入域时使用的添加请求。设置了以下属性(大部分由 DC 验证):

  • objectClass = Computer
  • SamAccountName = 带尾随 $ 的计算机账户名
  • userAccountControl = 4096
  • DnsHostName = FQDN
  • ServicePrincipalName = 使用 FQDN 和账户名的 2 个 HOST 和 2 个 RestrictedKrbHost SPN
  • unicodePwd = 指定的密码

新的计算机账户可用于诸如利用分配给“Domain Computers”组的权限,或作为域枚举、DNS 利用等的附加账户。默认情况下,计算机账户没有本地登录权限。您可以直接使用接受网络凭据的工具/客户端,或者通过 'runas /netonly' 或 @harmj0y 的 Invoke-UserImpersonation/Invoke-RevertToSelf(包含在 PowerView 中)来使用。

  • https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon

使用标准用户创建的计算机账户会将 mS-DS-CreatorSID 填充为标准用户的 SID。

请注意,ms-DS-MachineAccountQuota 并不允许经过身份验证的用户从 AD 中删除已添加的计算机账户。如果您希望避免将此任务转交给客户端,则需要获取提升的权限来删除该账户。

示例:
  • 添加一个新的计算机账户
    New-MachineAccount -MachineAccount test

  • 使用 runas /netonly 使用添加的账户
    runas /netonly /user:domain\test$ powershell

Remove-MachineAccount

该函数使用特权账户删除计算机账户。

示例:
  • 使用域管理员凭据删除名为 test 的计算机账户
    Remove-MachineAccount -MachineAccount test -Credential $domainadmin

Set-MachineAccountAttribute

如果用户具有写权限,该函数可以填充通过 New-MachineAccount 添加的账户的部分属性。使用此函数时应与创建该计算机账户的用户相同。

以下是一些常见的具有写权限的属性列表:

  • AccountDisabled
  • description
  • displayName
  • DnsHostName
  • ServicePrincipalName
  • userParameters
  • userAccountControl
  • msDS-AdditionalDnsHostName
  • msDS-AllowedToActOnBehalfOfOtherIdentity
  • SamAccountName
示例:
  • 从 SamAccountName 属性中移除尾随的 '$'
    Set-MachineAccountAttribute -MachineName test -Attribute SamAccountName -Value test

  • 使用 runas /netonly 使用修改后的账户
    runas /netonly /user:domain\test powershell

Invoke-AgentSmith

该函数利用 New-MachineAccount 通过 MachineAccountQuota 从单个非特权账户递归创建尽可能多的计算机账户。详情请参见以下博客文章:

  • https://blog.netspi.com/machineaccountquota-transitive-quota

DNS 函数

默认情况下,经过身份验证的用户在 Active Directory 集成 DNS (ADIDNS) 区域上具有“创建所有子对象”权限。AD 区域中当前不存在的绝大多数记录都可以添加/删除。

动态更新函数

Invoke-DNSUpdate

该函数可用于在域控制器上配置了启用安全动态更新的默认设置时,添加/删除动态 DNS 记录。当前支持 A、AAAA、CNAME、MX、PTR、SRV 和 TXT 记录。Invoke-DNSUpdate 的建模基于 BIND 的 nsupdate 工具(当使用 '-g' 或 'gsstsig' 选项时)。

示例:
  • 添加 A 记录
    Invoke-DNSUpdate -DNSType A -DNSName www -DNSData 192.168.100.125

  • 删除 A 记录
    Invoke-DNSUpdate -DNSType A -DNSName www.test.local

  • 添加 SRV 记录
    Invoke-DNSUpdate -DNSType SRV -DNSName _autodiscover._tcp.test.local -DNSData system.test.local -DNSPriority 100 -DNSWeight 80 -DNSPort 443

ADIDNS 函数

Disable-ADIDNSNode

该函数可以墓碑化一个 ADIDNS 节点。

示例:
  • 墓碑化一个通配符记录。
    Disable-ADIDNSNode -Node *

Enable-ADIDNSNode

该函数可以将墓碑化的节点转回有效记录。

示例:
  • 启用一个通配符记录。
    Enable-ADIDNSNode -Node *

Get-ADIDNSNodeAttribute

该函数可以返回 DNS 节点属性中填充的值。

示例:
  • 获取名为 test 的节点的 dnsRecord 属性填充值。
    Get-ADIDNSNodeAttribute -Node test -Attribute dnsRecord

Get-ADIDNSNodeOwner

该函数可以返回 ADIDNS 节点的所有者。

示例:
  • 获取名为 test 的节点的所有者。 Get-ADIDNSNodeOwner -Node test

Get-ADIDNSPermission

该函数获取 ADIDNS 节点或区域的 DACL。

示例:
  • 从域附加系统获取默认 Active Directory 集成区域的 DACL。
    Get-ADIDNSPermission

  • 从域附加系统获取名为 test 的 DNS 节点的 DACL。
    Get-ADIDNSPermission -Node test

Get-ADIDNSZone

该函数可以返回 ADIDNS 区域。

示例:
  • 获取所有 ADIDNS 区域。
    Get-ADIDNSZone

Grant-ADIDNSPermission

该函数向 DNS 节点或区域 DACL 添加 ACE。

示例:
  • 为“Authenticated Users”添加对通配符记录的完全访问权限。
    Grant-ADIDNSPermission -Node * -Principal "authenticated users"

New-ADIDNSNode

该函数通过加密的 LDAP 添加请求向 Active Directory 集成 DNS (ADIDNS) 区域添加 DNS 节点。

示例:
  • 向 ADIDNS 区域添加通配符记录并墓碑化该节点。
    New-ADIDNSNode -Node * -Tombstone

New-DNSRecordArray

该函数为 dnsRecord 属性创建有效的字节数组。

示例:
  • 为指向 192.168.0.1 的 A 记录创建 dnsRecord 数组。
    New-DNSRecordArray -Data 192.168.0.1

New-SOASerialNumberArray

该函数获取 DNS 区域的当前 SOA 序列号并将其增加设定的数量。

示例:
  • 根据当前 SOA 序列号增加一后生成字节数组。
    New-SOASerialNumberArray

Rename-ADIDNSNode

该函数可以重命名 DNS 节点。

示例:
  • 将名为 test 的 DNS 节点重命名为 test2。
    Rename-ADIDNSNode -Node test -NodeNew test2

Remove-ADIDNSNode

该函数可以删除 DNS 节点。

示例:
  • 删除通配符节点。
    Remove-ADIDNSNode -Node *

Revoke-ADIDNSPermission

该函数移除 DNS 节点或区域 DACL 中的 ACE。

示例:
  • 移除与 user1 账户关联的 GenericAll ACE。
    Revoke-ADIDNSPermission -Node * -Principal user1 -Access GenericAll

Set-ADIDNSNodeAttribute

该函数可以追加、填充或覆盖 DNS 节点属性中的值。

示例:
  • 在名为 test 的节点上设置可写的 description 属性。
    Set-ADIDNSNodeAttribute -Node test -Attribute description -Value "do not delete"

Set-ADIDNSNodeOwner

该函数可以设置 DNS 节点的所有者。注意,需要具有 SeRestorePrivilege 的令牌。

示例:
  • 将名为 test 的节点的所有者设置为 user1。
    Set-ADIDNSNodeOwner -Node test -Principal user1

其他函数

Get-KerberosAESKey

该函数可以从已知的用户名和密码生成 Kerberos AES 256 和 128 密钥。可用于测试 Invoke-DNSUpdate 中的传递哈希。

示例:
  • 为有效的 AD 用户 [email protected] 生成密钥。
    Get-KerberosAESKey -Salt TEST.LOCALuser
下载工具