跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

域渗透——DNS记录和机器帐户


RenX6

推荐的帖子

0x00 前言

之前的文章《域渗透——DNS记录的获取》和《域渗透——普通用户权限获得DNS记录》介绍了在域环境下获取DNS记录的方法,有助于我们快速了解域内的网络架构。

但DNS记录只能作为辅助判断,DNS记录、DNS记录中对应的MachineAccount和实际电脑之间没有对应关系。

域中的非特权用户可以自由创建DNS记录和机器帐户。

本文将介绍域内无权限用户创建DNS记录和MachineAccount的方法,并记录需要掌握的知识点。

0x01 简介

本文将介绍以下内容:

机器帐户简介

非特权用户创建机器帐户的方法

非特权用户创建DNS记录的方法

0x02 MachineAccount简介

1.MachineAccount

每次电脑加入域时,都会创建一个MachineAccount作为“域电脑”组的成员。

在域环境中,您可以通过以下命令获得所有计算机帐户的列表:

网络组“域计算机”/域

每个计算机帐户名都以字符$结尾

注:

当使用Mimikatz的DCSync函数导出所有用户哈希时,所有机器帐户的哈希也将被导出。

如果得到机器账号的hash,就可以用它来制作银票,进而获得相应服务的访问权限。请参考之前的文章《域渗透——Pass The Ticket》。

2.MachineAccountQuota

用于表示允许用户在域中创建的计算机帐户的数量。默认值为10。

描述文档:

https://docs . Microsoft . com/en-us/windows/win32/ad schema/a-ms-ds-machine account quota

有关machineaccountoquota(MAQ)的介绍,请参考以下资源:

https://blog . netspi . com/machineaccountoquota-有用-有时/

这里只对参考资料中提到的10条规则进行简单总结,补充个人理解。其特点如下:

(1)允许非特权用户通过MAQ创建计算机帐户。默认数量为10,但不能删除创建的计算机帐户。

禁用MAQ的方法可以在以下位置找到:https://social . TechNet . Microsoft . com/wiki/Contents/Articles/5446 . active-directory-how-to-prevent-authenticated-users-from-join-workstations-to-a-domain . aspx

(2)创建者帐户的SID存储在计算机帐户的ms-DS-CreatorSID属性中

也就是说,对于MAQ创建的计算机帐户,可以通过查看ms-DS-CreatorSID属性找到创建者帐户的SID。

(3)通过MAQ创建的计算机帐户将被放入“域计算机”组。

(4)MAQ创建的计算机帐户可以修改以下属性:

帐户已禁用

描述

显示名称

DnsHostName

ServicePrincipalName

用户参数

用户帐户控制

msDS-additionalnshostname

msDS-allowedtoactonbehalofotheridentity

samAccountName

AccountDisabled属性可用于禁用用户。

userAccountControl属性记录用户的属性信息。详情请参考https://support . Microsoft . com/en-us/help/305144/how-to-use-user account control-to-manipulate-user-account-properties。

(5)添加计算机帐户将创建以下4个SPN:

主机/机器帐户名称

主机/机器帐户名称.域名.名称

restricted krbhost/machine account name

restricted krbhost/machine account name . domain . name

(6)机器帐户没有本地登录权限。

但是你可以通过“runas /netonly”执行命令

0x03 非特权用户创建MachineAccount的方法

1.Powershell实现

需要使用Powermad。

通过MAQ创建计算机帐户testNew的命令如下:

new-machine account-machine account test new-Password $(convert to-secure string ' 123456789 '-AsPlainText-Force)

要查看计算机帐户testNew的完整属性:

get-ad计算机测试新属性*

包括以下属性:

AccountExpirationDate

帐户过期

AccountLockoutTime

AccountNotDelegated

AllowReversiblePasswordEncryption

身份验证策略

认证策略筒仓

BadLogonCount

badPasswordTime

badPwdCount

无法更改密码

标准名称

证书

通信网络(Communicating Net的缩写)

代码页

支持的复合标识

国家代码

创造

创建时间戳

删除

描述

显示名称

DistinguishedName

DNSHostName

DoesNotRequirePreAuth

dSCorePropagationData

使能够

需要home dir

主页

实例类型

IPv6地址

IPv6地址

isCriticalSystemObject

已删除

KerberosEncryptionType

LastBadPasswordAttempt

LastKnownParent

上次注销

上次登录

LastLogonDate

localPolicyFlags

位置

LockedOut

登录计数

