【M01N】资源约束委派和NTLM Relaying的组合拳接管域内任意主机系统权限

【声明:本文所述相关技术仅限研究和学习使用,请遵守国家网络安全法律法规,勿用于入侵等非法用途,使用本文相关技术造成的法律问题与本公司无关。】

本文通过展示使用IPv6攻击和WPAD的具体利用,介绍资源约束委派与NTLM  Relaying的结合使用进行域内攻击的最新红队攻击方法,旨在与安全研究员进行技术交流,同时提醒安全工作人员注意防范内网新型组合攻击。

前言

绿盟科技M01N Red Team近期发布的《利用资源约束委派进行的提权攻击分析》,介绍了国外安全研究员Elad Shamir关于委派协议的最新研究成果—利用基于资源的约束委派的方式攻击活动目录,文章详细介绍委派攻击方式以及原理,以及利用此技术对域内主机的本地权限提升等利用效果。

 

3月4日研究员Dirk-jan Mollema发表他的新见解-The worst of both worlds: Combining NTLM Relaying and Kerberos delegation,基于上述委派攻击,结合自己对NTLM的研究进一步实现对同一网段配置了LDAPS服务的Windows活动目录内的任意域成员主机的攻击,在不需要任何密码等凭证的情况下即可获得域内任意主机SYSTEM权限。绿盟科技M01N Red Team分析了该攻击方式并复现了攻击过程。

 

NTLM Relaying前奏:IPv6

 

在常见的NTLM中继攻击中,首先需要欺骗受害者访问攻击者机器并进行认证。本文介绍的便是通过IPv6接管DNS服务器,然后通过WPAD使受害者根据DNS解析出来的地址访问攻击者机器,并在获得访问后,向其发起NTLM认证请求。

 

IPv6

在Windows Vista及以上系统都支持IPv6而且较IPv4更倾向于使用IPv6协议,这些系统都会定期向DHCPv6服务器发送获取IPv6配置的请求。根据DHCPv6RFC文档定义的客户端与服务端四步交换过程IPv6 Cheat Sheet

DHCPv6协议中,客户端通过向组播地址发送Solicit报文来定位DHCPv6服务器,组播地址[ff02::1:2]包括整个地址链路范围内的所有DHCPv6服务器和中继代理。DHCPv6四步交互过程,客户端向[ff02::1:2]组播地址发送一个Solicit请求报文,DHCP服务器或中继代理回应Advertise消息告知客户端。客户端选择优先级最高的服务器并发送Request信息请求分配地址或其他配置信息,最后服务器回复包含确认地址,委托前缀和配置(如可用的DNS或NTP服务器)的Relay消息。

 

在交换过程中,如果攻击者在链路中监听并以高优先级(IPv6)回复这些Solicit请求报文,将诱使这些发送请求报文的主机设置攻击者主机为DHCPv6服务器,并使用攻击者主机分配的IPv6的地址。

在最后一步的Request消息中,攻击者将自己设置为DNS服务器。此后,攻击者机器将被受害者机器视为IPv4/6 DNS服务器,发送IPv4和IPv6请求:

WPAD

当系统配置好DNS服务器后,会开始请求该网络的WPAD配置。

 

WPAD (Windows Proxy Auto Detection)全称为网络代理自动发现协议, 用于检测连接互联网的网络代理。它根据DHCP和DNS网络协议,发现PAC(Proxy Auto-Configuration)文件的URL,客户端到该URL下载PAC文件(用于生成代理服务器域名及其URL列表的可执行脚本文件)缓存在本地计算机上等待网络请求连接执行脚本代码。由于历史原因,PAC文件经常被称作proxy.pac,在DNS lookup中,此配置文件为wpad.dat,且WPAD DNS查询会忽略proxy.pac的文件名。

 

