从错误0x80070522,谈强制完整性控制(MIC)。
在Windows 7碰到一个奇怪的问题,DE二个盘,NTFS的权限(属性--安全页)一模一样,没有任何区别,但在E盘根目录可以创建文件或文件夹,而在D盘根目录下报错:0x80070522,如果使用应用程序将文件保存到D盘根目录,则直接报拒绝访问。
先说解决办法,以管理员身份运行 CMD并执行以下命令:
icacls d:\ /setintegritylevel M
为了解决在之前Windows版本的因用户权限带来的安全问题,从Vista开始引入了UAC(User Account Control,用户帐户控制/接口权限隔离),即使使用Administrators的帐号也默认以普通用户权限运行,只有通过UAC提升特权后,才能真正使用管理员级别的特权限。
PS1:UAC也导致在User环境下,通过runas来运行Administrator的失败。Vista之后的权限提升只能通过UAC,杜绝了无人参与的权限提升可能。
PS2:UAC下普通用户使用管理员权限运行程序方法:ShellRunas.exe,如果本身管理员需使用其他管理员帐号特权运行程序,须先使用ShellRunas.exe运行CMD。
同时,为了解决在管理权限下与一般用户权限的应用程序共享同一个桌面环境的安全性威胁,对process(程序进程)与资源(具备 ACL,能够设权限)都实施了Mandatory Integrity Level (IL),确保低权限的处理程序不可以影响高权限的处理程序 (这个就需要 Mandatory Integrity Control 的支持)。
IL 总共有四级:
• Low (100):保护模式下的 IE
• Medium (200):一般正常的处理程序
• High (300):提升特权后的处理程序
• System (400):系统处理程序 (包含 Automatic Update)
在某一个处理程序尝试要修改某一个资源时,会在检查权限之前,先检查两者的 IL 等级,只有在处理程序的 IL 等级大于等于所要修改的资源的 IL 等级时,才会去检查资源的权限(如DACL、NTFS权限),否则就直接拒绝修改。
举个例子,进程只能访问小于等于它们完整性级别的文件。所以让我们设想,我在我的本地帐户(非管理员帐户)上运行了记事本。默认情况下,记事本拥有中完整性级别。只要我尝试写入一个有中等或更低完整性级别的文件,操作就会成功。然而,如果存在一个文件,他的完整性级别是高等,那么记事本的写入操作就会失败,因为记事本没有合适的完整性权限来访问和写入那个资源。
通过提升特权来执处理程序式IL等,通过icacls /setintegritylevel <L|M|H>来调整资源的 IL 等级。
D:\>echo a>a.txt D:\>icacls a.txt
a.txt BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
BUILTIN\Users:(I)(RX) 已成功处理 1 个文件; 处理 0 个文件时失败 D:\>icacls a.txt /setintegritylevel H
已处理的文件: a.txt
已成功处理 1 个文件; 处理 0 个文件时失败 D:\>icacls a.txt
a.txt BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
BUILTIN\Users:(I)(RX)
Mandatory Label\High Mandatory Level:(NW) 已成功处理 1 个文件; 处理 0 个文件时失败 D:\>icacls a.txt /setintegritylevel M
已处理的文件: a.txt
已成功处理 1 个文件; 处理 0 个文件时失败 D:\>icacls a.txt
a.txt BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
BUILTIN\Users:(I)(RX)
Mandatory Label\Medium Mandatory Level:(NW) 已成功处理 1 个文件; 处理 0 个文件时失败 D:\>
特别提醒的是,IL 的检查只会出现在针对资源的变动 (修改、删除、建立) 时才会进行,也就是如果只是读取资源,是不会检查 IL 的。
Internet Explorer 的 “保护模式” 事实上是使用了完整性级别来完成它的目标。因为 IE 保护模式运行于低完整性级别,而文件系统中所有文件(和运行的进程)默认拥有中完整性级别,那么试图写入这些文件或进程都会失败。
如果用户在保护模式执行下的 IE 中去使用网银,就无法存取Key了,这时候可以将该网站的网址加入「信任的网站」区域,这样以后浏览该网站时,就会另外开一个 IL=Medium 的 IE 来显示网站内容与执行网站上的客户端程序。
ICACLS HELP
ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
将匹配名称的文件和文件夹的 DACL 存储到 aclfile 中
以便将来与 /restore 一起使用。请注意,未保存 SACL、
所有者或完整性标签。 ICACLS directory [/substitute SidOld SidNew [...]] /restore aclfile
[/C] [/L] [/Q]
将存储的 DACL 应用于目录中的文件。 ICACLS name /setowner user [/T] [/C] [/L] [/Q]
更改所有匹配名称的所有者。该选项不会强制更改所有
身份;使用 takeown.exe 实用程序可实现
该目的。 ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]
查找包含显式提及 SID 的 ACL 的
所有匹配名称。 ICACLS name /verify [/T] [/C] [/L] [/Q]
查找其 ACL 不规范或长度与 ACE
计数不一致的所有文件。 ICACLS name /reset [/T] [/C] [/L] [/Q]
为所有匹配文件使用默认继承的 ACL 替换 ACL。 ICACLS name [/grant[:r] Sid:perm[...]]
[/deny Sid:perm [...]]
[/remove[:g|:d]] Sid[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel Level:policy[...]] /grant[:r] Sid:perm 授予指定的用户访问权限。如果使用 :r,
这些权限将替换以前授予的所有显式权限。
如果不使用 :r,这些权限将添加到以前授予的
所有显式权限。 /deny Sid:perm 显式拒绝指定的用户访问权限。
将为列出的权限添加显式拒绝 ACE,
并删除所有显式授予的权限中的相同权限。 /remove[:[g|d]] Sid 删除 ACL 中所有出现的 SID。使用
:g,将删除授予该 SID 的所有权限。使用
:d,将删除拒绝该 SID 的所有权限。 /setintegritylevel [(CI)(OI)]级别将完整性 ACE 显式
添加到所有匹配文件。要指定的级别为以下级别
之一:
L[ow]
M[edium]
H[igh]
完整性 ACE 的继承选项可以优先于级别,但只应用于
目录。 /inheritance:e|d|r
e - 启用继承
d - 禁用继承并复制 ACE
r - 删除所有继承的 ACE 注意:
Sid 可以采用数字格式或友好的名称格式。如果给定数字格式,
那么请在 SID 的开头添加一个 *。 /T 指示在以该名称指定的目录下的所有匹配文件/目录上
执行此操作。 /C 指示此操作将在所有文件错误上继续进行。
仍将显示错误消息。 /L 指示此操作在符号
链接本身而不是其目标上执行。 /Q 指示 icacls 应该禁止显示成功消息。 ICACLS 保留 ACE 项的规范顺序:
显式拒绝
显式授予
继承的拒绝
继承的授予 perm 是权限掩码,可以指定两种格式之一:
简单权限序列:
N - 无访问权限
F - 完全访问权限
M - 修改权限
RX - 读取和执行权限
R - 只读权限
W - 只写权限
D - 删除权限
在括号中以逗号分隔的特定权限列表:
DE - 删除
RC - 读取控制
WDAC - 写入 DAC
WO - 写入所有者
S - 同步
AS - 访问系统安全性
MA - 允许的最大值
GR - 一般性读取
GW - 一般性写入
GE - 一般性执行
GA - 全为一般性
RD - 读取数据/列出目录
WD - 写入数据/添加文件
AD - 附加数据/添加子目录
REA - 读取扩展属性
WEA - 写入扩展属性
X - 执行/遍历
DC - 删除子项
RA - 读取属性
WA - 写入属性
继承权限可以优先于每种格式,但只应用于
目录:
(OI) - 对象继承
(CI) - 容器继承
(IO) - 仅继承
(NP) - 不传播继承
(I) - 从父容器继承的权限 示例: icacls c:\windows\* /save AclFile /T
- 将 c:\windows 及其子目录下所有文件的
ACL 保存到 AclFile。 icacls c:\windows\ /restore AclFile
- 将还原 c:\windows 及其子目录下存在的 AclFile 内
所有文件的 ACL。 icacls file /grant Administrator:(D,WDAC)
- 将授予用户对文件删除和写入 DAC 的管理员
权限。 icacls file /grant *S-1-1-0:(D,WDAC)
- 将授予由 sid S-1-1-0 定义的用户对文件删除和
写入 DAC 的权限。
从错误0x80070522,谈强制完整性控制(MIC)。的更多相关文章
- Windows原理深入学习系列-强制完整性控制
欢迎关注微信公众号:[信安成长计划] 0x00 目录 0x01 介绍 0x02 完整性等级 0x03 文件读取测试 0x04 进程注入测试 0x05 原理分析 Win10_x64_20H2 0x06 ...
- 错误0x80070522:客户端没有所需的特权
win10或win7 C盘复制文件等遇到"错误0x80070522:客户端没有所需的特权" 在运行中输入 icacls c:\ /setintegritylevel M
- linux上静态库和动态库的编译和使用(附外部符号错误浅谈)
主要参考博客gcc创建和使用静态库和动态库 对于熟悉windows的同学,linux上的静态库.a相当于win的.lib,动态库.so相当于win的.dll. 首先简要地解释下这两种函数库的区别,参考 ...
- 从 A/Looper: Could not create epoll instance. errno=24 错误浅谈解决各种 bug 的思路
今天代码写着写着就莫名闪退了,手机也没有“程序停止运行”的提示,logcat也没有看到蓝色的调用栈log,这样的闪退最是蛋疼了,还好必现.复现几次之后,终于从logcat中看到了一行可疑的log: A ...
- 如何处理C++构造函数中的错误——兼谈不同语言的错误处理
用C++写代码的时候总是避免不了处理错误,一般来说有两种方式,通过函数的返回值或者抛出异常.C语言的错误处理一律是通过函数的返回值来判断的,一般是返回0.NULL或者-1表示错误,或者直接返回错误代码 ...
- 浅谈c#枚举
结构中的成员可以赋值,枚举呢....是取值,只读的 以下情况可以考虑将类创建为结构:(1)如果一个类其中的字段非常少,所有字段占用的内存总量不超过8.16字节:(2)如果一个类中的字段都是值类型: 关 ...
- shell浅谈之九子shell与进程处理
转自:http://blog.csdn.net/taiyang1987912/article/details/39529291 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] ...
- wampserver修改mysql密码后phpmyadmin登陆错误处理方法
首先针对wampserver这个软件来说,是很方面的! 在进行使用时都会涉及到关于mysql数据管理系统的相关密码的修改,这个当然修改是很简单,当时没有想那么多,想为自己的mysql添加一个密码,方式 ...
- 0x80070522:客户端没有所需的特权的解决方法(win7,win10通过)
往C盘上粘贴文件的时候提示错误0x80070522:客户端没有所需的特权,解决方法如下: 一般情况下,我们思考的方向肯定是往用户权限方向的,但增加的用户是最高权限的管理员还是不可以.. 暂时还没有 ...
随机推荐
- Linux大文件分割splite
/********************************************************************** * Linux大文件分割splite * 说明: * 编 ...
- [LeetCode&Python] Problem 350. Intersection of Two Arrays II
Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1 ...
- [LeetCode&Python] Problem 771: Jewels and Stones
You're given strings J representing the types of stones that are jewels, and S representing the ston ...
- quartz定时任务及时间设置
quartz 定时任务时间设置1.这些星号由左到右按顺序代表 : * * * * * * * ...
- linux 执行脚本
crontab -e 直接编辑定时脚本 保存后,在/var/spool/cron/下自动生成一个以用户名命名的脚本文件.
- C语言-第一周作业
要求1: 请在你的PC或者移动设备上安装词典,该词典工具能对计算机术语进行翻译.需要在你的博客中给出安装软件的截图,请确保阅读者能从截图判断出你的被安装的设备是PC或者移动设备.(5经验值) 要求2: ...
- sparkStreaming获取kafka数据(java版本)
环境 spark-2.2.0 kafka_2.11-0.10.0.1 jdk1.8 配置好jdk,创建项目并将kafka和spark的jar包添加到项目中,除此之外还需要添加spark-streami ...
- 实验吧—安全杂项——WP之 女神
点击链接下载压缩文件解压后得到 打开TXT文档: 能看出是base64,这么长,那就是转成图片喽~ 地址:http://www.vgot.net/test/image2base64.php? 然后就是 ...
- 调试 shell script 方法
wade@V1088:~$ cat b.sh#!/bin/bash dir=`pwd` dir=$dir'/' for f in `ls *.png` do echo $dir$f done 看每一行 ...
- 【HAOI2012】外星人
又犯sb错了QAQ 原题: 艾莉欧在她的被子上发现了一个数字 ,她觉得只要找出最小的x使得,.根据这个 她就能找到曾经绑架她的外星人的线索了.当然,她是不会去算,请你帮助她算出最小的x. test&l ...