管理者

成员

MNSLogonAccount

修改

修改时间戳

mS-DS-CreatorSID

msDS-用户-帐户-控制-计算

名字

nTSecurityDescriptor

对象类别

对象类

ObjectGUID

objectSid

操作系统

操作系统修复程序

OperatingSystemServicePack

OperatingSystemVersion

密码过期

PasswordLastSet

密码永不过期

密码不是必需的

初级组

primaryGroupID

principalsalloweddotegatetoaccount

ProtectedFromAccidentalDeletion

pwdLastSet

SamAccountName

sAMAccountType

sdrightseeeffective

服务帐户

servicePrincipalName

ServicePrincipalNames

(同突发球形扰动)电离层的突然骚扰

SIDHistory

可信授权

TrustedToAuthForDelegation

仅使用密钥

用户帐户控制

用户证书

用户原则名称

uSNChanged

美元已创建

何时更改

创建时间

注:

获取广告计算机命令需要用到ActiveDirectory模块,域控制器一般会安装

对于未安装活动目录模块的系统,可以通过如下命令导入活动目录模块:

导入模块。\微软ActiveDirectory。Management.dll

微软ActiveDirectory。Management.dll在安装powershell模块活动目录后生成,我已经提取出来并上传至github:

https://github.com/3gstudent/test/blob/master/Microsoft.ActiveDirectory.Management.dll

权力狂也支持查看计算机帐户的属性,但需要指定具体要查看的属性

例如查看servicePrincipalName属性的命令如下:

get-计算机帐户属性-计算机帐户测试新属性servicePrincipalName

注:

权力狂的Get-MachineAccountCreator命令能够枚举所有计算机帐户(机器帐户)的创建者

修改计算机帐户的属性可使用权力狂的Set-MachineAccountAttribute命令,支持修改的属性如下:

帐户已禁用

描述

显示名称

DnsHostName

ServicePrincipalName

用户参数

用户帐户控制

msDS-附加主机名

msDS-allowedtoactonbehalofotheridentity

SamAccountName

实例如下:

set-机器帐户属性-机器名称测试new-属性Sam帐户名-值测试

2.C#实现

SharpAllowedToAct包含了这个功能

我将其中创建机器帐户的功能提取出来,简单修改后使其支持csc.exe或可视化工作室编译

完整代码已上传至github,地址如下:

https://github。com/3g student/home-of-C-Sharp/blob/master/addmachineaccountofdomain。铯

可以使用可视化工作室创建C#工程编译AddMachineAccountofDomain.cs生成可执行程序的扩展名文件,也可以将AddMachineAccountofDomain.cs上传至测试环境,使用csc.exe进行编译

使用csc.exe进行编译的环境支持。Net3.5或更高版本

编译命令如下:

C:\Windows\Microsoft .NET \ framework 64 \ v 3.5 \ CSC。请执行addmachineaccountofdomain。cs/r:系统.DirectoryServices.dll,System .目录服务。Protocols.dll

或者

C:\Windows\Microsoft .NET \ framework 64 \ v 4。0 .30319 \ CSC。请执行addmachineaccountofdomain。cs/r:系统.DirectoryServices.dll,System .目录服务。Protocols.dll

0x04 非特权用户创建DNS记录的方法

这里可以使用权力狂中的Invoke-DNSUpdate.ps1

Invoke-DNSUpdate命令支持添加以下记录:

A

AAAA

CNAME

麦克斯韦(maxwell磁通量单位)中性(米德尔塞克斯)

中石油

宇宙飞船航天营救飞行器

文本文件(文本文件)

添加机器帐户测试新的A记录,命令如下:

invoke-DNSUpdate-DNS type A-DNS name test new-DNSData 192。168 .1 .111

删除此记录的命令如下:

invoke-DNS更新-DNS类型A-DNS名称测试新

非特权用户无法修改或删除已有的记录

更多细节可参考资料:

https://blog.netspi.com/exploiting-adidns/

0x05 小结

本文介绍了域内非特权用户创建域名服务器(域名服务器)记录与机器帐户的方法,证明了域名服务器(域名服务器)记录只能作为辅助判断域内网络架构的方法

从防御的角度来说,如果攻击者在域中只拥有非特权用户的特权,如果他试图通过MAQ创建一个计算机帐户,他无法清理攻击的痕迹(通过MAQ创建的计算机帐户无法删除),通过检查计算机帐户的创建者可以找到攻击者控制的用户。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...