在以往的WPAD功能中,提供wpad.dat文件的服务器地址一般会由DNS解析,如果没有记录返回,则会使用无加密的广播协议(如LLMNR)来解析。如果攻击者回复这些广播,WPAD文件位于攻击者机器上,并向用户发起认证(认证默认由Windows提供,不需要用户交互)以访问此文件,便会暴露用户的NTLM凭证信息,用于NTML中继攻击。

 

微软在2016年发布了安全补丁ms16-077为WPAD修复了上述问题:下载PAC文件的行为发生了改变,客户端不再自动进行NTLM认证或协商认证(即使是服务器端发起的认证);默认WPAD解析将不使用NetBIOS,而是DHCP或者DNS;计算机不再回复位于其他子网的IP发出的NetBIOS名称解析请求。

 

然而,如果攻击者使用 IPv6攻击,DNS请求将被发送给攻击者机器,只需要回复自己的IP给受害者即可。尽管请求WPAD文件不再自动进行认证,攻击者也可利用WPAD配置文件将自己设置为代理服务器,而在Edge,Internet Explorer,Firefox和Chrome等浏览器上都会默认使用WPAD系统配置,并自动与与代理服务器进行认证。

当受害者连接到攻击者代理服务器时,攻击者便能回复代理认证的请求,IE等浏览器自动与代理服务器进行认证,攻击者即可实现NTLM中继攻击。

 

攻击实现

根据利用基于资源的约束委派进行攻击的相关原理,我们知道如果在目标计算机上创建一个新的计算机账号B,并为本地计算机账号A设置基于资源的约束委派给新建账号B,使得B可以模拟用户访问A的资源,便能通过S4U攻击(首先使用S4U2Self获取任意用户到新建计算机账号B的服务票据,再使用S4U2Proxy获取该用户到目标计算机A的服务票据),使用该计算机账号为域内任意用户请求访问该计算机任意服务的TGS服务票据,从而获得该计算机的SYSTEM权限。附上Elad Shamir文章中的介绍图:

DACL Abuse

前文中已经通过IPv6攻击和WPAD利用实现了目标计算机与攻击者机器进行NTLM认证,如果能够将NTLM认证中继到域控制器的LDAP服务上,便能创建计算机账号并修改账号属性配置基于资源的约束委派。Dirk-jan Mollema更新了impacket,为ntlmrelayx脚本添加了add_computer和delegate_access选项,使得我们可以使用mitm6和该脚本完成对目标计算的上述操作:

 

使用mitm6选择目标计算机并回复DHCPv6请求,为其分配地址,回复WPAD配置文件地址

设置目标LDAP服务器(需要使用ldaps而不是ldap,后文会提及)地址并创建WPAD配置文件,使用“–delegate-access”为目标创建计算机账号并配置基于资源的约束委派:

 

当目标计算机重启或重新进行网络配置(如重新插入网线)时, 将会向DHCPv6发送请求获取IPv6配置,我们已经使用mitm6接管DNS,此时目标计算机便会访问kali获取WPAD配置文件,并将kali设置为为代理服务器 。然后当目标计算机通过kali代理服务器访问网络时,kali将会向目标计算机发送代理的认证请求,并中继NTLM认证到LDAP服务器上,完成相关操作。

Requesting WPAD Config

 

Proxy Authentication Required

 

上图中已经完成了计算机账号的创建,并为其设置了基于资源的约束委派。接下来,便可通过impacket中的getST脚本,使用新创建的计算机账号为域管理员(或具有本地管理员权限的域用户)请求访问到该计算机的CIFS服务票据:

利用secretdump导出在该计算机的哈希值:

值得注意的是,在攻击过程中,攻击者中继NTLM认证到域控制器的LDAP服务时使用的是LDAPS(LDAP over SSL/TLS)而不是默认的LDAP,因为域控会拒绝在不安全的连接中创建账号的请求。微软给出了一些使用LDAPS的场景

LDAP over TLS

 

如上图所示,使用开启SSL/TLS的LDAP客户端会使用公钥加密算法去检查服务器的证书和公共ID是否有效,发布该证书的证书机构(CA)是否在客户端保存的信任CA列表中。此处因为使用的是活动目录集成的LDAP(Active-Directory integrated LDAP),服务器使用的是自签名的根证书。

 

所以使用的地址是ldaps://dc.m01n.lab,而建立SSL/TLS连接需要在域控制器上添加证书服务并安装证书。若域控制器并没有开启LDAPS,将会重置TCP会话,向客户端发送含有RST标志的数据包,使用ntlmrelayx脚本将会得到LDAPSocketOpenError的错误。

在ADDS事件中也可观察到错误警告:

因此,在没有配置LDAPS的域环境(默认LDAPS是被禁用的)中,攻击者无法通过LDAP创建新的计算机账号,便无法进行委派的配置,使得攻击链失效。

 

影响范围

此攻击方式需要同时满足以下2个条件:

  1. 域控制器的操作系统为Windows Server 2012或更高版本。
  2. 域控制器启用了LDAPS。

 

缓解方法

mitm6

如果不使用IPv6,最安全的方式是通过组策略在防火墙中屏蔽所有DHCPv6流量和传入的路由通告(incoming router advertisements):

  • (Inbound) Core Networking – Dynamic Host Configuration Protocol for IPv6(DHCPV6-In)
  • (Inbound) Core Networking – Router Advertisement (ICMPv6-In)
  • (Outbound) Core Networking – Dynamic Host Configuration Protocol for IPv6(DHCPV6-Out)

 

Fox-IT研究团队给出了检测伪造的DHCPv6流量和通过IPv6的WPAD回复的 Snort和Suricata签名

 

WPAD

如果不需要使用WPAD,通过组策略禁用它并禁用WinHTTPAutoProxySvc服务。

LDAP

启用LDAP签名LDAP channel binding

此外,本文中提到的LDAPS,也可作为缓解该攻击的因素之一,如不需要使用LDAPS和其他一些使用证书的相关服务,可以删除活动目录证书服务。

 

基于资源的约束委派

将高权限管理员账户设置为敏感账户,不能被委派或将他们加入“Protected Users”组。

增加ACE防止计算机账号自己修改msDS-AllowedToActOnBehalfOfOtherIdentity属性。如果不使用该委派方式,可以禁止所有人修改该属性。

 

ms-DS-MachineAccountQuota

在Windows默认策略中,所有经过身份验证的用户都可以将10台工作组主机加入活动目录中,或在活动目录内创建10个计算机账号(此特性与ms-DS-MachineAccountQuota属性有关,默认配置下该属性值为10)。

将此属性更改为0,则普通用户(包括计算机账户)无法添加新的计算机账号到活动目录中,从而缓解了基于资源的约束委派攻击。

 

参考资料

https://dirkjanm.io/worst-of-both-worlds-ntlm-relaying-and-kerberos-delegation/

https://blog.fox-it.com/2018/01/11/mitm6-compromising-ipv4-networks-via-ipv6/

https://tools.ietf.org/html/rfc8415#section-5.2

https://en.wikipedia.org/wiki/DHCPv6

https://library.netapp.com/ecmdocs/ECMP1610207/html/GUID-0E97E7F2-D46D-4883-B95B-A066B0D52B3D.html

https://support.microsoft.com/en-us/help/2000061/ldap-and-kerberos-server-may-reset-tcp-sessions-immediately-after-crea

https://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx

 

关于M01N Team

绿盟科技M01N红队安全研究团队专注于Red Team、APT等高级攻击技术、战术及威胁研究,涉及WEB安全、终端安全、AD安全、云安全等相关领域。通过研判现网攻击技术发展方向,以攻促防,为风险识别及威胁对抗提供决策支撑,全面提升安全防护能力。

 

 

Spread the word. Share this post!

Meet The Author

Leave Comment